55 pull_request :
66 push :
77 branches :
8- - main
8+ - public-v4
99 schedule :
1010 # Nightly build against Dafny's nightly prereleases,
1111 # for early warning of verification issues or regressions.
2222 AWS_ENCRYPTION_SDK_EXAMPLE_KMS_MRK_KEY_ID_2 : arn:aws:kms:eu-west-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7
2323 AWS_ENCRYPTION_SDK_EXAMPLE_LIMITED_ROLE_ARN_US_EAST_1 : arn:aws:iam::370957321024:role/GitHub-CI-ESDK-Dafny-Role-us-west-2
2424 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
2527
2628jobs :
2729 testDotNet :
2830 # Don't run the nightly build on forks
2931 if : github.event_name != 'schedule' || github.repository_owner == 'aws'
3032 strategy :
3133 matrix :
32- library : [
33- AwsEncryptionSDK
34- ]
35- dotnet-version : [ '6.0.x' ]
36- frameworks : [net6.0, net48]
3734 os : [
3835 windows-latest,
3936 ubuntu-latest,
@@ -57,18 +54,18 @@ jobs:
5754 run : |
5855 git submodule update --init libraries
5956 git submodule update --init --recursive mpl
60-
57+
6158 - name : Configure AWS Credentials
62- uses : aws-actions/configure-aws-credentials@v1
59+ uses : aws-actions/configure-aws-credentials@v2
6360 with :
6461 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
6663 role-session-name : NetTests
67-
68- - name : Setup .NET Core SDK ${{ matrix.dotnet-version }}
64+
65+ - name : Setup .NET Core SDK 6
6966 uses : actions/setup-dotnet@v3
7067 with :
71- dotnet-version : ${{ matrix.dotnet-version }}
68+ dotnet-version : ' 6.0.x '
7269
7370 - name : Setup Dafny
7471 uses :
dafny-lang/[email protected] @@ -77,53 +74,208 @@ jobs:
7774 dafny-version : ${{ (github.event_name == 'schedule' || inputs.nightly) && 'nightly-latest' || '4.2.0' }}
7875
7976 - name : Download Dependencies
80- working-directory : ./${{ matrix.library }}
77+ working-directory : ./AwsEncryptionSDK
8178 run : make setup_net
8279
83- - name : Compile ${{ matrix.library }} implementation
80+ - name : Compile AwsEncryptionSDK implementation
8481 shell : bash
85- working-directory : ./${{ matrix.library }}
82+ working-directory : ./AwsEncryptionSDK
8683 run : |
8784 # This works because `node` is installed by default on GHA runners
8885 CORES=$(node -e 'console.log(os.cpus().length)')
8986 make transpile_net CORES=$CORES
9087
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
93114 shell : bash
94115 run : |
95116 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
105137
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
108140 shell : bash
109141 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
110151 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
112155 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
114158 fi
115159
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
117223 shell : bash
118- working-directory : ./${{ matrix.library }}
119224 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
120251 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