diff options
| author | jsing <> | 2014-05-26 13:03:46 +0000 |
|---|---|---|
| committer | jsing <> | 2014-05-26 13:03:46 +0000 |
| commit | 0d0b80ed342c92f8fe45b09b238fdf56f12cca29 (patch) | |
| tree | a0b564930f350e0d462f6d60aea4104bfc7ae4e6 /src/regress/lib/libcrypto/aead/aeadtest.c | |
| parent | a5e991c6a4aabb5b02327d418117987254b50e3e (diff) | |
| download | openbsd-0d0b80ed342c92f8fe45b09b238fdf56f12cca29.tar.gz openbsd-0d0b80ed342c92f8fe45b09b238fdf56f12cca29.tar.bz2 openbsd-0d0b80ed342c92f8fe45b09b238fdf56f12cca29.zip | |
Update the aead regress to work with the improved EVP AEAD API.
Diffstat (limited to 'src/regress/lib/libcrypto/aead/aeadtest.c')
| -rw-r--r-- | src/regress/lib/libcrypto/aead/aeadtest.c | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/regress/lib/libcrypto/aead/aeadtest.c b/src/regress/lib/libcrypto/aead/aeadtest.c index 910aa5b3d4..7a339bc23c 100644 --- a/src/regress/lib/libcrypto/aead/aeadtest.c +++ b/src/regress/lib/libcrypto/aead/aeadtest.c | |||
| @@ -111,7 +111,7 @@ hex_digit(char h) | |||
| 111 | return 16; | 111 | return 16; |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | int | 114 | static int |
| 115 | aead_from_name(const EVP_AEAD **aead, const char *name) | 115 | aead_from_name(const EVP_AEAD **aead, const char *name) |
| 116 | { | 116 | { |
| 117 | *aead = NULL; | 117 | *aead = NULL; |
| @@ -150,9 +150,8 @@ run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], | |||
| 150 | const unsigned int lengths[NUM_TYPES], unsigned int line_no) | 150 | const unsigned int lengths[NUM_TYPES], unsigned int line_no) |
| 151 | { | 151 | { |
| 152 | EVP_AEAD_CTX ctx; | 152 | EVP_AEAD_CTX ctx; |
| 153 | ssize_t n; | ||
| 154 | size_t un; | ||
| 155 | unsigned char out[BUF_MAX + EVP_AEAD_MAX_TAG_LENGTH], out2[BUF_MAX]; | 153 | unsigned char out[BUF_MAX + EVP_AEAD_MAX_TAG_LENGTH], out2[BUF_MAX]; |
| 154 | size_t out_len, out_len2; | ||
| 156 | 155 | ||
| 157 | if (!EVP_AEAD_CTX_init(&ctx, aead, bufs[KEY], lengths[KEY], | 156 | if (!EVP_AEAD_CTX_init(&ctx, aead, bufs[KEY], lengths[KEY], |
| 158 | lengths[TAG], NULL)) { | 157 | lengths[TAG], NULL)) { |
| @@ -160,20 +159,15 @@ run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], | |||
| 160 | return 0; | 159 | return 0; |
| 161 | } | 160 | } |
| 162 | 161 | ||
| 163 | n = EVP_AEAD_CTX_seal(&ctx, out, sizeof(out), bufs[NONCE], | 162 | if (!EVP_AEAD_CTX_seal(&ctx, out, &out_len, sizeof(out), bufs[NONCE], |
| 164 | lengths[NONCE], bufs[IN], lengths[IN], bufs[AD], lengths[AD]); | 163 | lengths[NONCE], bufs[IN], lengths[IN], bufs[AD], lengths[AD])) { |
| 165 | |||
| 166 | if (n < 0) { | ||
| 167 | fprintf(stderr, "Failed to run AEAD on line %u\n", line_no); | 164 | fprintf(stderr, "Failed to run AEAD on line %u\n", line_no); |
| 168 | return 0; | 165 | return 0; |
| 169 | } | 166 | } |
| 170 | 167 | ||
| 171 | un = (size_t)n; | 168 | if (out_len != lengths[CT] + lengths[TAG]) { |
| 172 | 169 | fprintf(stderr, "Bad output length on line %u: %zu vs %u\n", | |
| 173 | if (un != lengths[CT] + lengths[TAG]) { | 170 | line_no, out_len, (unsigned)(lengths[CT] + lengths[TAG])); |
| 174 | fprintf(stderr, "Bad output length on line %u: %u vs %u\n", | ||
| 175 | line_no, (unsigned) un, | ||
| 176 | (unsigned)(lengths[CT] + lengths[TAG])); | ||
| 177 | return 0; | 171 | return 0; |
| 178 | } | 172 | } |
| 179 | 173 | ||
| @@ -187,23 +181,21 @@ run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], | |||
| 187 | return 0; | 181 | return 0; |
| 188 | } | 182 | } |
| 189 | 183 | ||
| 190 | n = EVP_AEAD_CTX_open(&ctx, out2, lengths[IN], bufs[NONCE], | 184 | if (!EVP_AEAD_CTX_open(&ctx, out2, &out_len2, lengths[IN], bufs[NONCE], |
| 191 | lengths[NONCE], out, un, bufs[AD], lengths[AD]); | 185 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { |
| 192 | if (n < 0) { | ||
| 193 | fprintf(stderr, "Failed to decrypt on line %u\n", line_no); | 186 | fprintf(stderr, "Failed to decrypt on line %u\n", line_no); |
| 194 | return 0; | 187 | return 0; |
| 195 | } | 188 | } |
| 196 | 189 | ||
| 197 | if ((size_t)n != lengths[IN]) { | 190 | if (out_len2 != lengths[IN]) { |
| 198 | fprintf(stderr, "Bad decrypt on line %u: %u\n", line_no, | 191 | fprintf(stderr, "Bad decrypt on line %u: %zu\n", |
| 199 | (unsigned) n); | 192 | line_no, out_len2); |
| 200 | return 0; | 193 | return 0; |
| 201 | } | 194 | } |
| 202 | 195 | ||
| 203 | out[0] ^= 0x80; | 196 | out[0] ^= 0x80; |
| 204 | n = EVP_AEAD_CTX_open(&ctx, out2, lengths[IN], bufs[NONCE], | 197 | if (EVP_AEAD_CTX_open(&ctx, out2, &out_len2, lengths[IN], bufs[NONCE], |
| 205 | lengths[NONCE], out, un, bufs[AD], lengths[AD]); | 198 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { |
| 206 | if (n >= 0) { | ||
| 207 | fprintf(stderr, "Decrypted bad data on line %u\n", line_no); | 199 | fprintf(stderr, "Decrypted bad data on line %u\n", line_no); |
| 208 | return 0; | 200 | return 0; |
| 209 | } | 201 | } |
