summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2022-01-12 08:54:23 +0000
committertb <>2022-01-12 08:54:23 +0000
commit6e9abbc89c0864db2158ab63b540247e5853b8e6 (patch)
tree36169b7d276eb860947e6576028526373396ca94 /src
parentd040a2535c88a2cc45f298fdb891f0e3dd7ec0e0 (diff)
downloadopenbsd-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/Makefile7
-rw-r--r--src/regress/lib/libcrypto/aead/aeadtest.c45
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
3PROG= aeadtest 3PROG= aeadtest
4LDADD= -lcrypto 4#LDADD= -lcrypto
5LDADD= ${CRYPTO_INT} # XXX link dynamically after bump
5DPADD= ${LIBCRYPTO} 6DPADD= ${LIBCRYPTO}
6WARNINGS= Yes 7WARNINGS= Yes
7CFLAGS+= -DLIBRESSL_INTERNAL -Werror 8CFLAGS+= -DLIBRESSL_INTERNAL -DLIBRESSL_CRYPTO_INTERNAL -Werror
8 9
9REGRESS_TARGETS=regress-aeadtest 10REGRESS_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
159run_test_case(const EVP_AEAD* aead, unsigned char bufs[NUM_TYPES][BUF_MAX], 159run_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
222int 233int