diff options
author | jsing <> | 2014-05-26 13:03:46 +0000 |
---|---|---|
committer | jsing <> | 2014-05-26 13:03:46 +0000 |
commit | 28f53f223454b76b7fe6ebbc3393a2b36769fa86 (patch) | |
tree | a0b564930f350e0d462f6d60aea4104bfc7ae4e6 | |
parent | 1e04f96479c885fa94175f42f348872cbdd3c9d4 (diff) | |
download | openbsd-28f53f223454b76b7fe6ebbc3393a2b36769fa86.tar.gz openbsd-28f53f223454b76b7fe6ebbc3393a2b36769fa86.tar.bz2 openbsd-28f53f223454b76b7fe6ebbc3393a2b36769fa86.zip |
Update the aead regress to work with the improved EVP AEAD API.
-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 | } |