diff options
author | tb <> | 2022-01-12 08:54:23 +0000 |
---|---|---|
committer | tb <> | 2022-01-12 08:54:23 +0000 |
commit | 6e9abbc89c0864db2158ab63b540247e5853b8e6 (patch) | |
tree | 36169b7d276eb860947e6576028526373396ca94 /src | |
parent | d040a2535c88a2cc45f298fdb891f0e3dd7ec0e0 (diff) | |
download | openbsd-6e9abbc89c0864db2158ab63b540247e5853b8e6.tar.gz openbsd-6e9abbc89c0864db2158ab63b540247e5853b8e6.tar.bz2 openbsd-6e9abbc89c0864db2158ab63b540247e5853b8e6.zip |
Rework test to use EVP_AEAD_CTX_{new,free}() and link statically for now
Diffstat (limited to 'src')
-rw-r--r-- | src/regress/lib/libcrypto/aead/Makefile | 7 | ||||
-rw-r--r-- | src/regress/lib/libcrypto/aead/aeadtest.c | 45 |
2 files changed, 32 insertions, 20 deletions
diff --git a/src/regress/lib/libcrypto/aead/Makefile b/src/regress/lib/libcrypto/aead/Makefile index 344bdcbbf1..1643080333 100644 --- a/src/regress/lib/libcrypto/aead/Makefile +++ b/src/regress/lib/libcrypto/aead/Makefile | |||
@@ -1,10 +1,11 @@ | |||
1 | # $OpenBSD: Makefile,v 1.3 2014/07/08 15:53:52 jsing Exp $ | 1 | # $OpenBSD: Makefile,v 1.4 2022/01/12 08:54:23 tb Exp $ |
2 | 2 | ||
3 | PROG= aeadtest | 3 | PROG= aeadtest |
4 | LDADD= -lcrypto | 4 | #LDADD= -lcrypto |
5 | LDADD= ${CRYPTO_INT} # XXX link dynamically after bump | ||
5 | DPADD= ${LIBCRYPTO} | 6 | DPADD= ${LIBCRYPTO} |
6 | WARNINGS= Yes | 7 | WARNINGS= Yes |
7 | CFLAGS+= -DLIBRESSL_INTERNAL -Werror | 8 | CFLAGS+= -DLIBRESSL_INTERNAL -DLIBRESSL_CRYPTO_INTERNAL -Werror |
8 | 9 | ||
9 | REGRESS_TARGETS=regress-aeadtest | 10 | REGRESS_TARGETS=regress-aeadtest |
10 | 11 | ||
diff --git a/src/regress/lib/libcrypto/aead/aeadtest.c b/src/regress/lib/libcrypto/aead/aeadtest.c index 1b144c2615..ea88885380 100644 --- a/src/regress/lib/libcrypto/aead/aeadtest.c +++ b/src/regress/lib/libcrypto/aead/aeadtest.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: aeadtest.c,v 1.12 2019/01/22 00:59:21 dlg Exp $ */ | 1 | /* $OpenBSD: aeadtest.c,v 1.13 2022/01/12 08:54:23 tb Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2011-2013 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2011-2013 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -159,64 +159,75 @@ static int | |||
159 | run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], | 159 | run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], |
160 | const unsigned int lengths[NUM_TYPES], unsigned int line_no) | 160 | const unsigned int lengths[NUM_TYPES], unsigned int line_no) |
161 | { | 161 | { |
162 | EVP_AEAD_CTX ctx; | 162 | EVP_AEAD_CTX *ctx; |
163 | unsigned char out[BUF_MAX + EVP_AEAD_MAX_TAG_LENGTH], out2[BUF_MAX]; | 163 | unsigned char out[BUF_MAX + EVP_AEAD_MAX_TAG_LENGTH], out2[BUF_MAX]; |
164 | size_t out_len, out_len2; | 164 | size_t out_len, out_len2; |
165 | int ret = 0; | ||
165 | 166 | ||
166 | if (!EVP_AEAD_CTX_init(&ctx, aead, bufs[KEY], lengths[KEY], | 167 | if ((ctx = EVP_AEAD_CTX_new()) == NULL) { |
168 | fprintf(stderr, "Failed to allocate AEAD context on line %u\n", | ||
169 | line_no); | ||
170 | goto err; | ||
171 | } | ||
172 | |||
173 | if (!EVP_AEAD_CTX_init(ctx, aead, bufs[KEY], lengths[KEY], | ||
167 | lengths[TAG], NULL)) { | 174 | lengths[TAG], NULL)) { |
168 | fprintf(stderr, "Failed to init AEAD on line %u\n", line_no); | 175 | fprintf(stderr, "Failed to init AEAD on line %u\n", line_no); |
169 | return 0; | 176 | goto err; |
170 | } | 177 | } |
171 | 178 | ||
172 | if (!EVP_AEAD_CTX_seal(&ctx, out, &out_len, sizeof(out), bufs[NONCE], | 179 | if (!EVP_AEAD_CTX_seal(ctx, out, &out_len, sizeof(out), bufs[NONCE], |
173 | lengths[NONCE], bufs[IN], lengths[IN], bufs[AD], lengths[AD])) { | 180 | lengths[NONCE], bufs[IN], lengths[IN], bufs[AD], lengths[AD])) { |
174 | fprintf(stderr, "Failed to run AEAD on line %u\n", line_no); | 181 | fprintf(stderr, "Failed to run AEAD on line %u\n", line_no); |
175 | return 0; | 182 | goto err; |
176 | } | 183 | } |
177 | 184 | ||
178 | if (out_len != lengths[CT] + lengths[TAG]) { | 185 | if (out_len != lengths[CT] + lengths[TAG]) { |
179 | fprintf(stderr, "Bad output length on line %u: %zu vs %u\n", | 186 | fprintf(stderr, "Bad output length on line %u: %zu vs %u\n", |
180 | line_no, out_len, (unsigned)(lengths[CT] + lengths[TAG])); | 187 | line_no, out_len, (unsigned)(lengths[CT] + lengths[TAG])); |
181 | return 0; | 188 | goto err; |
182 | } | 189 | } |
183 | 190 | ||
184 | if (memcmp(out, bufs[CT], lengths[CT]) != 0) { | 191 | if (memcmp(out, bufs[CT], lengths[CT]) != 0) { |
185 | fprintf(stderr, "Bad output on line %u\n", line_no); | 192 | fprintf(stderr, "Bad output on line %u\n", line_no); |
186 | return 0; | 193 | goto err; |
187 | } | 194 | } |
188 | 195 | ||
189 | if (memcmp(out + lengths[CT], bufs[TAG], lengths[TAG]) != 0) { | 196 | if (memcmp(out + lengths[CT], bufs[TAG], lengths[TAG]) != 0) { |
190 | fprintf(stderr, "Bad tag on line %u\n", line_no); | 197 | fprintf(stderr, "Bad tag on line %u\n", line_no); |
191 | return 0; | 198 | goto err; |
192 | } | 199 | } |
193 | 200 | ||
194 | if (!EVP_AEAD_CTX_open(&ctx, out2, &out_len2, lengths[IN], bufs[NONCE], | 201 | if (!EVP_AEAD_CTX_open(ctx, out2, &out_len2, lengths[IN], bufs[NONCE], |
195 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { | 202 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { |
196 | fprintf(stderr, "Failed to decrypt on line %u\n", line_no); | 203 | fprintf(stderr, "Failed to decrypt on line %u\n", line_no); |
197 | return 0; | 204 | goto err; |
198 | } | 205 | } |
199 | 206 | ||
200 | if (out_len2 != lengths[IN]) { | 207 | if (out_len2 != lengths[IN]) { |
201 | fprintf(stderr, "Bad decrypt on line %u: %zu\n", | 208 | fprintf(stderr, "Bad decrypt on line %u: %zu\n", |
202 | line_no, out_len2); | 209 | line_no, out_len2); |
203 | return 0; | 210 | goto err; |
204 | } | 211 | } |
205 | 212 | ||
206 | if (memcmp(out2, bufs[IN], out_len2) != 0) { | 213 | if (memcmp(out2, bufs[IN], out_len2) != 0) { |
207 | fprintf(stderr, "Plaintext mismatch on line %u\n", line_no); | 214 | fprintf(stderr, "Plaintext mismatch on line %u\n", line_no); |
208 | return 0; | 215 | goto err; |
209 | } | 216 | } |
210 | 217 | ||
211 | out[0] ^= 0x80; | 218 | out[0] ^= 0x80; |
212 | if (EVP_AEAD_CTX_open(&ctx, out2, &out_len2, lengths[IN], bufs[NONCE], | 219 | if (EVP_AEAD_CTX_open(ctx, out2, &out_len2, lengths[IN], bufs[NONCE], |
213 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { | 220 | lengths[NONCE], out, out_len, bufs[AD], lengths[AD])) { |
214 | fprintf(stderr, "Decrypted bad data on line %u\n", line_no); | 221 | fprintf(stderr, "Decrypted bad data on line %u\n", line_no); |
215 | return 0; | 222 | goto err; |
216 | } | 223 | } |
217 | 224 | ||
218 | EVP_AEAD_CTX_cleanup(&ctx); | 225 | ret = 1; |
219 | return 1; | 226 | |
227 | err: | ||
228 | EVP_AEAD_CTX_free(ctx); | ||
229 | |||
230 | return ret; | ||
220 | } | 231 | } |
221 | 232 | ||
222 | int | 233 | int |