1a8e1175bSopenharmony_ciStandard PEM write 2a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=\n-----END TEST-----\n" 3a8e1175bSopenharmony_ci 4a8e1175bSopenharmony_ciPEM write (zero data) 5a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"":"-----START TEST-----\n-----END TEST-----\n" 6a8e1175bSopenharmony_ci 7a8e1175bSopenharmony_ciPEM write (one byte) 8a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"00":"-----START TEST-----\nAA==\n-----END TEST-----\n" 9a8e1175bSopenharmony_ci 10a8e1175bSopenharmony_ciPEM write (more than line size) 11a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=\n-----END TEST-----\n" 12a8e1175bSopenharmony_ci 13a8e1175bSopenharmony_ciPEM write (exactly two lines) 14a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\n-----END TEST-----\n" 15a8e1175bSopenharmony_ci 16a8e1175bSopenharmony_ciPEM write (exactly two lines + 1) 17a8e1175bSopenharmony_cimbedtls_pem_write_buffer:"-----START TEST-----\n":"-----END TEST-----\n":"000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F00":"-----START TEST-----\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4P\nAA==\n-----END TEST-----\n" 18a8e1175bSopenharmony_ci 19a8e1175bSopenharmony_ciPEM write length reporting 20a8e1175bSopenharmony_cimbedtls_pem_write_buffer_lengths 21a8e1175bSopenharmony_ci 22a8e1175bSopenharmony_ciPEM read (unencrypted, valid) 23a8e1175bSopenharmony_cimbedtls_pem_read_buffer:"^":"$":"^\nTWJlZCBUTFM=\n$":"":0:"4d62656420544c53" 24a8e1175bSopenharmony_ci 25a8e1175bSopenharmony_ciPEM read (unencrypted, empty content) 26a8e1175bSopenharmony_cimbedtls_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:"" 27a8e1175bSopenharmony_ci 28a8e1175bSopenharmony_ciPEM read (DES-EDE3-CBC + invalid iv) 29a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_DES_C 30a8e1175bSopenharmony_cimbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-EDE3-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" 31a8e1175bSopenharmony_ci 32a8e1175bSopenharmony_ciPEM read (DES-CBC + invalid iv) 33a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_DES_C 34a8e1175bSopenharmony_cimbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: DES-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" 35a8e1175bSopenharmony_ci 36a8e1175bSopenharmony_ciPEM read (AES-128-CBC + invalid iv) 37a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_AES_C 38a8e1175bSopenharmony_cimbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-128-CBC,00$":"pwd":MBEDTLS_ERR_PEM_INVALID_ENC_IV:"" 39a8e1175bSopenharmony_ci 40a8e1175bSopenharmony_ciPEM read (unknown encryption algorithm) 41a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_AES_C 42a8e1175bSopenharmony_cimbedtls_pem_read_buffer:"^":"$":"^\nProc-Type\: 4,ENCRYPTED\nDEK-Info\: AES-,00$":"pwd":MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG:"" 43a8e1175bSopenharmony_ci 44a8e1175bSopenharmony_ciPEM read (malformed PEM DES-CBC) 45a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC 46a8e1175bSopenharmony_cimbedtls_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:"" 47a8e1175bSopenharmony_ci 48a8e1175bSopenharmony_ciPEM read (malformed PEM DES-EDE3-CBC) 49a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC 50a8e1175bSopenharmony_cimbedtls_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:"" 51a8e1175bSopenharmony_ci 52a8e1175bSopenharmony_ciPEM read (malformed PEM AES-128-CBC) 53a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC 54a8e1175bSopenharmony_cimbedtls_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:"" 55a8e1175bSopenharmony_ci 56a8e1175bSopenharmony_ci# The output sequence's length is not multiple of block size (16 bytes). This 57a8e1175bSopenharmony_ci# proves that the pem_context->len value is properly updated based on the SEQUENCE 58a8e1175bSopenharmony_ci# length read from the decoded ASN.1 data (i.e. extra padding, if any, is ignored). 59a8e1175bSopenharmony_ciPEM read (valid EC key encoded with AES-128-CBC) 60a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC 61a8e1175bSopenharmony_cimbedtls_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" 62a8e1175bSopenharmony_ci 63a8e1175bSopenharmony_ci# The text "hello world" together with some invalid padding data is encoded 64a8e1175bSopenharmony_ci# with AES-128-CBC in order to test padding validation. 65a8e1175bSopenharmony_ci# Since PBKDF1 isn't supported in OpenSSL, here's the steps: 66a8e1175bSopenharmony_ci# 1. generate the key (password="password"; IV=0x3132333435363738 in hex or "12345678" as string) 67a8e1175bSopenharmony_ci# echo -n "password12345678" | openssl md5 68a8e1175bSopenharmony_ci# 2. encode data 69a8e1175bSopenharmony_ci# 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 70a8e1175bSopenharmony_ciPEM read (AES-128-CBC, invalid padding data) 71a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC 72a8e1175bSopenharmony_cimbedtls_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:"" 73a8e1175bSopenharmony_ci 74a8e1175bSopenharmony_ci# Padding data (0x11) is larger than AES block size (16). 75a8e1175bSopenharmony_ci# Generated with: 76a8e1175bSopenharmony_ci# 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 77a8e1175bSopenharmony_ciPEM read (AES-128-CBC, padding data is larger than AES block length) 78a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC 79a8e1175bSopenharmony_cimbedtls_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:"" 80a8e1175bSopenharmony_ci 81a8e1175bSopenharmony_ci# Padding data (0x9) is larger than DES block size (8). 82a8e1175bSopenharmony_ci# Generated with: 83a8e1175bSopenharmony_ci# echo -n -e "\x68\x65\x6c\x6c\x6f\x09\x09\x09" | openssl des-cbc -e -base64 -p -K "bbb0ddff1b944b3cc68eaaeb7ac20099" -iv "3132333435363738" -nopad 84a8e1175bSopenharmony_ciPEM read (DES-CBC, padding data is larger than DES block length) 85a8e1175bSopenharmony_cidepends_on:MBEDTLS_MD_CAN_MD5:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC 86a8e1175bSopenharmony_cimbedtls_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:"" 87