5
5
pull_request :
6
6
push :
7
7
branches :
8
- - main
8
+ - public-v4
9
9
schedule :
10
10
# Nightly build against Dafny's nightly prereleases,
11
11
# for early warning of verification issues or regressions.
22
22
AWS_ENCRYPTION_SDK_EXAMPLE_KMS_MRK_KEY_ID_2 : arn:aws:kms:eu-west-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7
23
23
AWS_ENCRYPTION_SDK_EXAMPLE_LIMITED_ROLE_ARN_US_EAST_1 : arn:aws:iam::370957321024:role/GitHub-CI-ESDK-Dafny-Role-us-west-2
24
24
AWS_ENCRYPTION_SDK_EXAMPLE_LIMITED_ROLE_ARN_EU_WEST_1 : arn:aws:iam::370957321024:role/GitHub-CI-ESDK-Dafny-Role-us-west-2
25
+ # Used for Test Vectors
26
+ VECTORS_URL : https://github.com/awslabs/aws-encryption-sdk-test-vectors/raw/master/vectors/awses-decrypt/python-2.3.0.zip
25
27
26
28
jobs :
27
29
testDotNet :
28
30
# Don't run the nightly build on forks
29
31
if : github.event_name != 'schedule' || github.repository_owner == 'aws'
30
32
strategy :
31
33
matrix :
32
- library : [
33
- AwsEncryptionSDK
34
- ]
35
- dotnet-version : [ '6.0.x' ]
36
- frameworks : [net6.0, net48]
37
34
os : [
38
35
windows-latest,
39
36
ubuntu-latest,
@@ -57,18 +54,18 @@ jobs:
57
54
run : |
58
55
git submodule update --init libraries
59
56
git submodule update --init --recursive mpl
60
-
57
+
61
58
- name : Configure AWS Credentials
62
- uses : aws-actions/configure-aws-credentials@v1
59
+ uses : aws-actions/configure-aws-credentials@v2
63
60
with :
64
61
aws-region : us-west-2
65
- role-to-assume : arn:aws:iam::370957321024:role/GitHub-CI-Public- ESDK-Dafny-Role-us-west-2
62
+ role-to-assume : arn:aws:iam::370957321024:role/GitHub-CI-ESDK-Dafny-Role-us-west-2
66
63
role-session-name : NetTests
67
-
68
- - name : Setup .NET Core SDK ${{ matrix.dotnet-version }}
64
+
65
+ - name : Setup .NET Core SDK 6
69
66
uses : actions/setup-dotnet@v3
70
67
with :
71
- dotnet-version : ${{ matrix.dotnet-version }}
68
+ dotnet-version : ' 6.0.x '
72
69
73
70
- name : Setup Dafny
74
71
uses :
dafny-lang/[email protected]
@@ -77,53 +74,208 @@ jobs:
77
74
dafny-version : ${{ (github.event_name == 'schedule' || inputs.nightly) && 'nightly-latest' || '4.2.0' }}
78
75
79
76
- name : Download Dependencies
80
- working-directory : ./${{ matrix.library }}
77
+ working-directory : ./AwsEncryptionSDK
81
78
run : make setup_net
82
79
83
- - name : Compile ${{ matrix.library }} implementation
80
+ - name : Compile AwsEncryptionSDK implementation
84
81
shell : bash
85
- working-directory : ./${{ matrix.library }}
82
+ working-directory : ./AwsEncryptionSDK
86
83
run : |
87
84
# This works because `node` is installed by default on GHA runners
88
85
CORES=$(node -e 'console.log(os.cpus().length)')
89
86
make transpile_net CORES=$CORES
90
87
91
- - name : Test ${{ matrix.library }} .NET Framework net48
92
- working-directory : ./${{ matrix.library }}
88
+ - name : Test .NET Framework net48
89
+ working-directory : ./AwsEncryptionSDK
90
+ shell : bash
91
+ run : |
92
+ make test_net FRAMEWORK=net48
93
+
94
+ - name : Test .NET net6.0
95
+ working-directory : ./AwsEncryptionSDK
96
+ shell : bash
97
+ run : |
98
+ if [ "$RUNNER_OS" == "macOS" ]; then
99
+ make test_net_mac_intel FRAMEWORK=net6.0
100
+ else
101
+ make test_net FRAMEWORK=net6.0
102
+ fi
103
+
104
+ - name : Test Examples on .NET Framework net48
105
+ working-directory : ./AwsEncryptionSDK
106
+ shell : bash
107
+ run : |
108
+ dotnet test \
109
+ runtimes/net/Examples \
110
+ --framework net48
111
+
112
+ - name : Test Examples on .NET net6.0
113
+ working-directory : ./AwsEncryptionSDK
93
114
shell : bash
94
115
run : |
95
116
if [ "$RUNNER_OS" == "macOS" ]; then
96
- DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib"
97
- dotnet run \
98
- --project runtimes/net/tests/ \
99
- --framework net48
100
- else
101
- dotnet run \
102
- --project runtimes/net/tests/ \
103
- --framework net48
104
- fi
117
+ DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib"
118
+ dotnet test \
119
+ runtimes/net/Examples \
120
+ --framework net6.0
121
+ else
122
+ dotnet test \
123
+ runtimes/net/Examples \
124
+ --framework net6.0
125
+ fi
126
+
127
+ - name : Fetch awses-decrypt/python-2.3.0.zip
128
+ working-directory : ./
129
+ shell : bash
130
+ run : |
131
+ PYTHON_23_VECTOR_PATH=$GITHUB_WORKSPACE/python23/vectors
132
+ mkdir -p $PYTHON_23_VECTOR_PATH
133
+ DOWNLOAD_NAME=python23.zip
134
+ curl --no-progress-meter --output $DOWNLOAD_NAME --location $VECTORS_URL
135
+ unzip -o -qq $DOWNLOAD_NAME -d $PYTHON_23_VECTOR_PATH
136
+ rm $DOWNLOAD_NAME
105
137
106
- - name : Test ${{ matrix.library }}
107
- working-directory : ./${{ matrix.library }}
138
+ - name : Run Test Vectors on .NET Framework net48
139
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
108
140
shell : bash
109
141
run : |
142
+ PYTHON_23_VECTOR_PATH=$GITHUB_WORKSPACE/python23/vectors
143
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$PYTHON_23_VECTOR_PATH/manifest.json" \
144
+ dotnet test --framework net48
145
+
146
+ - name : Run Decrypt Test Vectors on .NET net6.0
147
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
148
+ shell : bash
149
+ run : |
150
+ PYTHON_23_VECTOR_PATH=$GITHUB_WORKSPACE/python23/vectors
110
151
if [ "$RUNNER_OS" == "macOS" ]; then
111
- make test_net_mac_intel
152
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$PYTHON_23_VECTOR_PATH/manifest.json" \
153
+ DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
154
+ dotnet test --framework net6.0
112
155
else
113
- make test_net
156
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$PYTHON_23_VECTOR_PATH/manifest.json" \
157
+ dotnet test --framework net6.0
114
158
fi
115
159
116
- - name : Test Examples on ${{ matrix.frameworks }}
160
+ - name : Generate Test Vectors with .NET Framework net6.0
161
+ # TODO Post-#619: Fix Zip file creation on Windows
162
+ if : matrix.os != 'windows-latest'
163
+ working-directory : ./AwsEncryptionSDK
164
+ shell : bash
165
+ run : |
166
+ NET_41_VECTOR_PATH=$GITHUB_WORKSPACE/net41/vectors
167
+ mkdir -p $NET_41_VECTOR_PATH
168
+ GEN_PATH=runtimes/net/TestVectorsNative/TestVectorGenerator
169
+ dotnet run --project $GEN_PATH --framework net6.0 -- \
170
+ --encrypt-manifest $GEN_PATH/resources/0006-awses-message-decryption-generation.v2.json \
171
+ --output-dir $NET_41_VECTOR_PATH
172
+
173
+ # TODO: Fix Zip file creation on Windows
174
+ # - name: Zip the Generated Test Vectors for ESDK-JS on Windows
175
+ # if: matrix.os == 'windows-latest'
176
+ # shell: pwsh
177
+ # run: |
178
+ # # NET_41_VECTOR_PATH=$GITHUB_WORKSPACE/net41/vectors
179
+ # Set-Location -Path "$env:GITHUB_WORKSPACE\net41\vectors"
180
+ # Compress-Archive -Path "$env:GITHUB_WORKSPACE\net41\vectors\*" -DestinationPath "$env:GITHUB_WORKSPACE\net41\vectors\net41.zip"
181
+
182
+ - name : Zip the Generated Test Vectors for ESDK-JS on Mac/Linux
183
+ if : matrix.os != 'windows-latest'
184
+ shell : bash
185
+ run : |
186
+ NET_41_VECTOR_PATH=$GITHUB_WORKSPACE/net41/vectors
187
+ cd $NET_41_VECTOR_PATH
188
+ zip -qq net41.zip -r .
189
+
190
+ - name : Decrypt Generated Test Vectors with ESDK-JS
191
+ # TODO Post-#619: Fix Zip file creation on Windows
192
+ if : matrix.os != 'windows-latest'
193
+ shell : bash
194
+ run : |
195
+ NET_41_VECTOR_PATH=$GITHUB_WORKSPACE/net41/vectors
196
+ cd $NET_41_VECTOR_PATH
197
+ npx -y @aws-crypto/integration-node decrypt -v $NET_41_VECTOR_PATH/net41.zip -c cpu
198
+
199
+ - name : Unzip ESDK-NET @ v4.0.0 Valid Vectors
200
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors/resources
201
+ shell : bash
202
+ run : |
203
+ NET_400_VALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Valid/vectors
204
+ mkdir -p $NET_400_VALID_VECTORS
205
+ DOWNLOAD_NAME=valid-Net-4.0.0.zip
206
+ unzip -o -qq $DOWNLOAD_NAME -d $NET_400_VALID_VECTORS
207
+
208
+ - name : Run ESDK-NET @ v4.0.0 Valid Vectors expect success
209
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
210
+ continue-on-error : true
211
+ shell : bash
212
+ run : |
213
+ NET_400_VALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Valid/vectors
214
+ ESDK_NET_V400_POLICY="forbid" \
215
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_VALID_VECTORS/manifest.json" \
216
+ dotnet test --framework net48
217
+ ESDK_NET_V400_POLICY="forbid" \
218
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_VALID_VECTORS/manifest.json" \
219
+ dotnet test --framework net6.0 --logger "console;verbosity=quiet"
220
+
221
+ - name : Unzip ESDK-NET @ v4.0.0 Invalid Vectors
222
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors/resources
117
223
shell : bash
118
- working-directory : ./${{ matrix.library }}
119
224
run : |
225
+ NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
226
+ mkdir -p $NET_400_INVALID_VECTORS
227
+ DOWNLOAD_NAME=invalid-Net-4.0.0.zip
228
+ unzip -o -qq $DOWNLOAD_NAME -d $NET_400_INVALID_VECTORS
229
+
230
+ - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET 48 expect failure
231
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
232
+ continue-on-error : true
233
+ shell : bash
234
+ run : |
235
+ NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
236
+ ESDK_NET_V400_POLICY="forbid" \
237
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
238
+ dotnet test --framework net48
239
+ # Dotnet test returns 1 for failure.
240
+ TEMP=$?; if [[ "$TEMP" -eq 1 ]]; then true; else false; fi;
241
+ # We want this to fail, so if it returned 1, step passes, else it fails
242
+ # TODO Post-#619: Refactor Test Vectors to expect failure,
243
+ # as I doubt this true false logic works
244
+
245
+ - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET 6.0 expect failure
246
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
247
+ continue-on-error : true
248
+ shell : bash
249
+ run : |
250
+ NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
120
251
if [ "$RUNNER_OS" == "macOS" ]; then
121
- DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib"
122
- dotnet test \
123
- runtimes/net/Examples \
124
- --framework ${{ matrix.frameworks }}
125
- else
126
- dotnet test \
127
- runtimes/net/Examples \
128
- --framework ${{ matrix.frameworks }}
129
- fi
252
+ ESDK_NET_V400_POLICY="forbid" \
253
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
254
+ DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
255
+ dotnet test --framework net6.0
256
+ else
257
+ ESDK_NET_V400_POLICY="forbid" \
258
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
259
+ dotnet test --framework net6.0
260
+ fi
261
+ # Dotnet test returns 1 for failure.
262
+ TEMP=$?; if [[ "$TEMP" -eq 1 ]]; then true; else false; fi;
263
+ # We want this to fail, so if it returned 1, step passes, else it fails
264
+ # TODO Post-#619: Refactor Test Vectors to expect failure,
265
+ # as I doubt this true false logic works
266
+
267
+ - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET expect Success
268
+ working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
269
+ shell : bash
270
+ run : |
271
+ NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
272
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
273
+ dotnet test --framework net48 --logger "console;verbosity=quiet"
274
+ if [ "$RUNNER_OS" == "macOS" ]; then
275
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
276
+ DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
277
+ dotnet test --framework net6.0 --logger "console;verbosity=quiet"
278
+ else
279
+ DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
280
+ dotnet test --framework net6.0 --logger "console;verbosity=quiet"
281
+ fi
0 commit comments