-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added support for AES-ECB to the PSA Crypto implementation #3480
Changes from 4 commits
ed3c9ec
2a48b53
a6033e9
ffecb7b
177deba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Features | ||
* Add support for ECB to the PSA cipher API. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -346,7 +346,11 @@ PSA import RSA public key: maximum size exceeded | |
depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C | ||
import_rsa_made_up:PSA_VENDOR_RSA_MAX_KEY_BITS+8:0:PSA_ERROR_NOT_SUPPORTED | ||
|
||
PSA key policy: AES | ||
PSA key policy: AES ECB | ||
depends_on:MBEDTLS_AES_C | ||
check_key_policy:PSA_KEY_TYPE_AES:128:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECB_NO_PADDING | ||
|
||
PSA key policy: AES CBC | ||
depends_on:MBEDTLS_AES_C | ||
check_key_policy:PSA_KEY_TYPE_AES:128:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_CBC_NO_PADDING | ||
|
||
|
@@ -1122,6 +1126,18 @@ PSA cipher: bad order function calls | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_bad_order: | ||
|
||
PSA symmetric encrypt: AES-ECB, 0 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"":"":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt: AES-ECB, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e117393172a":"3ad77bb40d7a3660a89ecaf32466ef97":PSA_SUCCESS | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add a few more test cases (for both encrypt and decrypt): 0 bytes, 32 bytes, a non-multiple of 16. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add at least a 1-block 3DES test case. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3DES isn't in scope for this PR? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This PR makes Mbed TLS recognize |
||
PSA symmetric encrypt: AES-ECB, 32 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e117393172a3ad77bb40d7a3660a89ecaf32466ef97":"3ad77bb40d7a3660a89ecaf32466ef972249a2638c6f1c755a84f9681a9f08c1":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt: AES-CBC-nopad, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a":"a076ec9dfbe47d52afc357336f20743b":PSA_SUCCESS | ||
|
@@ -1134,6 +1150,10 @@ PSA symmetric encrypt: AES-CBC-PKCS#7, 15 bytes, good | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_CBC_PKCS7:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e11739317":"6279b49d7f7a8dd87b685175d4276e24":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt: AES-ECB, input too short (15 bytes) | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e11739317":"3ad77bb40d7a3660a89ecaf32466ef":PSA_ERROR_INVALID_ARGUMENT | ||
gilles-peskine-arm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
PSA symmetric encrypt: AES-CBC-nopad, input too short | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee223":"6bc1bee223":PSA_ERROR_INVALID_ARGUMENT | ||
|
@@ -1158,6 +1178,26 @@ PSA symmetric encrypt: 3-key 3DES-CBC-nopad, 8 bytes, good | |
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce31323437383b3d3e":"2a2a2a2a2a2a2a2a":"eda4011239bc3ac9":"817ca7d69b80d86a":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt: 2-key 3DES-ECB, 8 bytes, good | ||
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce":"":"c78e2b38139610e3":"5d0652429c5b0ac7":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt: 3-key 3DES-ECB, 8 bytes, good | ||
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce31323437383b3d3e":"":"c78e2b38139610e3":"817ca7d69b80d86a":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: AES-ECB, 0 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"":"":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: AES-ECB, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"396ee84fb75fdbb5c2b13c7fe5a654aa":"63cecc46a382414d5fa7d2b79387437f":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: AES-ECB, 32 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"3ad77bb40d7a3660a89ecaf32466ef972249a2638c6f1c755a84f9681a9f08c1":"6bc1bee22e409f96e93d7e117393172a3ad77bb40d7a3660a89ecaf32466ef97":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: AES-CBC-nopad, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"396ee84fb75fdbb5c2b13c7fe5a654aa":"49e4e66c89a86b67758df89db9ad6955":PSA_SUCCESS | ||
|
@@ -1178,6 +1218,10 @@ PSA symmetric decrypt: AES-CTR, 16 bytes, good | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"396ee84fb75fdbb5c2b13c7fe5a654aa":"dd3b5e5319b7591daab1e1a92687feb2":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: AES-ECB, input too short (15 bytes) | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"396ee84fb75fdbb5c2b13c7fe5a654":"63cecc46a382414d5fa7d2b7938743":PSA_ERROR_INVALID_ARGUMENT | ||
|
||
PSA symmetric decrypt: AES-CBC-nopad, input too short (5 bytes) | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee223":"6bc1bee223":PSA_ERROR_BAD_STATE | ||
|
@@ -1194,6 +1238,18 @@ PSA symmetric decrypt: 3-key 3DES-CBC-nopad, 8 bytes, good | |
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce31323437383b3d3e":"2a2a2a2a2a2a2a2a":"817ca7d69b80d86a":"eda4011239bc3ac9":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: 2-key 3DES-ECB, 8 bytes, good | ||
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce":"":"5d0652429c5b0ac7":"c78e2b38139610e3":PSA_SUCCESS | ||
|
||
PSA symmetric decrypt: 3-key 3DES-ECB, 8 bytes, good | ||
depends_on:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_DES:"01020407080b0d0ec1c2c4c7c8cbcdce31323437383b3d3e":"":"817ca7d69b80d86a":"c78e2b38139610e3":PSA_SUCCESS | ||
|
||
PSA symmetric encrypt/decrypt: AES-ECB, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C | ||
cipher_verify_output:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"6bc1bee22e409f96e93d7e117393172a" | ||
|
||
PSA symmetric encrypt/decrypt: AES-CBC-nopad, 16 bytes, good | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_verify_output:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"6bc1bee22e409f96e93d7e117393172a" | ||
|
@@ -1210,6 +1266,18 @@ PSA symmetric encrypt/decrypt: AES-CTR | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_verify_output:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"6bc1bee22e409f96e93d7e117393172a" | ||
|
||
PSA symmetric encryption multipart: AES-ECB, 16+16 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":16:16:16:"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c" | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add a test case where the input isn't split on a block boundary (e.g. 1+15). And please add a bad test case where the total input isn't a whole number of blocks. All for both encrypt and decrypt. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There weren't any negative test cases being done with _multipart tests. Is it really up to me to introduce that here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A prior test gap is not a justification for expanding the test gap in general. But ok, let's defer negative testing for multipart operations since it's a preexisting lack of test code. Do please add test with input that isn't split on a block boundary, which was already done for CBC. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure (push incoming for the non-block-multiple operations). |
||
PSA symmetric encryption multipart: AES-ECB, 13+19 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":13:0:32:"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c" | ||
|
||
PSA symmetric encryption multipart: AES-ECB, 24+12 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_encrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":24:16:16:"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c" | ||
|
||
PSA symmetric encryption multipart: AES-CBC-nopad, 7+9 bytes | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_encrypt_multipart:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a":7:0:16:"a076ec9dfbe47d52afc357336f20743b" | ||
|
@@ -1274,6 +1342,18 @@ PSA symmetric encryption multipart: AES-CTR, 16+0 bytes | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_encrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a":16:16:0:"8f9408fe80a81d3e813da3c7b0b2bd32" | ||
|
||
PSA symmetric decryption multipart: AES-ECB, 16+16 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c":16:16:16:"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef" | ||
|
||
PSA symmetric decryption multipart: AES-ECB, 11+21 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c":11:0:32:"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef" | ||
|
||
PSA symmetric decryption multipart: AES-ECB, 28+4 bytes | ||
depends_on:MBEDTLS_AES_C | ||
cipher_decrypt_multipart:PSA_ALG_ECB_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"":"3ad77bb40d7a3660a89ecaf32466ef9755ed5e9e066820fa52c729886d18854c":28:16:16:"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef" | ||
|
||
PSA symmetric decryption multipart: AES-CBC-nopad, 7+9 bytes | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC | ||
cipher_decrypt_multipart:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"a076ec9dfbe47d52afc357336f20743b":7:0:16:"6bc1bee22e409f96e93d7e117393172a" | ||
|
@@ -1302,19 +1382,19 @@ PSA symmetric encryption multipart: AES-CTR, 11+5 bytes [#2] | |
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a":11:11:5:"8f9408fe80a81d3e813da3c7b0b2bd32" | ||
|
||
PSA symmetric encryption multipart: AES-CTR, 16+16 bytes [#2] | ||
PSA symmetric decryption multipart: AES-CTR, 16+16 bytes [#2] | ||
gilles-peskine-arm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":16:16:16:"8f9408fe80a81d3e813da3c7b0b2bd321c965bb1de7baf71025f6ef6393ca587" | ||
|
||
PSA symmetric encryption multipart: AES-CTR, 12+20 bytes [#2] | ||
PSA symmetric decryption multipart: AES-CTR, 12+20 bytes [#2] | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":12:12:20:"8f9408fe80a81d3e813da3c7b0b2bd321c965bb1de7baf71025f6ef6393ca587" | ||
|
||
PSA symmetric encryption multipart: AES-CTR, 20+12 bytes [#2] | ||
PSA symmetric decryption multipart: AES-CTR, 20+12 bytes [#2] | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a5434f378a597bcef1389318c7fc865ef":20:20:12:"8f9408fe80a81d3e813da3c7b0b2bd321c965bb1de7baf71025f6ef6393ca587" | ||
|
||
PSA symmetric encryption multipart: AES-CTR, 12+10 bytes [#2] | ||
PSA symmetric decryption multipart: AES-CTR, 12+10 bytes [#2] | ||
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR | ||
cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a5434f378a597":12:12:10:"8f9408fe80a81d3e813da3c7b0b2bd321c965bb1de7b" | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please include the warning against use as well.