21 #define pubkey_decrypt_ok( pubkey, key, key_len, ciphertext, \ 22 ciphertext_len, expected, expected_len ) do {\ 23 uint8_t ctx[ (pubkey)->ctxsize ]; \ 25 ok ( pubkey_init ( (pubkey), ctx, (key), (key_len) ) == 0 ); \ 27 size_t max_len = pubkey_max_len ( (pubkey), ctx ); \ 28 uint8_t decrypted[ max_len ]; \ 31 decrypted_len = pubkey_decrypt ( (pubkey), ctx, \ 35 ok ( decrypted_len == ( ( int ) (expected_len) ) ); \ 36 ok ( memcmp ( decrypted, (expected), \ 37 (expected_len) ) == 0 ); \ 39 pubkey_final ( (pubkey), ctx ); \ 53 #define pubkey_encrypt_ok( pubkey, encrypt_key, encrypt_key_len, \ 54 decrypt_key, decrypt_key_len, plaintext, \ 55 plaintext_len ) do { \ 56 uint8_t ctx[ (pubkey)->ctxsize ]; \ 58 ok ( pubkey_init ( (pubkey), ctx, (encrypt_key), \ 59 (encrypt_key_len) ) == 0 ); \ 61 size_t max_len = pubkey_max_len ( (pubkey), ctx ); \ 62 uint8_t encrypted[ max_len ]; \ 65 encrypted_len = pubkey_encrypt ( (pubkey), ctx, \ 69 ok ( encrypted_len >= 0 ); \ 70 pubkey_decrypt_ok ( (pubkey), (decrypt_key), \ 71 (decrypt_key_len), encrypted, \ 72 encrypted_len, (plaintext), \ 75 pubkey_final ( (pubkey), ctx ); \ 90 #define pubkey_sign_ok( pubkey, key, key_len, digest, plaintext, \ 91 plaintext_len, expected, expected_len ) do { \ 92 uint8_t ctx[ (pubkey)->ctxsize ]; \ 93 uint8_t digestctx[ (digest)->ctxsize ]; \ 94 uint8_t digestout[ (digest)->digestsize ]; \ 96 digest_init ( (digest), digestctx ); \ 97 digest_update ( (digest), digestctx, (plaintext), \ 99 digest_final ( (digest), digestctx, digestout ); \ 101 ok ( pubkey_init ( (pubkey), ctx, (key), (key_len) ) == 0 ); \ 103 size_t max_len = pubkey_max_len ( (pubkey), ctx ); \ 104 uint8_t signature[ max_len ]; \ 107 signature_len = pubkey_sign ( (pubkey), ctx, (digest), \ 108 digestout, signature ); \ 109 ok ( signature_len == ( ( int ) (expected_len) ) ); \ 110 ok ( memcmp ( signature, (expected), \ 111 (expected_len) ) == 0 ); \ 113 pubkey_final ( (pubkey), ctx ); \ 128 #define pubkey_verify_ok( pubkey, key, key_len, digest, plaintext, \ 129 plaintext_len, signature, signature_len ) do {\ 130 uint8_t ctx[ (pubkey)->ctxsize ]; \ 131 uint8_t digestctx[ (digest)->ctxsize ]; \ 132 uint8_t digestout[ (digest)->digestsize ]; \ 134 digest_init ( (digest), digestctx ); \ 135 digest_update ( (digest), digestctx, (plaintext), \ 137 digest_final ( (digest), digestctx, digestout ); \ 139 ok ( pubkey_init ( (pubkey), ctx, (key), (key_len) ) == 0 ); \ 140 ok ( pubkey_verify ( (pubkey), ctx, (digest), digestout, \ 141 (signature), (signature_len) ) == 0 ); \ 142 pubkey_final ( (pubkey), ctx ); \ 157 #define pubkey_verify_fail_ok( pubkey, key, key_len, digest, plaintext, \ 158 plaintext_len, signature, \ 159 signature_len ) do { \ 160 uint8_t ctx[ (pubkey)->ctxsize ]; \ 161 uint8_t digestctx[ (digest)->ctxsize ]; \ 162 uint8_t digestout[ (digest)->digestsize ]; \ 164 digest_init ( (digest), digestctx ); \ 165 digest_update ( (digest), digestctx, (plaintext), \ 167 digest_final ( (digest), digestctx, digestout ); \ 169 ok ( pubkey_init ( (pubkey), ctx, (key), (key_len) ) == 0 ); \ 170 ok ( pubkey_verify ( (pubkey), ctx, (digest), digestout, \ 171 (signature), (signature_len) ) != 0 ); \ 172 pubkey_final ( (pubkey), ctx ); \ Self-test infrastructure.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)