Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 1 | Standard PEM write |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 2 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=\n-----END TEST-----\n" |
Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 3 | |
| 4 | PEM write (zero data) |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 5 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"":"-----START TEST-----\n-----END TEST-----\n" |
Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 6 | |
| 7 | PEM write (one byte) |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 8 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"00":"-----START TEST-----\nAA==\n-----END TEST-----\n" |
Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 9 | |
| 10 | PEM write (more than line size) |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 11 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=\n-----END TEST-----\n" |
Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 12 | |
| 13 | PEM write (exactly two lines) |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 14 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\n-----END TEST-----\n" |
Paul Bakker | 1630058 | 2014-04-11 13:28:43 +0200 | [diff] [blame] | 15 | |
| 16 | PEM write (exactly two lines + 1) |
Manuel Pégourié-Gonnard | 2cf5a7c | 2015-04-08 12:49:31 +0200 | [diff] [blame] | 17 | mbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F00":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAA==\n-----END TEST-----\n" |
Andres AG | 9c94b69 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 18 | |
Jethro Beekman | 746df88 | 2023-05-03 14:49:28 +0200 | [diff] [blame] | 19 | PEM write length reporting |
| 20 | mbedtls_pem_write_buffer_lengths |
| 21 | |
Manuel Pégourié-Gonnard | 33ab075 | 2022-02-07 12:47:00 +0100 | [diff] [blame] | 22 | PEM read (unencrypted, valid) |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 23 | mbedtls_pem_read_buffer:"^":"$":"^\nTWJlZCBUTFM=\n$":"":0:"4d62656420544c53" |
Manuel Pégourié-Gonnard | 33ab075 | 2022-02-07 12:47:00 +0100 | [diff] [blame] | 24 | |
Valerio Setti | 0f286d5 | 2024-02-16 14:30:58 +0100 | [diff] [blame] | 25 | PEM read (unencrypted, empty content) |
Valerio Setti | 0f286d5 | 2024-02-16 14:30:58 +0100 | [diff] [blame] | 26 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\n\n-----END EC PRIVATE KEY-----":"":MBEDTLS_ERR_PEM_BAD_INPUT_DATA:"" |
| 27 | |
Andres AG | 9c94b69 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 28 | PEM read (DES-EDE3-CBC + invalid iv) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 29 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_DES_C |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 30 | mbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-EDE3-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" |
Andres AG | 9c94b69 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 31 | |
| 32 | PEM read (DES-CBC + invalid iv) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 33 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_DES_C |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 34 | mbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" |
Andres AG | 9c94b69 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 35 | |
Tomás González | 3719f9e | 2023-07-05 12:43:10 +0100 | [diff] [blame] | 36 | PEM read (AES-128-CBC + invalid iv) |
| 37 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_AES_C |
| 38 | mbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" |
| 39 | |
Andres AG | 9c94b69 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 40 | PEM read (unknown encryption algorithm) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 41 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_AES_C |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 42 | mbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-,00$":"pwd":MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG:"" |
Andres AG | 49d2933 | 2016-10-24 14:31:54 +0100 | [diff] [blame] | 43 | |
Andres AG | a3b9adb | 2017-03-01 11:53:29 +0000 | [diff] [blame] | 44 | PEM read (malformed PEM DES-CBC) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 45 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 46 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-CBC,AA94892A169FA426\n\nMAAA\n-----END EC PRIVATE KEY-----":"pwd":MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH:"" |
Andres AG | a3b9adb | 2017-03-01 11:53:29 +0000 | [diff] [blame] | 47 | |
| 48 | PEM read (malformed PEM DES-EDE3-CBC) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 49 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 50 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-EDE3-CBC,AA94892A169FA426\n\nMAAA\n-----END EC PRIVATE KEY-----":"pwd":MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH:"" |
Andres AG | a3b9adb | 2017-03-01 11:53:29 +0000 | [diff] [blame] | 51 | |
| 52 | PEM read (malformed PEM AES-128-CBC) |
Manuel Pégourié-Gonnard | 52d02a8 | 2023-03-16 10:24:47 +0100 | [diff] [blame] | 53 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC |
Manuel Pégourié-Gonnard | 1df23b9 | 2022-02-07 12:59:10 +0100 | [diff] [blame] | 54 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,AA94892A169FA426AA94892A169FA426\n\nMAAA\n-----END EC PRIVATE KEY-----":"pwd":MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH:"" |
Valerio Setti | 4ade8ee | 2024-02-09 17:44:07 +0100 | [diff] [blame] | 55 | |
| 56 | # The output sequence's length is not multiple of block size (16 bytes). This |
| 57 | # proves that the pem_context->len value is properly updated based on the SEQUENCE |
| 58 | # length read from the decoded ASN.1 data (i.e. extra padding, if any, is ignored). |
| 59 | PEM read (valid EC key encoded with AES-128-CBC) |
| 60 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC |
| 61 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,151F851B6A7F3FBDAA5B7173117D0127\n\nLw+0OM+0Bwcl+ls/vxQbLrVshGc7bsNPvvtj2sJeMFFEq3V1mj/IO++0KK/CDhMH\nh6CZPsmgVOeM5uFpqYaq0fJbUduN2eDMWszWRm0SFkY=\n-----END EC PRIVATE KEY-----":"pwdpwd":0:"3041020101040f00d8023c809afd45e426d1a4dbe0ffa00706052b81040004a1220320000400da1ecfa53d528237625e119e2e0500d2eb671724f16deb6a63749516b7" |
| 62 | |
Valerio Setti | 4cc6522 | 2024-02-16 14:40:42 +0100 | [diff] [blame] | 63 | # The text "hello world" together with some invalid padding data is encoded |
| 64 | # with AES-128-CBC in order to test padding validation. |
Valerio Setti | c1b9375 | 2024-02-12 11:03:16 +0100 | [diff] [blame] | 65 | # Since PBKDF1 isn't supported in OpenSSL, here's the steps: |
| 66 | # 1. generate the key (password="password"; IV=0x3132333435363738 in hex or "12345678" as string) |
| 67 | # echo -n "password12345678" | openssl md5 |
| 68 | # 2. encode data |
Valerio Setti | c1b9375 | 2024-02-12 11:03:16 +0100 | [diff] [blame] | 69 | # echo -n -e "\x68\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x01\x02\x03\x04\x05" | openssl aes-128-cbc -e -base64 -p -K "bbb0ddff1b944b3cc68eaaeb7ac20099" -iv "3132333435363738" -nopad |
Valerio Setti | 4cc6522 | 2024-02-16 14:40:42 +0100 | [diff] [blame] | 70 | PEM read (AES-128-CBC, invalid padding data) |
Valerio Setti | c1b9375 | 2024-02-12 11:03:16 +0100 | [diff] [blame] | 71 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC |
Valerio Setti | e88a1c5 | 2024-02-19 15:08:49 +0100 | [diff] [blame] | 72 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,31323334353637380000000000000000\n\n333hxynfxEdXrSHQfIabxQ==\n-----END EC PRIVATE KEY-----":"password":MBEDTLS_ERR_PEM_PASSWORD_MISMATCH:"" |
Valerio Setti | 8aff4ef | 2024-02-16 14:31:51 +0100 | [diff] [blame] | 73 | |
| 74 | # Padding data (0x11) is larger than AES block size (16). |
| 75 | # Generated with: |
| 76 | # echo -n -e "\x68\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x11\x11\x11\x11\x11" | openssl aes-128-cbc -e -base64 -p -K "bbb0ddff1b944b3cc68eaaeb7ac20099" -iv "3132333435363738" -nopad |
| 77 | PEM read (AES-128-CBC, padding data is larger than AES block length) |
| 78 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC |
Valerio Setti | e88a1c5 | 2024-02-19 15:08:49 +0100 | [diff] [blame] | 79 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,31323334353637380000000000000000\n\n5wA/XVXHuMsQAAOGFQmK0g==\n-----END EC PRIVATE KEY-----":"password":MBEDTLS_ERR_PEM_PASSWORD_MISMATCH:"" |
Valerio Setti | 8aff4ef | 2024-02-16 14:31:51 +0100 | [diff] [blame] | 80 | |
Valerio Setti | e10674d | 2024-02-19 14:52:24 +0100 | [diff] [blame] | 81 | # Padding data (0x9) is larger than DES block size (8). |
Valerio Setti | 8aff4ef | 2024-02-16 14:31:51 +0100 | [diff] [blame] | 82 | # Generated with: |
| 83 | # echo -n -e "\x68\x65\x6c\x6c\x6f\x09\x09\x09" | openssl des-cbc -e -base64 -p -K "bbb0ddff1b944b3cc68eaaeb7ac20099" -iv "3132333435363738" -nopad |
| 84 | PEM read (DES-CBC, padding data is larger than DES block length) |
| 85 | depends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC |
Valerio Setti | e88a1c5 | 2024-02-19 15:08:49 +0100 | [diff] [blame] | 86 | mbedtls_pem_read_buffer:"-----BEGIN EC PRIVATE KEY-----":"-----END EC PRIVATE KEY-----":"-----BEGIN EC PRIVATE KEY-----\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-CBC,3132333435363738\n\n6a+B2WineBM=\n-----END EC PRIVATE KEY-----":"password":MBEDTLS_ERR_PEM_PASSWORD_MISMATCH:"" |