diff options
Diffstat (limited to 'src/lib/libcrypto/evp')
| -rw-r--r-- | src/lib/libcrypto/evp/e_aes.c | 1035 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_bf.c | 30 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_camellia.c | 110 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_cast.c | 30 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_des.c | 44 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_des3.c | 69 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_idea.c | 26 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_xcbc_d.c | 8 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp.h | 30 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_cipher.c | 44 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_local.h | 4 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/p_lib.c | 18 |
12 files changed, 327 insertions, 1121 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c index f672c998eb..e1ae1e9a5b 100644 --- a/src/lib/libcrypto/evp/e_aes.c +++ b/src/lib/libcrypto/evp/e_aes.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_aes.c,v 1.62 2025/05/10 05:54:38 tb Exp $ */ | 1 | /* $OpenBSD: e_aes.c,v 1.83 2025/07/22 09:31:09 jsing Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -61,17 +61,13 @@ | |||
| 61 | #include <openssl/aes.h> | 61 | #include <openssl/aes.h> |
| 62 | #include <openssl/evp.h> | 62 | #include <openssl/evp.h> |
| 63 | 63 | ||
| 64 | #include "aes_local.h" | ||
| 64 | #include "err_local.h" | 65 | #include "err_local.h" |
| 65 | #include "evp_local.h" | 66 | #include "evp_local.h" |
| 66 | #include "modes_local.h" | 67 | #include "modes_local.h" |
| 67 | 68 | ||
| 68 | typedef struct { | 69 | typedef struct { |
| 69 | AES_KEY ks; | 70 | AES_KEY ks; |
| 70 | block128_f block; | ||
| 71 | union { | ||
| 72 | cbc128_f cbc; | ||
| 73 | ctr128_f ctr; | ||
| 74 | } stream; | ||
| 75 | } EVP_AES_KEY; | 71 | } EVP_AES_KEY; |
| 76 | 72 | ||
| 77 | typedef struct { | 73 | typedef struct { |
| @@ -84,15 +80,11 @@ typedef struct { | |||
| 84 | int taglen; | 80 | int taglen; |
| 85 | int iv_gen; /* It is OK to generate IVs */ | 81 | int iv_gen; /* It is OK to generate IVs */ |
| 86 | int tls_aad_len; /* TLS AAD length */ | 82 | int tls_aad_len; /* TLS AAD length */ |
| 87 | ctr128_f ctr; | ||
| 88 | } EVP_AES_GCM_CTX; | 83 | } EVP_AES_GCM_CTX; |
| 89 | 84 | ||
| 90 | typedef struct { | 85 | typedef struct { |
| 91 | AES_KEY ks1, ks2; /* AES key schedules to use */ | 86 | AES_KEY ks1, ks2; /* AES key schedules to use */ |
| 92 | XTS128_CONTEXT xts; | 87 | XTS128_CONTEXT xts; /* XXX - replace with flags. */ |
| 93 | void (*stream)(const unsigned char *in, unsigned char *out, | ||
| 94 | size_t length, const AES_KEY *key1, const AES_KEY *key2, | ||
| 95 | const unsigned char iv[16]); | ||
| 96 | } EVP_AES_XTS_CTX; | 88 | } EVP_AES_XTS_CTX; |
| 97 | 89 | ||
| 98 | typedef struct { | 90 | typedef struct { |
| @@ -103,99 +95,17 @@ typedef struct { | |||
| 103 | int len_set; /* Set if message length set */ | 95 | int len_set; /* Set if message length set */ |
| 104 | int L, M; /* L and M parameters from RFC3610 */ | 96 | int L, M; /* L and M parameters from RFC3610 */ |
| 105 | CCM128_CONTEXT ccm; | 97 | CCM128_CONTEXT ccm; |
| 106 | ccm128_f str; | ||
| 107 | } EVP_AES_CCM_CTX; | 98 | } EVP_AES_CCM_CTX; |
| 108 | 99 | ||
| 109 | #define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4)) | 100 | #define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4)) |
| 110 | 101 | ||
| 111 | #ifdef AES_CTR_ASM | ||
| 112 | void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out, | ||
| 113 | size_t blocks, const AES_KEY *key, | ||
| 114 | const unsigned char ivec[AES_BLOCK_SIZE]); | ||
| 115 | #endif | ||
| 116 | #ifdef AES_XTS_ASM | ||
| 117 | void AES_xts_encrypt(const char *inp, char *out, size_t len, | ||
| 118 | const AES_KEY *key1, const AES_KEY *key2, const unsigned char iv[16]); | ||
| 119 | void AES_xts_decrypt(const char *inp, char *out, size_t len, | ||
| 120 | const AES_KEY *key1, const AES_KEY *key2, const unsigned char iv[16]); | ||
| 121 | #endif | ||
| 122 | |||
| 123 | #if defined(AES_ASM) && ( \ | ||
| 124 | ((defined(__i386) || defined(__i386__) || \ | ||
| 125 | defined(_M_IX86)) && defined(OPENSSL_IA32_SSE2))|| \ | ||
| 126 | defined(__x86_64) || defined(__x86_64__) || \ | ||
| 127 | defined(_M_AMD64) || defined(_M_X64) || \ | ||
| 128 | defined(__INTEL__) ) | ||
| 129 | |||
| 130 | #include "x86_arch.h" | ||
| 131 | |||
| 132 | /* | ||
| 133 | * AES-NI section | ||
| 134 | */ | ||
| 135 | #define AESNI_CAPABLE (crypto_cpu_caps_ia32() & CPUCAP_MASK_AESNI) | ||
| 136 | |||
| 137 | int aesni_set_encrypt_key(const unsigned char *userKey, int bits, | ||
| 138 | AES_KEY *key); | ||
| 139 | int aesni_set_decrypt_key(const unsigned char *userKey, int bits, | ||
| 140 | AES_KEY *key); | ||
| 141 | |||
| 142 | void aesni_encrypt(const unsigned char *in, unsigned char *out, | ||
| 143 | const AES_KEY *key); | ||
| 144 | void aesni_decrypt(const unsigned char *in, unsigned char *out, | ||
| 145 | const AES_KEY *key); | ||
| 146 | |||
| 147 | void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out, | ||
| 148 | size_t length, const AES_KEY *key, int enc); | ||
| 149 | void aesni_cbc_encrypt(const unsigned char *in, unsigned char *out, | ||
| 150 | size_t length, const AES_KEY *key, unsigned char *ivec, int enc); | ||
| 151 | |||
| 152 | void aesni_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, | ||
| 153 | size_t blocks, const void *key, const unsigned char *ivec); | ||
| 154 | |||
| 155 | void aesni_xts_encrypt(const unsigned char *in, unsigned char *out, | ||
| 156 | size_t length, const AES_KEY *key1, const AES_KEY *key2, | ||
| 157 | const unsigned char iv[16]); | ||
| 158 | |||
| 159 | void aesni_xts_decrypt(const unsigned char *in, unsigned char *out, | ||
| 160 | size_t length, const AES_KEY *key1, const AES_KEY *key2, | ||
| 161 | const unsigned char iv[16]); | ||
| 162 | |||
| 163 | void aesni_ccm64_encrypt_blocks (const unsigned char *in, unsigned char *out, | ||
| 164 | size_t blocks, const void *key, const unsigned char ivec[16], | ||
| 165 | unsigned char cmac[16]); | ||
| 166 | |||
| 167 | void aesni_ccm64_decrypt_blocks (const unsigned char *in, unsigned char *out, | ||
| 168 | size_t blocks, const void *key, const unsigned char ivec[16], | ||
| 169 | unsigned char cmac[16]); | ||
| 170 | |||
| 171 | static int | 102 | static int |
| 172 | aesni_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 103 | aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
| 173 | const unsigned char *iv, int enc) | 104 | const unsigned char *iv, int enc) |
| 174 | { | 105 | { |
| 175 | int ret, mode; | 106 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 176 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | ||
| 177 | |||
| 178 | mode = ctx->cipher->flags & EVP_CIPH_MODE; | ||
| 179 | if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE) && | ||
| 180 | !enc) { | ||
| 181 | ret = aesni_set_decrypt_key(key, ctx->key_len * 8, | ||
| 182 | ctx->cipher_data); | ||
| 183 | dat->block = (block128_f)aesni_decrypt; | ||
| 184 | dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ? | ||
| 185 | (cbc128_f)aesni_cbc_encrypt : NULL; | ||
| 186 | } else { | ||
| 187 | ret = aesni_set_encrypt_key(key, ctx->key_len * 8, | ||
| 188 | ctx->cipher_data); | ||
| 189 | dat->block = (block128_f)aesni_encrypt; | ||
| 190 | if (mode == EVP_CIPH_CBC_MODE) | ||
| 191 | dat->stream.cbc = (cbc128_f)aesni_cbc_encrypt; | ||
| 192 | else if (mode == EVP_CIPH_CTR_MODE) | ||
| 193 | dat->stream.ctr = (ctr128_f)aesni_ctr32_encrypt_blocks; | ||
| 194 | else | ||
| 195 | dat->stream.cbc = NULL; | ||
| 196 | } | ||
| 197 | 107 | ||
| 198 | if (ret < 0) { | 108 | if (AES_set_encrypt_key(key, ctx->key_len * 8, &eak->ks) < 0) { |
| 199 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); | 109 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); |
| 200 | return 0; | 110 | return 0; |
| 201 | } | 111 | } |
| @@ -204,192 +114,65 @@ aesni_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | |||
| 204 | } | 114 | } |
| 205 | 115 | ||
| 206 | static int | 116 | static int |
| 207 | aesni_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 117 | aes_cbc_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
| 208 | const unsigned char *in, size_t len) | 118 | const unsigned char *iv, int encrypt) |
| 209 | { | ||
| 210 | aesni_cbc_encrypt(in, out, len, ctx->cipher_data, ctx->iv, | ||
| 211 | ctx->encrypt); | ||
| 212 | |||
| 213 | return 1; | ||
| 214 | } | ||
| 215 | |||
| 216 | static int | ||
| 217 | aesni_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
| 218 | const unsigned char *in, size_t len) | ||
| 219 | { | ||
| 220 | size_t bl = ctx->cipher->block_size; | ||
| 221 | |||
| 222 | if (len < bl) | ||
| 223 | return 1; | ||
| 224 | |||
| 225 | aesni_ecb_encrypt(in, out, len, ctx->cipher_data, ctx->encrypt); | ||
| 226 | |||
| 227 | return 1; | ||
| 228 | } | ||
| 229 | |||
| 230 | static int | ||
| 231 | aesni_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
| 232 | const unsigned char *iv, int enc) | ||
| 233 | { | 119 | { |
| 234 | EVP_AES_GCM_CTX *gctx = ctx->cipher_data; | 120 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 235 | 121 | ||
| 236 | if (!iv && !key) | 122 | if (encrypt) { |
| 237 | return 1; | 123 | if (AES_set_encrypt_key(key, ctx->key_len * 8, &eak->ks) < 0) { |
| 238 | if (key) { | 124 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); |
| 239 | aesni_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks); | 125 | return 0; |
| 240 | CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks, | ||
| 241 | (block128_f)aesni_encrypt); | ||
| 242 | gctx->ctr = (ctr128_f)aesni_ctr32_encrypt_blocks; | ||
| 243 | /* If we have an iv can set it directly, otherwise use | ||
| 244 | * saved IV. | ||
| 245 | */ | ||
| 246 | if (iv == NULL && gctx->iv_set) | ||
| 247 | iv = gctx->iv; | ||
| 248 | if (iv) { | ||
| 249 | CRYPTO_gcm128_setiv(&gctx->gcm, iv, gctx->ivlen); | ||
| 250 | gctx->iv_set = 1; | ||
| 251 | } | 126 | } |
| 252 | gctx->key_set = 1; | ||
| 253 | } else { | 127 | } else { |
| 254 | /* If key set use IV, otherwise copy */ | 128 | if (AES_set_decrypt_key(key, ctx->key_len * 8, &eak->ks) < 0) { |
| 255 | if (gctx->key_set) | 129 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); |
| 256 | CRYPTO_gcm128_setiv(&gctx->gcm, iv, gctx->ivlen); | 130 | return 0; |
| 257 | else | ||
| 258 | memcpy(gctx->iv, iv, gctx->ivlen); | ||
| 259 | gctx->iv_set = 1; | ||
| 260 | gctx->iv_gen = 0; | ||
| 261 | } | ||
| 262 | return 1; | ||
| 263 | } | ||
| 264 | |||
| 265 | static int | ||
| 266 | aesni_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
| 267 | const unsigned char *iv, int enc) | ||
| 268 | { | ||
| 269 | EVP_AES_XTS_CTX *xctx = ctx->cipher_data; | ||
| 270 | |||
| 271 | if (!iv && !key) | ||
| 272 | return 1; | ||
| 273 | |||
| 274 | if (key) { | ||
| 275 | /* key_len is two AES keys */ | ||
| 276 | if (enc) { | ||
| 277 | aesni_set_encrypt_key(key, ctx->key_len * 4, | ||
| 278 | &xctx->ks1); | ||
| 279 | xctx->xts.block1 = (block128_f)aesni_encrypt; | ||
| 280 | xctx->stream = aesni_xts_encrypt; | ||
| 281 | } else { | ||
| 282 | aesni_set_decrypt_key(key, ctx->key_len * 4, | ||
| 283 | &xctx->ks1); | ||
| 284 | xctx->xts.block1 = (block128_f)aesni_decrypt; | ||
| 285 | xctx->stream = aesni_xts_decrypt; | ||
| 286 | } | 131 | } |
| 287 | |||
| 288 | aesni_set_encrypt_key(key + ctx->key_len / 2, | ||
| 289 | ctx->key_len * 4, &xctx->ks2); | ||
| 290 | xctx->xts.block2 = (block128_f)aesni_encrypt; | ||
| 291 | |||
| 292 | xctx->xts.key1 = &xctx->ks1; | ||
| 293 | } | ||
| 294 | |||
| 295 | if (iv) { | ||
| 296 | xctx->xts.key2 = &xctx->ks2; | ||
| 297 | memcpy(ctx->iv, iv, 16); | ||
| 298 | } | 132 | } |
| 299 | 133 | ||
| 300 | return 1; | 134 | return 1; |
| 301 | } | 135 | } |
| 302 | 136 | ||
| 303 | static int | 137 | static int |
| 304 | aesni_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 138 | aes_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 305 | const unsigned char *iv, int enc) | 139 | const unsigned char *in, size_t len) |
| 306 | { | 140 | { |
| 307 | EVP_AES_CCM_CTX *cctx = ctx->cipher_data; | 141 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 142 | |||
| 143 | AES_cbc_encrypt(in, out, len, &eak->ks, ctx->iv, ctx->encrypt); | ||
| 308 | 144 | ||
| 309 | if (!iv && !key) | ||
| 310 | return 1; | ||
| 311 | if (key) { | ||
| 312 | aesni_set_encrypt_key(key, ctx->key_len * 8, &cctx->ks); | ||
| 313 | CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L, | ||
| 314 | &cctx->ks, (block128_f)aesni_encrypt); | ||
| 315 | cctx->str = enc ? (ccm128_f)aesni_ccm64_encrypt_blocks : | ||
| 316 | (ccm128_f)aesni_ccm64_decrypt_blocks; | ||
| 317 | cctx->key_set = 1; | ||
| 318 | } | ||
| 319 | if (iv) { | ||
| 320 | memcpy(ctx->iv, iv, 15 - cctx->L); | ||
| 321 | cctx->iv_set = 1; | ||
| 322 | } | ||
| 323 | return 1; | 145 | return 1; |
| 324 | } | 146 | } |
| 325 | 147 | ||
| 326 | #endif | ||
| 327 | |||
| 328 | static int | 148 | static int |
| 329 | aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 149 | aes_ecb_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
| 330 | const unsigned char *iv, int enc) | 150 | const unsigned char *iv, int encrypt) |
| 331 | { | 151 | { |
| 332 | int ret, mode; | 152 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 333 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | ||
| 334 | |||
| 335 | mode = ctx->cipher->flags & EVP_CIPH_MODE; | ||
| 336 | 153 | ||
| 337 | if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE) && !enc) { | 154 | if (encrypt) { |
| 338 | ret = AES_set_decrypt_key(key, ctx->key_len * 8, &dat->ks); | 155 | if (AES_set_encrypt_key(key, ctx->key_len * 8, &eak->ks) < 0) { |
| 339 | dat->block = (block128_f)AES_decrypt; | 156 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); |
| 340 | dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ? | 157 | return 0; |
| 341 | (cbc128_f)AES_cbc_encrypt : NULL; | 158 | } |
| 342 | } else { | 159 | } else { |
| 343 | ret = AES_set_encrypt_key(key, ctx->key_len * 8, &dat->ks); | 160 | if (AES_set_decrypt_key(key, ctx->key_len * 8, &eak->ks) < 0) { |
| 344 | dat->block = (block128_f)AES_encrypt; | 161 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); |
| 345 | dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ? | 162 | return 0; |
| 346 | (cbc128_f)AES_cbc_encrypt : NULL; | 163 | } |
| 347 | #ifdef AES_CTR_ASM | ||
| 348 | if (mode == EVP_CIPH_CTR_MODE) | ||
| 349 | dat->stream.ctr = (ctr128_f)AES_ctr32_encrypt; | ||
| 350 | #endif | ||
| 351 | } | ||
| 352 | |||
| 353 | if (ret < 0) { | ||
| 354 | EVPerror(EVP_R_AES_KEY_SETUP_FAILED); | ||
| 355 | return 0; | ||
| 356 | } | 164 | } |
| 357 | 165 | ||
| 358 | return 1; | 166 | return 1; |
| 359 | } | 167 | } |
| 360 | 168 | ||
| 361 | static int | 169 | static int |
| 362 | aes_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
| 363 | const unsigned char *in, size_t len) | ||
| 364 | { | ||
| 365 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | ||
| 366 | |||
| 367 | if (dat->stream.cbc) | ||
| 368 | (*dat->stream.cbc)(in, out, len, &dat->ks, ctx->iv, | ||
| 369 | ctx->encrypt); | ||
| 370 | else if (ctx->encrypt) | ||
| 371 | CRYPTO_cbc128_encrypt(in, out, len, &dat->ks, ctx->iv, | ||
| 372 | dat->block); | ||
| 373 | else | ||
| 374 | CRYPTO_cbc128_decrypt(in, out, len, &dat->ks, ctx->iv, | ||
| 375 | dat->block); | ||
| 376 | |||
| 377 | return 1; | ||
| 378 | } | ||
| 379 | |||
| 380 | static int | ||
| 381 | aes_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 170 | aes_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 382 | const unsigned char *in, size_t len) | 171 | const unsigned char *in, size_t len) |
| 383 | { | 172 | { |
| 384 | size_t bl = ctx->cipher->block_size; | 173 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 385 | size_t i; | ||
| 386 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | ||
| 387 | 174 | ||
| 388 | if (len < bl) | 175 | aes_ecb_encrypt_internal(in, out, len, &eak->ks, ctx->encrypt); |
| 389 | return 1; | ||
| 390 | |||
| 391 | for (i = 0, len -= bl; i <= len; i += bl) | ||
| 392 | (*dat->block)(in + i, out + i, &dat->ks); | ||
| 393 | 176 | ||
| 394 | return 1; | 177 | return 1; |
| 395 | } | 178 | } |
| @@ -398,10 +181,10 @@ static int | |||
| 398 | aes_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 181 | aes_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 399 | const unsigned char *in, size_t len) | 182 | const unsigned char *in, size_t len) |
| 400 | { | 183 | { |
| 401 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | 184 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 185 | |||
| 186 | AES_ofb128_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num); | ||
| 402 | 187 | ||
| 403 | CRYPTO_ofb128_encrypt(in, out, len, &dat->ks, ctx->iv, &ctx->num, | ||
| 404 | dat->block); | ||
| 405 | return 1; | 188 | return 1; |
| 406 | } | 189 | } |
| 407 | 190 | ||
| @@ -409,10 +192,11 @@ static int | |||
| 409 | aes_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 192 | aes_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 410 | const unsigned char *in, size_t len) | 193 | const unsigned char *in, size_t len) |
| 411 | { | 194 | { |
| 412 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | 195 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 196 | |||
| 197 | AES_cfb128_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num, | ||
| 198 | ctx->encrypt); | ||
| 413 | 199 | ||
| 414 | CRYPTO_cfb128_encrypt(in, out, len, &dat->ks, ctx->iv, &ctx->num, | ||
| 415 | ctx->encrypt, dat->block); | ||
| 416 | return 1; | 200 | return 1; |
| 417 | } | 201 | } |
| 418 | 202 | ||
| @@ -420,10 +204,11 @@ static int | |||
| 420 | aes_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 204 | aes_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 421 | const unsigned char *in, size_t len) | 205 | const unsigned char *in, size_t len) |
| 422 | { | 206 | { |
| 423 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | 207 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 208 | |||
| 209 | AES_cfb8_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num, | ||
| 210 | ctx->encrypt); | ||
| 424 | 211 | ||
| 425 | CRYPTO_cfb128_8_encrypt(in, out, len, &dat->ks, ctx->iv, &ctx->num, | ||
| 426 | ctx->encrypt, dat->block); | ||
| 427 | return 1; | 212 | return 1; |
| 428 | } | 213 | } |
| 429 | 214 | ||
| @@ -431,24 +216,25 @@ static int | |||
| 431 | aes_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 216 | aes_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 432 | const unsigned char *in, size_t len) | 217 | const unsigned char *in, size_t len) |
| 433 | { | 218 | { |
| 434 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | 219 | EVP_AES_KEY *eak = ctx->cipher_data; |
| 435 | 220 | ||
| 436 | if (ctx->flags&EVP_CIPH_FLAG_LENGTH_BITS) { | 221 | if ((ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) != 0) { |
| 437 | CRYPTO_cfb128_1_encrypt(in, out, len, &dat->ks, ctx->iv, | 222 | AES_cfb1_encrypt(in, out, len, &eak->ks, ctx->iv, &ctx->num, |
| 438 | &ctx->num, ctx->encrypt, dat->block); | 223 | ctx->encrypt); |
| 439 | return 1; | 224 | return 1; |
| 440 | } | 225 | } |
| 441 | 226 | ||
| 442 | while (len >= MAXBITCHUNK) { | 227 | while (len >= MAXBITCHUNK) { |
| 443 | CRYPTO_cfb128_1_encrypt(in, out, MAXBITCHUNK*8, &dat->ks, | 228 | AES_cfb1_encrypt(in, out, MAXBITCHUNK * 8, &eak->ks, ctx->iv, |
| 444 | ctx->iv, &ctx->num, ctx->encrypt, dat->block); | 229 | &ctx->num, ctx->encrypt); |
| 445 | len -= MAXBITCHUNK; | 230 | len -= MAXBITCHUNK; |
| 446 | in += MAXBITCHUNK; | 231 | in += MAXBITCHUNK; |
| 447 | out += MAXBITCHUNK; | 232 | out += MAXBITCHUNK; |
| 448 | } | 233 | } |
| 449 | if (len) | 234 | if (len > 0) { |
| 450 | CRYPTO_cfb128_1_encrypt(in, out, len*8, &dat->ks, | 235 | AES_cfb1_encrypt(in, out, len * 8, &eak->ks, ctx->iv, &ctx->num, |
| 451 | ctx->iv, &ctx->num, ctx->encrypt, dat->block); | 236 | ctx->encrypt); |
| 237 | } | ||
| 452 | 238 | ||
| 453 | return 1; | 239 | return 1; |
| 454 | } | 240 | } |
| @@ -457,40 +243,23 @@ static int | |||
| 457 | aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 243 | aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
| 458 | const unsigned char *in, size_t len) | 244 | const unsigned char *in, size_t len) |
| 459 | { | 245 | { |
| 246 | EVP_AES_KEY *eak = ctx->cipher_data; | ||
| 460 | unsigned int num = ctx->num; | 247 | unsigned int num = ctx->num; |
| 461 | EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; | ||
| 462 | 248 | ||
| 463 | if (dat->stream.ctr) | 249 | AES_ctr128_encrypt(in, out, len, &eak->ks, ctx->iv, ctx->buf, &num); |
| 464 | CRYPTO_ctr128_encrypt_ctr32(in, out, len, &dat->ks, | 250 | |
| 465 | ctx->iv, ctx->buf, &num, dat->stream.ctr); | ||
| 466 | else | ||
| 467 | CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, | ||
| 468 | ctx->iv, ctx->buf, &num, dat->block); | ||
| 469 | ctx->num = (size_t)num; | 251 | ctx->num = (size_t)num; |
| 252 | |||
| 470 | return 1; | 253 | return 1; |
| 471 | } | 254 | } |
| 472 | 255 | ||
| 473 | |||
| 474 | #ifdef AESNI_CAPABLE | ||
| 475 | static const EVP_CIPHER aesni_128_cbc = { | ||
| 476 | .nid = NID_aes_128_cbc, | ||
| 477 | .block_size = 16, | ||
| 478 | .key_len = 16, | ||
| 479 | .iv_len = 16, | ||
| 480 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | ||
| 481 | .init = aesni_init_key, | ||
| 482 | .do_cipher = aesni_cbc_cipher, | ||
| 483 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 484 | }; | ||
| 485 | #endif | ||
| 486 | |||
| 487 | static const EVP_CIPHER aes_128_cbc = { | 256 | static const EVP_CIPHER aes_128_cbc = { |
| 488 | .nid = NID_aes_128_cbc, | 257 | .nid = NID_aes_128_cbc, |
| 489 | .block_size = 16, | 258 | .block_size = 16, |
| 490 | .key_len = 16, | 259 | .key_len = 16, |
| 491 | .iv_len = 16, | 260 | .iv_len = 16, |
| 492 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | 261 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, |
| 493 | .init = aes_init_key, | 262 | .init = aes_cbc_init_key, |
| 494 | .do_cipher = aes_cbc_cipher, | 263 | .do_cipher = aes_cbc_cipher, |
| 495 | .ctx_size = sizeof(EVP_AES_KEY), | 264 | .ctx_size = sizeof(EVP_AES_KEY), |
| 496 | }; | 265 | }; |
| @@ -498,34 +267,17 @@ static const EVP_CIPHER aes_128_cbc = { | |||
| 498 | const EVP_CIPHER * | 267 | const EVP_CIPHER * |
| 499 | EVP_aes_128_cbc(void) | 268 | EVP_aes_128_cbc(void) |
| 500 | { | 269 | { |
| 501 | #ifdef AESNI_CAPABLE | ||
| 502 | return AESNI_CAPABLE ? &aesni_128_cbc : &aes_128_cbc; | ||
| 503 | #else | ||
| 504 | return &aes_128_cbc; | 270 | return &aes_128_cbc; |
| 505 | #endif | ||
| 506 | } | 271 | } |
| 507 | LCRYPTO_ALIAS(EVP_aes_128_cbc); | 272 | LCRYPTO_ALIAS(EVP_aes_128_cbc); |
| 508 | 273 | ||
| 509 | #ifdef AESNI_CAPABLE | ||
| 510 | static const EVP_CIPHER aesni_128_ecb = { | ||
| 511 | .nid = NID_aes_128_ecb, | ||
| 512 | .block_size = 16, | ||
| 513 | .key_len = 16, | ||
| 514 | .iv_len = 0, | ||
| 515 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | ||
| 516 | .init = aesni_init_key, | ||
| 517 | .do_cipher = aesni_ecb_cipher, | ||
| 518 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 519 | }; | ||
| 520 | #endif | ||
| 521 | |||
| 522 | static const EVP_CIPHER aes_128_ecb = { | 274 | static const EVP_CIPHER aes_128_ecb = { |
| 523 | .nid = NID_aes_128_ecb, | 275 | .nid = NID_aes_128_ecb, |
| 524 | .block_size = 16, | 276 | .block_size = 16, |
| 525 | .key_len = 16, | 277 | .key_len = 16, |
| 526 | .iv_len = 0, | 278 | .iv_len = 0, |
| 527 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | 279 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, |
| 528 | .init = aes_init_key, | 280 | .init = aes_ecb_init_key, |
| 529 | .do_cipher = aes_ecb_cipher, | 281 | .do_cipher = aes_ecb_cipher, |
| 530 | .ctx_size = sizeof(EVP_AES_KEY), | 282 | .ctx_size = sizeof(EVP_AES_KEY), |
| 531 | }; | 283 | }; |
| @@ -533,27 +285,10 @@ static const EVP_CIPHER aes_128_ecb = { | |||
| 533 | const EVP_CIPHER * | 285 | const EVP_CIPHER * |
| 534 | EVP_aes_128_ecb(void) | 286 | EVP_aes_128_ecb(void) |
| 535 | { | 287 | { |
| 536 | #ifdef AESNI_CAPABLE | ||
| 537 | return AESNI_CAPABLE ? &aesni_128_ecb : &aes_128_ecb; | ||
| 538 | #else | ||
| 539 | return &aes_128_ecb; | 288 | return &aes_128_ecb; |
| 540 | #endif | ||
| 541 | } | 289 | } |
| 542 | LCRYPTO_ALIAS(EVP_aes_128_ecb); | 290 | LCRYPTO_ALIAS(EVP_aes_128_ecb); |
| 543 | 291 | ||
| 544 | #ifdef AESNI_CAPABLE | ||
| 545 | static const EVP_CIPHER aesni_128_ofb = { | ||
| 546 | .nid = NID_aes_128_ofb128, | ||
| 547 | .block_size = 1, | ||
| 548 | .key_len = 16, | ||
| 549 | .iv_len = 16, | ||
| 550 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | ||
| 551 | .init = aesni_init_key, | ||
| 552 | .do_cipher = aes_ofb_cipher, | ||
| 553 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 554 | }; | ||
| 555 | #endif | ||
| 556 | |||
| 557 | static const EVP_CIPHER aes_128_ofb = { | 292 | static const EVP_CIPHER aes_128_ofb = { |
| 558 | .nid = NID_aes_128_ofb128, | 293 | .nid = NID_aes_128_ofb128, |
| 559 | .block_size = 1, | 294 | .block_size = 1, |
| @@ -568,27 +303,10 @@ static const EVP_CIPHER aes_128_ofb = { | |||
| 568 | const EVP_CIPHER * | 303 | const EVP_CIPHER * |
| 569 | EVP_aes_128_ofb(void) | 304 | EVP_aes_128_ofb(void) |
| 570 | { | 305 | { |
| 571 | #ifdef AESNI_CAPABLE | ||
| 572 | return AESNI_CAPABLE ? &aesni_128_ofb : &aes_128_ofb; | ||
| 573 | #else | ||
| 574 | return &aes_128_ofb; | 306 | return &aes_128_ofb; |
| 575 | #endif | ||
| 576 | } | 307 | } |
| 577 | LCRYPTO_ALIAS(EVP_aes_128_ofb); | 308 | LCRYPTO_ALIAS(EVP_aes_128_ofb); |
| 578 | 309 | ||
| 579 | #ifdef AESNI_CAPABLE | ||
| 580 | static const EVP_CIPHER aesni_128_cfb = { | ||
| 581 | .nid = NID_aes_128_cfb128, | ||
| 582 | .block_size = 1, | ||
| 583 | .key_len = 16, | ||
| 584 | .iv_len = 16, | ||
| 585 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE, | ||
| 586 | .init = aesni_init_key, | ||
| 587 | .do_cipher = aes_cfb_cipher, | ||
| 588 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 589 | }; | ||
| 590 | #endif | ||
| 591 | |||
| 592 | static const EVP_CIPHER aes_128_cfb = { | 310 | static const EVP_CIPHER aes_128_cfb = { |
| 593 | .nid = NID_aes_128_cfb128, | 311 | .nid = NID_aes_128_cfb128, |
| 594 | .block_size = 1, | 312 | .block_size = 1, |
| @@ -603,27 +321,10 @@ static const EVP_CIPHER aes_128_cfb = { | |||
| 603 | const EVP_CIPHER * | 321 | const EVP_CIPHER * |
| 604 | EVP_aes_128_cfb128(void) | 322 | EVP_aes_128_cfb128(void) |
| 605 | { | 323 | { |
| 606 | #ifdef AESNI_CAPABLE | ||
| 607 | return AESNI_CAPABLE ? &aesni_128_cfb : &aes_128_cfb; | ||
| 608 | #else | ||
| 609 | return &aes_128_cfb; | 324 | return &aes_128_cfb; |
| 610 | #endif | ||
| 611 | } | 325 | } |
| 612 | LCRYPTO_ALIAS(EVP_aes_128_cfb128); | 326 | LCRYPTO_ALIAS(EVP_aes_128_cfb128); |
| 613 | 327 | ||
| 614 | #ifdef AESNI_CAPABLE | ||
| 615 | static const EVP_CIPHER aesni_128_cfb1 = { | ||
| 616 | .nid = NID_aes_128_cfb1, | ||
| 617 | .block_size = 1, | ||
| 618 | .key_len = 16, | ||
| 619 | .iv_len = 16, | ||
| 620 | .flags = EVP_CIPH_CFB_MODE, | ||
| 621 | .init = aesni_init_key, | ||
| 622 | .do_cipher = aes_cfb1_cipher, | ||
| 623 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 624 | }; | ||
| 625 | #endif | ||
| 626 | |||
| 627 | static const EVP_CIPHER aes_128_cfb1 = { | 328 | static const EVP_CIPHER aes_128_cfb1 = { |
| 628 | .nid = NID_aes_128_cfb1, | 329 | .nid = NID_aes_128_cfb1, |
| 629 | .block_size = 1, | 330 | .block_size = 1, |
| @@ -638,27 +339,10 @@ static const EVP_CIPHER aes_128_cfb1 = { | |||
| 638 | const EVP_CIPHER * | 339 | const EVP_CIPHER * |
| 639 | EVP_aes_128_cfb1(void) | 340 | EVP_aes_128_cfb1(void) |
| 640 | { | 341 | { |
| 641 | #ifdef AESNI_CAPABLE | ||
| 642 | return AESNI_CAPABLE ? &aesni_128_cfb1 : &aes_128_cfb1; | ||
| 643 | #else | ||
| 644 | return &aes_128_cfb1; | 342 | return &aes_128_cfb1; |
| 645 | #endif | ||
| 646 | } | 343 | } |
| 647 | LCRYPTO_ALIAS(EVP_aes_128_cfb1); | 344 | LCRYPTO_ALIAS(EVP_aes_128_cfb1); |
| 648 | 345 | ||
| 649 | #ifdef AESNI_CAPABLE | ||
| 650 | static const EVP_CIPHER aesni_128_cfb8 = { | ||
| 651 | .nid = NID_aes_128_cfb8, | ||
| 652 | .block_size = 1, | ||
| 653 | .key_len = 16, | ||
| 654 | .iv_len = 16, | ||
| 655 | .flags = EVP_CIPH_CFB_MODE, | ||
| 656 | .init = aesni_init_key, | ||
| 657 | .do_cipher = aes_cfb8_cipher, | ||
| 658 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 659 | }; | ||
| 660 | #endif | ||
| 661 | |||
| 662 | static const EVP_CIPHER aes_128_cfb8 = { | 346 | static const EVP_CIPHER aes_128_cfb8 = { |
| 663 | .nid = NID_aes_128_cfb8, | 347 | .nid = NID_aes_128_cfb8, |
| 664 | .block_size = 1, | 348 | .block_size = 1, |
| @@ -673,27 +357,10 @@ static const EVP_CIPHER aes_128_cfb8 = { | |||
| 673 | const EVP_CIPHER * | 357 | const EVP_CIPHER * |
| 674 | EVP_aes_128_cfb8(void) | 358 | EVP_aes_128_cfb8(void) |
| 675 | { | 359 | { |
| 676 | #ifdef AESNI_CAPABLE | ||
| 677 | return AESNI_CAPABLE ? &aesni_128_cfb8 : &aes_128_cfb8; | ||
| 678 | #else | ||
| 679 | return &aes_128_cfb8; | 360 | return &aes_128_cfb8; |
| 680 | #endif | ||
| 681 | } | 361 | } |
| 682 | LCRYPTO_ALIAS(EVP_aes_128_cfb8); | 362 | LCRYPTO_ALIAS(EVP_aes_128_cfb8); |
| 683 | 363 | ||
| 684 | #ifdef AESNI_CAPABLE | ||
| 685 | static const EVP_CIPHER aesni_128_ctr = { | ||
| 686 | .nid = NID_aes_128_ctr, | ||
| 687 | .block_size = 1, | ||
| 688 | .key_len = 16, | ||
| 689 | .iv_len = 16, | ||
| 690 | .flags = EVP_CIPH_CTR_MODE, | ||
| 691 | .init = aesni_init_key, | ||
| 692 | .do_cipher = aes_ctr_cipher, | ||
| 693 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 694 | }; | ||
| 695 | #endif | ||
| 696 | |||
| 697 | static const EVP_CIPHER aes_128_ctr = { | 364 | static const EVP_CIPHER aes_128_ctr = { |
| 698 | .nid = NID_aes_128_ctr, | 365 | .nid = NID_aes_128_ctr, |
| 699 | .block_size = 1, | 366 | .block_size = 1, |
| @@ -708,35 +375,17 @@ static const EVP_CIPHER aes_128_ctr = { | |||
| 708 | const EVP_CIPHER * | 375 | const EVP_CIPHER * |
| 709 | EVP_aes_128_ctr(void) | 376 | EVP_aes_128_ctr(void) |
| 710 | { | 377 | { |
| 711 | #ifdef AESNI_CAPABLE | ||
| 712 | return AESNI_CAPABLE ? &aesni_128_ctr : &aes_128_ctr; | ||
| 713 | #else | ||
| 714 | return &aes_128_ctr; | 378 | return &aes_128_ctr; |
| 715 | #endif | ||
| 716 | } | 379 | } |
| 717 | LCRYPTO_ALIAS(EVP_aes_128_ctr); | 380 | LCRYPTO_ALIAS(EVP_aes_128_ctr); |
| 718 | 381 | ||
| 719 | |||
| 720 | #ifdef AESNI_CAPABLE | ||
| 721 | static const EVP_CIPHER aesni_192_cbc = { | ||
| 722 | .nid = NID_aes_192_cbc, | ||
| 723 | .block_size = 16, | ||
| 724 | .key_len = 24, | ||
| 725 | .iv_len = 16, | ||
| 726 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | ||
| 727 | .init = aesni_init_key, | ||
| 728 | .do_cipher = aesni_cbc_cipher, | ||
| 729 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 730 | }; | ||
| 731 | #endif | ||
| 732 | |||
| 733 | static const EVP_CIPHER aes_192_cbc = { | 382 | static const EVP_CIPHER aes_192_cbc = { |
| 734 | .nid = NID_aes_192_cbc, | 383 | .nid = NID_aes_192_cbc, |
| 735 | .block_size = 16, | 384 | .block_size = 16, |
| 736 | .key_len = 24, | 385 | .key_len = 24, |
| 737 | .iv_len = 16, | 386 | .iv_len = 16, |
| 738 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | 387 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, |
| 739 | .init = aes_init_key, | 388 | .init = aes_cbc_init_key, |
| 740 | .do_cipher = aes_cbc_cipher, | 389 | .do_cipher = aes_cbc_cipher, |
| 741 | .ctx_size = sizeof(EVP_AES_KEY), | 390 | .ctx_size = sizeof(EVP_AES_KEY), |
| 742 | }; | 391 | }; |
| @@ -744,34 +393,17 @@ static const EVP_CIPHER aes_192_cbc = { | |||
| 744 | const EVP_CIPHER * | 393 | const EVP_CIPHER * |
| 745 | EVP_aes_192_cbc(void) | 394 | EVP_aes_192_cbc(void) |
| 746 | { | 395 | { |
| 747 | #ifdef AESNI_CAPABLE | ||
| 748 | return AESNI_CAPABLE ? &aesni_192_cbc : &aes_192_cbc; | ||
| 749 | #else | ||
| 750 | return &aes_192_cbc; | 396 | return &aes_192_cbc; |
| 751 | #endif | ||
| 752 | } | 397 | } |
| 753 | LCRYPTO_ALIAS(EVP_aes_192_cbc); | 398 | LCRYPTO_ALIAS(EVP_aes_192_cbc); |
| 754 | 399 | ||
| 755 | #ifdef AESNI_CAPABLE | ||
| 756 | static const EVP_CIPHER aesni_192_ecb = { | ||
| 757 | .nid = NID_aes_192_ecb, | ||
| 758 | .block_size = 16, | ||
| 759 | .key_len = 24, | ||
| 760 | .iv_len = 0, | ||
| 761 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | ||
| 762 | .init = aesni_init_key, | ||
| 763 | .do_cipher = aesni_ecb_cipher, | ||
| 764 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 765 | }; | ||
| 766 | #endif | ||
| 767 | |||
| 768 | static const EVP_CIPHER aes_192_ecb = { | 400 | static const EVP_CIPHER aes_192_ecb = { |
| 769 | .nid = NID_aes_192_ecb, | 401 | .nid = NID_aes_192_ecb, |
| 770 | .block_size = 16, | 402 | .block_size = 16, |
| 771 | .key_len = 24, | 403 | .key_len = 24, |
| 772 | .iv_len = 0, | 404 | .iv_len = 0, |
| 773 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | 405 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, |
| 774 | .init = aes_init_key, | 406 | .init = aes_ecb_init_key, |
| 775 | .do_cipher = aes_ecb_cipher, | 407 | .do_cipher = aes_ecb_cipher, |
| 776 | .ctx_size = sizeof(EVP_AES_KEY), | 408 | .ctx_size = sizeof(EVP_AES_KEY), |
| 777 | }; | 409 | }; |
| @@ -779,27 +411,10 @@ static const EVP_CIPHER aes_192_ecb = { | |||
| 779 | const EVP_CIPHER * | 411 | const EVP_CIPHER * |
| 780 | EVP_aes_192_ecb(void) | 412 | EVP_aes_192_ecb(void) |
| 781 | { | 413 | { |
| 782 | #ifdef AESNI_CAPABLE | ||
| 783 | return AESNI_CAPABLE ? &aesni_192_ecb : &aes_192_ecb; | ||
| 784 | #else | ||
| 785 | return &aes_192_ecb; | 414 | return &aes_192_ecb; |
| 786 | #endif | ||
| 787 | } | 415 | } |
| 788 | LCRYPTO_ALIAS(EVP_aes_192_ecb); | 416 | LCRYPTO_ALIAS(EVP_aes_192_ecb); |
| 789 | 417 | ||
| 790 | #ifdef AESNI_CAPABLE | ||
| 791 | static const EVP_CIPHER aesni_192_ofb = { | ||
| 792 | .nid = NID_aes_192_ofb128, | ||
| 793 | .block_size = 1, | ||
| 794 | .key_len = 24, | ||
| 795 | .iv_len = 16, | ||
| 796 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | ||
| 797 | .init = aesni_init_key, | ||
| 798 | .do_cipher = aes_ofb_cipher, | ||
| 799 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 800 | }; | ||
| 801 | #endif | ||
| 802 | |||
| 803 | static const EVP_CIPHER aes_192_ofb = { | 418 | static const EVP_CIPHER aes_192_ofb = { |
| 804 | .nid = NID_aes_192_ofb128, | 419 | .nid = NID_aes_192_ofb128, |
| 805 | .block_size = 1, | 420 | .block_size = 1, |
| @@ -814,27 +429,10 @@ static const EVP_CIPHER aes_192_ofb = { | |||
| 814 | const EVP_CIPHER * | 429 | const EVP_CIPHER * |
| 815 | EVP_aes_192_ofb(void) | 430 | EVP_aes_192_ofb(void) |
| 816 | { | 431 | { |
| 817 | #ifdef AESNI_CAPABLE | ||
| 818 | return AESNI_CAPABLE ? &aesni_192_ofb : &aes_192_ofb; | ||
| 819 | #else | ||
| 820 | return &aes_192_ofb; | 432 | return &aes_192_ofb; |
| 821 | #endif | ||
| 822 | } | 433 | } |
| 823 | LCRYPTO_ALIAS(EVP_aes_192_ofb); | 434 | LCRYPTO_ALIAS(EVP_aes_192_ofb); |
| 824 | 435 | ||
| 825 | #ifdef AESNI_CAPABLE | ||
| 826 | static const EVP_CIPHER aesni_192_cfb = { | ||
| 827 | .nid = NID_aes_192_cfb128, | ||
| 828 | .block_size = 1, | ||
| 829 | .key_len = 24, | ||
| 830 | .iv_len = 16, | ||
| 831 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE, | ||
| 832 | .init = aesni_init_key, | ||
| 833 | .do_cipher = aes_cfb_cipher, | ||
| 834 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 835 | }; | ||
| 836 | #endif | ||
| 837 | |||
| 838 | static const EVP_CIPHER aes_192_cfb = { | 436 | static const EVP_CIPHER aes_192_cfb = { |
| 839 | .nid = NID_aes_192_cfb128, | 437 | .nid = NID_aes_192_cfb128, |
| 840 | .block_size = 1, | 438 | .block_size = 1, |
| @@ -849,27 +447,10 @@ static const EVP_CIPHER aes_192_cfb = { | |||
| 849 | const EVP_CIPHER * | 447 | const EVP_CIPHER * |
| 850 | EVP_aes_192_cfb128(void) | 448 | EVP_aes_192_cfb128(void) |
| 851 | { | 449 | { |
| 852 | #ifdef AESNI_CAPABLE | ||
| 853 | return AESNI_CAPABLE ? &aesni_192_cfb : &aes_192_cfb; | ||
| 854 | #else | ||
| 855 | return &aes_192_cfb; | 450 | return &aes_192_cfb; |
| 856 | #endif | ||
| 857 | } | 451 | } |
| 858 | LCRYPTO_ALIAS(EVP_aes_192_cfb128); | 452 | LCRYPTO_ALIAS(EVP_aes_192_cfb128); |
| 859 | 453 | ||
| 860 | #ifdef AESNI_CAPABLE | ||
| 861 | static const EVP_CIPHER aesni_192_cfb1 = { | ||
| 862 | .nid = NID_aes_192_cfb1, | ||
| 863 | .block_size = 1, | ||
| 864 | .key_len = 24, | ||
| 865 | .iv_len = 16, | ||
| 866 | .flags = EVP_CIPH_CFB_MODE, | ||
| 867 | .init = aesni_init_key, | ||
| 868 | .do_cipher = aes_cfb1_cipher, | ||
| 869 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 870 | }; | ||
| 871 | #endif | ||
| 872 | |||
| 873 | static const EVP_CIPHER aes_192_cfb1 = { | 454 | static const EVP_CIPHER aes_192_cfb1 = { |
| 874 | .nid = NID_aes_192_cfb1, | 455 | .nid = NID_aes_192_cfb1, |
| 875 | .block_size = 1, | 456 | .block_size = 1, |
| @@ -884,27 +465,10 @@ static const EVP_CIPHER aes_192_cfb1 = { | |||
| 884 | const EVP_CIPHER * | 465 | const EVP_CIPHER * |
| 885 | EVP_aes_192_cfb1(void) | 466 | EVP_aes_192_cfb1(void) |
| 886 | { | 467 | { |
| 887 | #ifdef AESNI_CAPABLE | ||
| 888 | return AESNI_CAPABLE ? &aesni_192_cfb1 : &aes_192_cfb1; | ||
| 889 | #else | ||
| 890 | return &aes_192_cfb1; | 468 | return &aes_192_cfb1; |
| 891 | #endif | ||
| 892 | } | 469 | } |
| 893 | LCRYPTO_ALIAS(EVP_aes_192_cfb1); | 470 | LCRYPTO_ALIAS(EVP_aes_192_cfb1); |
| 894 | 471 | ||
| 895 | #ifdef AESNI_CAPABLE | ||
| 896 | static const EVP_CIPHER aesni_192_cfb8 = { | ||
| 897 | .nid = NID_aes_192_cfb8, | ||
| 898 | .block_size = 1, | ||
| 899 | .key_len = 24, | ||
| 900 | .iv_len = 16, | ||
| 901 | .flags = EVP_CIPH_CFB_MODE, | ||
| 902 | .init = aesni_init_key, | ||
| 903 | .do_cipher = aes_cfb8_cipher, | ||
| 904 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 905 | }; | ||
| 906 | #endif | ||
| 907 | |||
| 908 | static const EVP_CIPHER aes_192_cfb8 = { | 472 | static const EVP_CIPHER aes_192_cfb8 = { |
| 909 | .nid = NID_aes_192_cfb8, | 473 | .nid = NID_aes_192_cfb8, |
| 910 | .block_size = 1, | 474 | .block_size = 1, |
| @@ -919,27 +483,10 @@ static const EVP_CIPHER aes_192_cfb8 = { | |||
| 919 | const EVP_CIPHER * | 483 | const EVP_CIPHER * |
| 920 | EVP_aes_192_cfb8(void) | 484 | EVP_aes_192_cfb8(void) |
| 921 | { | 485 | { |
| 922 | #ifdef AESNI_CAPABLE | ||
| 923 | return AESNI_CAPABLE ? &aesni_192_cfb8 : &aes_192_cfb8; | ||
| 924 | #else | ||
| 925 | return &aes_192_cfb8; | 486 | return &aes_192_cfb8; |
| 926 | #endif | ||
| 927 | } | 487 | } |
| 928 | LCRYPTO_ALIAS(EVP_aes_192_cfb8); | 488 | LCRYPTO_ALIAS(EVP_aes_192_cfb8); |
| 929 | 489 | ||
| 930 | #ifdef AESNI_CAPABLE | ||
| 931 | static const EVP_CIPHER aesni_192_ctr = { | ||
| 932 | .nid = NID_aes_192_ctr, | ||
| 933 | .block_size = 1, | ||
| 934 | .key_len = 24, | ||
| 935 | .iv_len = 16, | ||
| 936 | .flags = EVP_CIPH_CTR_MODE, | ||
| 937 | .init = aesni_init_key, | ||
| 938 | .do_cipher = aes_ctr_cipher, | ||
| 939 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 940 | }; | ||
| 941 | #endif | ||
| 942 | |||
| 943 | static const EVP_CIPHER aes_192_ctr = { | 490 | static const EVP_CIPHER aes_192_ctr = { |
| 944 | .nid = NID_aes_192_ctr, | 491 | .nid = NID_aes_192_ctr, |
| 945 | .block_size = 1, | 492 | .block_size = 1, |
| @@ -954,35 +501,17 @@ static const EVP_CIPHER aes_192_ctr = { | |||
| 954 | const EVP_CIPHER * | 501 | const EVP_CIPHER * |
| 955 | EVP_aes_192_ctr(void) | 502 | EVP_aes_192_ctr(void) |
| 956 | { | 503 | { |
| 957 | #ifdef AESNI_CAPABLE | ||
| 958 | return AESNI_CAPABLE ? &aesni_192_ctr : &aes_192_ctr; | ||
| 959 | #else | ||
| 960 | return &aes_192_ctr; | 504 | return &aes_192_ctr; |
| 961 | #endif | ||
| 962 | } | 505 | } |
| 963 | LCRYPTO_ALIAS(EVP_aes_192_ctr); | 506 | LCRYPTO_ALIAS(EVP_aes_192_ctr); |
| 964 | 507 | ||
| 965 | |||
| 966 | #ifdef AESNI_CAPABLE | ||
| 967 | static const EVP_CIPHER aesni_256_cbc = { | ||
| 968 | .nid = NID_aes_256_cbc, | ||
| 969 | .block_size = 16, | ||
| 970 | .key_len = 32, | ||
| 971 | .iv_len = 16, | ||
| 972 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | ||
| 973 | .init = aesni_init_key, | ||
| 974 | .do_cipher = aesni_cbc_cipher, | ||
| 975 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 976 | }; | ||
| 977 | #endif | ||
| 978 | |||
| 979 | static const EVP_CIPHER aes_256_cbc = { | 508 | static const EVP_CIPHER aes_256_cbc = { |
| 980 | .nid = NID_aes_256_cbc, | 509 | .nid = NID_aes_256_cbc, |
| 981 | .block_size = 16, | 510 | .block_size = 16, |
| 982 | .key_len = 32, | 511 | .key_len = 32, |
| 983 | .iv_len = 16, | 512 | .iv_len = 16, |
| 984 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, | 513 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CBC_MODE, |
| 985 | .init = aes_init_key, | 514 | .init = aes_cbc_init_key, |
| 986 | .do_cipher = aes_cbc_cipher, | 515 | .do_cipher = aes_cbc_cipher, |
| 987 | .ctx_size = sizeof(EVP_AES_KEY), | 516 | .ctx_size = sizeof(EVP_AES_KEY), |
| 988 | }; | 517 | }; |
| @@ -990,34 +519,17 @@ static const EVP_CIPHER aes_256_cbc = { | |||
| 990 | const EVP_CIPHER * | 519 | const EVP_CIPHER * |
| 991 | EVP_aes_256_cbc(void) | 520 | EVP_aes_256_cbc(void) |
| 992 | { | 521 | { |
| 993 | #ifdef AESNI_CAPABLE | ||
| 994 | return AESNI_CAPABLE ? &aesni_256_cbc : &aes_256_cbc; | ||
| 995 | #else | ||
| 996 | return &aes_256_cbc; | 522 | return &aes_256_cbc; |
| 997 | #endif | ||
| 998 | } | 523 | } |
| 999 | LCRYPTO_ALIAS(EVP_aes_256_cbc); | 524 | LCRYPTO_ALIAS(EVP_aes_256_cbc); |
| 1000 | 525 | ||
| 1001 | #ifdef AESNI_CAPABLE | ||
| 1002 | static const EVP_CIPHER aesni_256_ecb = { | ||
| 1003 | .nid = NID_aes_256_ecb, | ||
| 1004 | .block_size = 16, | ||
| 1005 | .key_len = 32, | ||
| 1006 | .iv_len = 0, | ||
| 1007 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | ||
| 1008 | .init = aesni_init_key, | ||
| 1009 | .do_cipher = aesni_ecb_cipher, | ||
| 1010 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1011 | }; | ||
| 1012 | #endif | ||
| 1013 | |||
| 1014 | static const EVP_CIPHER aes_256_ecb = { | 526 | static const EVP_CIPHER aes_256_ecb = { |
| 1015 | .nid = NID_aes_256_ecb, | 527 | .nid = NID_aes_256_ecb, |
| 1016 | .block_size = 16, | 528 | .block_size = 16, |
| 1017 | .key_len = 32, | 529 | .key_len = 32, |
| 1018 | .iv_len = 0, | 530 | .iv_len = 0, |
| 1019 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, | 531 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE, |
| 1020 | .init = aes_init_key, | 532 | .init = aes_ecb_init_key, |
| 1021 | .do_cipher = aes_ecb_cipher, | 533 | .do_cipher = aes_ecb_cipher, |
| 1022 | .ctx_size = sizeof(EVP_AES_KEY), | 534 | .ctx_size = sizeof(EVP_AES_KEY), |
| 1023 | }; | 535 | }; |
| @@ -1025,27 +537,10 @@ static const EVP_CIPHER aes_256_ecb = { | |||
| 1025 | const EVP_CIPHER * | 537 | const EVP_CIPHER * |
| 1026 | EVP_aes_256_ecb(void) | 538 | EVP_aes_256_ecb(void) |
| 1027 | { | 539 | { |
| 1028 | #ifdef AESNI_CAPABLE | ||
| 1029 | return AESNI_CAPABLE ? &aesni_256_ecb : &aes_256_ecb; | ||
| 1030 | #else | ||
| 1031 | return &aes_256_ecb; | 540 | return &aes_256_ecb; |
| 1032 | #endif | ||
| 1033 | } | 541 | } |
| 1034 | LCRYPTO_ALIAS(EVP_aes_256_ecb); | 542 | LCRYPTO_ALIAS(EVP_aes_256_ecb); |
| 1035 | 543 | ||
| 1036 | #ifdef AESNI_CAPABLE | ||
| 1037 | static const EVP_CIPHER aesni_256_ofb = { | ||
| 1038 | .nid = NID_aes_256_ofb128, | ||
| 1039 | .block_size = 1, | ||
| 1040 | .key_len = 32, | ||
| 1041 | .iv_len = 16, | ||
| 1042 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_OFB_MODE, | ||
| 1043 | .init = aesni_init_key, | ||
| 1044 | .do_cipher = aes_ofb_cipher, | ||
| 1045 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1046 | }; | ||
| 1047 | #endif | ||
| 1048 | |||
| 1049 | static const EVP_CIPHER aes_256_ofb = { | 544 | static const EVP_CIPHER aes_256_ofb = { |
| 1050 | .nid = NID_aes_256_ofb128, | 545 | .nid = NID_aes_256_ofb128, |
| 1051 | .block_size = 1, | 546 | .block_size = 1, |
| @@ -1060,27 +555,10 @@ static const EVP_CIPHER aes_256_ofb = { | |||
| 1060 | const EVP_CIPHER * | 555 | const EVP_CIPHER * |
| 1061 | EVP_aes_256_ofb(void) | 556 | EVP_aes_256_ofb(void) |
| 1062 | { | 557 | { |
| 1063 | #ifdef AESNI_CAPABLE | ||
| 1064 | return AESNI_CAPABLE ? &aesni_256_ofb : &aes_256_ofb; | ||
| 1065 | #else | ||
| 1066 | return &aes_256_ofb; | 558 | return &aes_256_ofb; |
| 1067 | #endif | ||
| 1068 | } | 559 | } |
| 1069 | LCRYPTO_ALIAS(EVP_aes_256_ofb); | 560 | LCRYPTO_ALIAS(EVP_aes_256_ofb); |
| 1070 | 561 | ||
| 1071 | #ifdef AESNI_CAPABLE | ||
| 1072 | static const EVP_CIPHER aesni_256_cfb = { | ||
| 1073 | .nid = NID_aes_256_cfb128, | ||
| 1074 | .block_size = 1, | ||
| 1075 | .key_len = 32, | ||
| 1076 | .iv_len = 16, | ||
| 1077 | .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CFB_MODE, | ||
| 1078 | .init = aesni_init_key, | ||
| 1079 | .do_cipher = aes_cfb_cipher, | ||
| 1080 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1081 | }; | ||
| 1082 | #endif | ||
| 1083 | |||
| 1084 | static const EVP_CIPHER aes_256_cfb = { | 562 | static const EVP_CIPHER aes_256_cfb = { |
| 1085 | .nid = NID_aes_256_cfb128, | 563 | .nid = NID_aes_256_cfb128, |
| 1086 | .block_size = 1, | 564 | .block_size = 1, |
| @@ -1095,27 +573,10 @@ static const EVP_CIPHER aes_256_cfb = { | |||
| 1095 | const EVP_CIPHER * | 573 | const EVP_CIPHER * |
| 1096 | EVP_aes_256_cfb128(void) | 574 | EVP_aes_256_cfb128(void) |
| 1097 | { | 575 | { |
| 1098 | #ifdef AESNI_CAPABLE | ||
| 1099 | return AESNI_CAPABLE ? &aesni_256_cfb : &aes_256_cfb; | ||
| 1100 | #else | ||
| 1101 | return &aes_256_cfb; | 576 | return &aes_256_cfb; |
| 1102 | #endif | ||
| 1103 | } | 577 | } |
| 1104 | LCRYPTO_ALIAS(EVP_aes_256_cfb128); | 578 | LCRYPTO_ALIAS(EVP_aes_256_cfb128); |
| 1105 | 579 | ||
| 1106 | #ifdef AESNI_CAPABLE | ||
| 1107 | static const EVP_CIPHER aesni_256_cfb1 = { | ||
| 1108 | .nid = NID_aes_256_cfb1, | ||
| 1109 | .block_size = 1, | ||
| 1110 | .key_len = 32, | ||
| 1111 | .iv_len = 16, | ||
| 1112 | .flags = EVP_CIPH_CFB_MODE, | ||
| 1113 | .init = aesni_init_key, | ||
| 1114 | .do_cipher = aes_cfb1_cipher, | ||
| 1115 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1116 | }; | ||
| 1117 | #endif | ||
| 1118 | |||
| 1119 | static const EVP_CIPHER aes_256_cfb1 = { | 580 | static const EVP_CIPHER aes_256_cfb1 = { |
| 1120 | .nid = NID_aes_256_cfb1, | 581 | .nid = NID_aes_256_cfb1, |
| 1121 | .block_size = 1, | 582 | .block_size = 1, |
| @@ -1130,27 +591,10 @@ static const EVP_CIPHER aes_256_cfb1 = { | |||
| 1130 | const EVP_CIPHER * | 591 | const EVP_CIPHER * |
| 1131 | EVP_aes_256_cfb1(void) | 592 | EVP_aes_256_cfb1(void) |
| 1132 | { | 593 | { |
| 1133 | #ifdef AESNI_CAPABLE | ||
| 1134 | return AESNI_CAPABLE ? &aesni_256_cfb1 : &aes_256_cfb1; | ||
| 1135 | #else | ||
| 1136 | return &aes_256_cfb1; | 594 | return &aes_256_cfb1; |
| 1137 | #endif | ||
| 1138 | } | 595 | } |
| 1139 | LCRYPTO_ALIAS(EVP_aes_256_cfb1); | 596 | LCRYPTO_ALIAS(EVP_aes_256_cfb1); |
| 1140 | 597 | ||
| 1141 | #ifdef AESNI_CAPABLE | ||
| 1142 | static const EVP_CIPHER aesni_256_cfb8 = { | ||
| 1143 | .nid = NID_aes_256_cfb8, | ||
| 1144 | .block_size = 1, | ||
| 1145 | .key_len = 32, | ||
| 1146 | .iv_len = 16, | ||
| 1147 | .flags = EVP_CIPH_CFB_MODE, | ||
| 1148 | .init = aesni_init_key, | ||
| 1149 | .do_cipher = aes_cfb8_cipher, | ||
| 1150 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1151 | }; | ||
| 1152 | #endif | ||
| 1153 | |||
| 1154 | static const EVP_CIPHER aes_256_cfb8 = { | 598 | static const EVP_CIPHER aes_256_cfb8 = { |
| 1155 | .nid = NID_aes_256_cfb8, | 599 | .nid = NID_aes_256_cfb8, |
| 1156 | .block_size = 1, | 600 | .block_size = 1, |
| @@ -1165,27 +609,10 @@ static const EVP_CIPHER aes_256_cfb8 = { | |||
| 1165 | const EVP_CIPHER * | 609 | const EVP_CIPHER * |
| 1166 | EVP_aes_256_cfb8(void) | 610 | EVP_aes_256_cfb8(void) |
| 1167 | { | 611 | { |
| 1168 | #ifdef AESNI_CAPABLE | ||
| 1169 | return AESNI_CAPABLE ? &aesni_256_cfb8 : &aes_256_cfb8; | ||
| 1170 | #else | ||
| 1171 | return &aes_256_cfb8; | 612 | return &aes_256_cfb8; |
| 1172 | #endif | ||
| 1173 | } | 613 | } |
| 1174 | LCRYPTO_ALIAS(EVP_aes_256_cfb8); | 614 | LCRYPTO_ALIAS(EVP_aes_256_cfb8); |
| 1175 | 615 | ||
| 1176 | #ifdef AESNI_CAPABLE | ||
| 1177 | static const EVP_CIPHER aesni_256_ctr = { | ||
| 1178 | .nid = NID_aes_256_ctr, | ||
| 1179 | .block_size = 1, | ||
| 1180 | .key_len = 32, | ||
| 1181 | .iv_len = 16, | ||
| 1182 | .flags = EVP_CIPH_CTR_MODE, | ||
| 1183 | .init = aesni_init_key, | ||
| 1184 | .do_cipher = aes_ctr_cipher, | ||
| 1185 | .ctx_size = sizeof(EVP_AES_KEY), | ||
| 1186 | }; | ||
| 1187 | #endif | ||
| 1188 | |||
| 1189 | static const EVP_CIPHER aes_256_ctr = { | 616 | static const EVP_CIPHER aes_256_ctr = { |
| 1190 | .nid = NID_aes_256_ctr, | 617 | .nid = NID_aes_256_ctr, |
| 1191 | .block_size = 1, | 618 | .block_size = 1, |
| @@ -1200,11 +627,7 @@ static const EVP_CIPHER aes_256_ctr = { | |||
| 1200 | const EVP_CIPHER * | 627 | const EVP_CIPHER * |
| 1201 | EVP_aes_256_ctr(void) | 628 | EVP_aes_256_ctr(void) |
| 1202 | { | 629 | { |
| 1203 | #ifdef AESNI_CAPABLE | ||
| 1204 | return AESNI_CAPABLE ? &aesni_256_ctr : &aes_256_ctr; | ||
| 1205 | #else | ||
| 1206 | return &aes_256_ctr; | 630 | return &aes_256_ctr; |
| 1207 | #endif | ||
| 1208 | } | 631 | } |
| 1209 | LCRYPTO_ALIAS(EVP_aes_256_ctr); | 632 | LCRYPTO_ALIAS(EVP_aes_256_ctr); |
| 1210 | 633 | ||
| @@ -1385,19 +808,6 @@ aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) | |||
| 1385 | } | 808 | } |
| 1386 | } | 809 | } |
| 1387 | 810 | ||
| 1388 | static ctr128_f | ||
| 1389 | aes_gcm_set_key(AES_KEY *aes_key, GCM128_CONTEXT *gcm_ctx, | ||
| 1390 | const unsigned char *key, size_t key_len) | ||
| 1391 | { | ||
| 1392 | AES_set_encrypt_key(key, key_len * 8, aes_key); | ||
| 1393 | CRYPTO_gcm128_init(gcm_ctx, aes_key, (block128_f)AES_encrypt); | ||
| 1394 | #ifdef AES_CTR_ASM | ||
| 1395 | return (ctr128_f)AES_ctr32_encrypt; | ||
| 1396 | #else | ||
| 1397 | return NULL; | ||
| 1398 | #endif | ||
| 1399 | } | ||
| 1400 | |||
| 1401 | static int | 811 | static int |
| 1402 | aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 812 | aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
| 1403 | const unsigned char *iv, int enc) | 813 | const unsigned char *iv, int enc) |
| @@ -1407,8 +817,8 @@ aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | |||
| 1407 | if (!iv && !key) | 817 | if (!iv && !key) |
| 1408 | return 1; | 818 | return 1; |
| 1409 | if (key) { | 819 | if (key) { |
| 1410 | gctx->ctr = aes_gcm_set_key(&gctx->ks, &gctx->gcm, | 820 | AES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks); |
| 1411 | key, ctx->key_len); | 821 | CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks, aes_encrypt_block128); |
| 1412 | 822 | ||
| 1413 | /* If we have an iv can set it directly, otherwise use | 823 | /* If we have an iv can set it directly, otherwise use |
| 1414 | * saved IV. | 824 | * saved IV. |
| @@ -1468,14 +878,9 @@ aes_gcm_tls_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1468 | len -= EVP_GCM_TLS_EXPLICIT_IV_LEN + EVP_GCM_TLS_TAG_LEN; | 878 | len -= EVP_GCM_TLS_EXPLICIT_IV_LEN + EVP_GCM_TLS_TAG_LEN; |
| 1469 | if (ctx->encrypt) { | 879 | if (ctx->encrypt) { |
| 1470 | /* Encrypt payload */ | 880 | /* Encrypt payload */ |
| 1471 | if (gctx->ctr) { | 881 | if (CRYPTO_gcm128_encrypt_ctr32(&gctx->gcm, in, out, len, |
| 1472 | if (CRYPTO_gcm128_encrypt_ctr32(&gctx->gcm, in, out, | 882 | aes_ctr32_encrypt_ctr128f)) |
| 1473 | len, gctx->ctr)) | 883 | goto err; |
| 1474 | goto err; | ||
| 1475 | } else { | ||
| 1476 | if (CRYPTO_gcm128_encrypt(&gctx->gcm, in, out, len)) | ||
| 1477 | goto err; | ||
| 1478 | } | ||
| 1479 | out += len; | 884 | out += len; |
| 1480 | 885 | ||
| 1481 | /* Finally write tag */ | 886 | /* Finally write tag */ |
| @@ -1483,19 +888,15 @@ aes_gcm_tls_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1483 | rv = len + EVP_GCM_TLS_EXPLICIT_IV_LEN + EVP_GCM_TLS_TAG_LEN; | 888 | rv = len + EVP_GCM_TLS_EXPLICIT_IV_LEN + EVP_GCM_TLS_TAG_LEN; |
| 1484 | } else { | 889 | } else { |
| 1485 | /* Decrypt */ | 890 | /* Decrypt */ |
| 1486 | if (gctx->ctr) { | 891 | if (CRYPTO_gcm128_decrypt_ctr32(&gctx->gcm, in, out, len, |
| 1487 | if (CRYPTO_gcm128_decrypt_ctr32(&gctx->gcm, in, out, | 892 | aes_ctr32_encrypt_ctr128f)) |
| 1488 | len, gctx->ctr)) | 893 | goto err; |
| 1489 | goto err; | 894 | |
| 1490 | } else { | ||
| 1491 | if (CRYPTO_gcm128_decrypt(&gctx->gcm, in, out, len)) | ||
| 1492 | goto err; | ||
| 1493 | } | ||
| 1494 | /* Retrieve tag */ | 895 | /* Retrieve tag */ |
| 1495 | CRYPTO_gcm128_tag(&gctx->gcm, ctx->buf, EVP_GCM_TLS_TAG_LEN); | 896 | CRYPTO_gcm128_tag(&gctx->gcm, ctx->buf, EVP_GCM_TLS_TAG_LEN); |
| 1496 | 897 | ||
| 1497 | /* If tag mismatch wipe buffer */ | 898 | /* If tag mismatch wipe buffer */ |
| 1498 | if (memcmp(ctx->buf, in + len, EVP_GCM_TLS_TAG_LEN)) { | 899 | if (timingsafe_memcmp(ctx->buf, in + len, EVP_GCM_TLS_TAG_LEN) != 0) { |
| 1499 | explicit_bzero(out, len); | 900 | explicit_bzero(out, len); |
| 1500 | goto err; | 901 | goto err; |
| 1501 | } | 902 | } |
| @@ -1529,25 +930,13 @@ aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1529 | if (CRYPTO_gcm128_aad(&gctx->gcm, in, len)) | 930 | if (CRYPTO_gcm128_aad(&gctx->gcm, in, len)) |
| 1530 | return -1; | 931 | return -1; |
| 1531 | } else if (ctx->encrypt) { | 932 | } else if (ctx->encrypt) { |
| 1532 | if (gctx->ctr) { | 933 | if (CRYPTO_gcm128_encrypt_ctr32(&gctx->gcm, |
| 1533 | if (CRYPTO_gcm128_encrypt_ctr32(&gctx->gcm, | 934 | in, out, len, aes_ctr32_encrypt_ctr128f)) |
| 1534 | in, out, len, gctx->ctr)) | 935 | return -1; |
| 1535 | return -1; | ||
| 1536 | } else { | ||
| 1537 | if (CRYPTO_gcm128_encrypt(&gctx->gcm, | ||
| 1538 | in, out, len)) | ||
| 1539 | return -1; | ||
| 1540 | } | ||
| 1541 | } else { | 936 | } else { |
| 1542 | if (gctx->ctr) { | 937 | if (CRYPTO_gcm128_decrypt_ctr32(&gctx->gcm, |
| 1543 | if (CRYPTO_gcm128_decrypt_ctr32(&gctx->gcm, | 938 | in, out, len, aes_ctr32_encrypt_ctr128f)) |
| 1544 | in, out, len, gctx->ctr)) | 939 | return -1; |
| 1545 | return -1; | ||
| 1546 | } else { | ||
| 1547 | if (CRYPTO_gcm128_decrypt(&gctx->gcm, | ||
| 1548 | in, out, len)) | ||
| 1549 | return -1; | ||
| 1550 | } | ||
| 1551 | } | 940 | } |
| 1552 | return len; | 941 | return len; |
| 1553 | } else { | 942 | } else { |
| @@ -1576,22 +965,6 @@ aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1576 | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | \ | 965 | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | \ |
| 1577 | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) | 966 | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) |
| 1578 | 967 | ||
| 1579 | |||
| 1580 | #ifdef AESNI_CAPABLE | ||
| 1581 | static const EVP_CIPHER aesni_128_gcm = { | ||
| 1582 | .nid = NID_aes_128_gcm, | ||
| 1583 | .block_size = 1, | ||
| 1584 | .key_len = 16, | ||
| 1585 | .iv_len = 12, | ||
| 1586 | .flags = EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS | EVP_CIPH_GCM_MODE, | ||
| 1587 | .init = aesni_gcm_init_key, | ||
| 1588 | .do_cipher = aes_gcm_cipher, | ||
| 1589 | .cleanup = aes_gcm_cleanup, | ||
| 1590 | .ctx_size = sizeof(EVP_AES_GCM_CTX), | ||
| 1591 | .ctrl = aes_gcm_ctrl, | ||
| 1592 | }; | ||
| 1593 | #endif | ||
| 1594 | |||
| 1595 | static const EVP_CIPHER aes_128_gcm = { | 968 | static const EVP_CIPHER aes_128_gcm = { |
| 1596 | .nid = NID_aes_128_gcm, | 969 | .nid = NID_aes_128_gcm, |
| 1597 | .block_size = 1, | 970 | .block_size = 1, |
| @@ -1608,29 +981,10 @@ static const EVP_CIPHER aes_128_gcm = { | |||
| 1608 | const EVP_CIPHER * | 981 | const EVP_CIPHER * |
| 1609 | EVP_aes_128_gcm(void) | 982 | EVP_aes_128_gcm(void) |
| 1610 | { | 983 | { |
| 1611 | #ifdef AESNI_CAPABLE | ||
| 1612 | return AESNI_CAPABLE ? &aesni_128_gcm : &aes_128_gcm; | ||
| 1613 | #else | ||
| 1614 | return &aes_128_gcm; | 984 | return &aes_128_gcm; |
| 1615 | #endif | ||
| 1616 | } | 985 | } |
| 1617 | LCRYPTO_ALIAS(EVP_aes_128_gcm); | 986 | LCRYPTO_ALIAS(EVP_aes_128_gcm); |
| 1618 | 987 | ||
| 1619 | #ifdef AESNI_CAPABLE | ||
| 1620 | static const EVP_CIPHER aesni_192_gcm = { | ||
| 1621 | .nid = NID_aes_192_gcm, | ||
| 1622 | .block_size = 1, | ||
| 1623 | .key_len = 24, | ||
| 1624 | .iv_len = 12, | ||
| 1625 | .flags = EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS | EVP_CIPH_GCM_MODE, | ||
| 1626 | .init = aesni_gcm_init_key, | ||
| 1627 | .do_cipher = aes_gcm_cipher, | ||
| 1628 | .cleanup = aes_gcm_cleanup, | ||
| 1629 | .ctx_size = sizeof(EVP_AES_GCM_CTX), | ||
| 1630 | .ctrl = aes_gcm_ctrl, | ||
| 1631 | }; | ||
| 1632 | #endif | ||
| 1633 | |||
| 1634 | static const EVP_CIPHER aes_192_gcm = { | 988 | static const EVP_CIPHER aes_192_gcm = { |
| 1635 | .nid = NID_aes_192_gcm, | 989 | .nid = NID_aes_192_gcm, |
| 1636 | .block_size = 1, | 990 | .block_size = 1, |
| @@ -1647,29 +1001,10 @@ static const EVP_CIPHER aes_192_gcm = { | |||
| 1647 | const EVP_CIPHER * | 1001 | const EVP_CIPHER * |
| 1648 | EVP_aes_192_gcm(void) | 1002 | EVP_aes_192_gcm(void) |
| 1649 | { | 1003 | { |
| 1650 | #ifdef AESNI_CAPABLE | ||
| 1651 | return AESNI_CAPABLE ? &aesni_192_gcm : &aes_192_gcm; | ||
| 1652 | #else | ||
| 1653 | return &aes_192_gcm; | 1004 | return &aes_192_gcm; |
| 1654 | #endif | ||
| 1655 | } | 1005 | } |
| 1656 | LCRYPTO_ALIAS(EVP_aes_192_gcm); | 1006 | LCRYPTO_ALIAS(EVP_aes_192_gcm); |
| 1657 | 1007 | ||
| 1658 | #ifdef AESNI_CAPABLE | ||
| 1659 | static const EVP_CIPHER aesni_256_gcm = { | ||
| 1660 | .nid = NID_aes_256_gcm, | ||
| 1661 | .block_size = 1, | ||
| 1662 | .key_len = 32, | ||
| 1663 | .iv_len = 12, | ||
| 1664 | .flags = EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS | EVP_CIPH_GCM_MODE, | ||
| 1665 | .init = aesni_gcm_init_key, | ||
| 1666 | .do_cipher = aes_gcm_cipher, | ||
| 1667 | .cleanup = aes_gcm_cleanup, | ||
| 1668 | .ctx_size = sizeof(EVP_AES_GCM_CTX), | ||
| 1669 | .ctrl = aes_gcm_ctrl, | ||
| 1670 | }; | ||
| 1671 | #endif | ||
| 1672 | |||
| 1673 | static const EVP_CIPHER aes_256_gcm = { | 1008 | static const EVP_CIPHER aes_256_gcm = { |
| 1674 | .nid = NID_aes_256_gcm, | 1009 | .nid = NID_aes_256_gcm, |
| 1675 | .block_size = 1, | 1010 | .block_size = 1, |
| @@ -1686,11 +1021,7 @@ static const EVP_CIPHER aes_256_gcm = { | |||
| 1686 | const EVP_CIPHER * | 1021 | const EVP_CIPHER * |
| 1687 | EVP_aes_256_gcm(void) | 1022 | EVP_aes_256_gcm(void) |
| 1688 | { | 1023 | { |
| 1689 | #ifdef AESNI_CAPABLE | ||
| 1690 | return AESNI_CAPABLE ? &aesni_256_gcm : &aes_256_gcm; | ||
| 1691 | #else | ||
| 1692 | return &aes_256_gcm; | 1024 | return &aes_256_gcm; |
| 1693 | #endif | ||
| 1694 | } | 1025 | } |
| 1695 | LCRYPTO_ALIAS(EVP_aes_256_gcm); | 1026 | LCRYPTO_ALIAS(EVP_aes_256_gcm); |
| 1696 | 1027 | ||
| @@ -1732,36 +1063,24 @@ aes_xts_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) | |||
| 1732 | 1063 | ||
| 1733 | static int | 1064 | static int |
| 1734 | aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 1065 | aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
| 1735 | const unsigned char *iv, int enc) | 1066 | const unsigned char *iv, int encrypt) |
| 1736 | { | 1067 | { |
| 1737 | EVP_AES_XTS_CTX *xctx = ctx->cipher_data; | 1068 | EVP_AES_XTS_CTX *xctx = ctx->cipher_data; |
| 1738 | 1069 | ||
| 1739 | if (!iv && !key) | 1070 | if (key != NULL) { |
| 1740 | return 1; | ||
| 1741 | |||
| 1742 | if (key) { | ||
| 1743 | #ifdef AES_XTS_ASM | ||
| 1744 | xctx->stream = enc ? AES_xts_encrypt : AES_xts_decrypt; | ||
| 1745 | #else | ||
| 1746 | xctx->stream = NULL; | ||
| 1747 | #endif | ||
| 1748 | /* key_len is two AES keys */ | 1071 | /* key_len is two AES keys */ |
| 1749 | if (enc) { | 1072 | if (encrypt) |
| 1750 | AES_set_encrypt_key(key, ctx->key_len * 4, &xctx->ks1); | 1073 | AES_set_encrypt_key(key, ctx->key_len * 4, &xctx->ks1); |
| 1751 | xctx->xts.block1 = (block128_f)AES_encrypt; | 1074 | else |
| 1752 | } else { | ||
| 1753 | AES_set_decrypt_key(key, ctx->key_len * 4, &xctx->ks1); | 1075 | AES_set_decrypt_key(key, ctx->key_len * 4, &xctx->ks1); |
| 1754 | xctx->xts.block1 = (block128_f)AES_decrypt; | ||
| 1755 | } | ||
| 1756 | 1076 | ||
| 1757 | AES_set_encrypt_key(key + ctx->key_len / 2, | 1077 | AES_set_encrypt_key(key + ctx->key_len / 2, ctx->key_len * 4, |
| 1758 | ctx->key_len * 4, &xctx->ks2); | 1078 | &xctx->ks2); |
| 1759 | xctx->xts.block2 = (block128_f)AES_encrypt; | ||
| 1760 | 1079 | ||
| 1761 | xctx->xts.key1 = &xctx->ks1; | 1080 | xctx->xts.key1 = &xctx->ks1; |
| 1762 | } | 1081 | } |
| 1763 | 1082 | ||
| 1764 | if (iv) { | 1083 | if (iv != NULL) { |
| 1765 | xctx->xts.key2 = &xctx->ks2; | 1084 | xctx->xts.key2 = &xctx->ks2; |
| 1766 | memcpy(ctx->iv, iv, 16); | 1085 | memcpy(ctx->iv, iv, 16); |
| 1767 | } | 1086 | } |
| @@ -1775,17 +1094,15 @@ aes_xts_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1775 | { | 1094 | { |
| 1776 | EVP_AES_XTS_CTX *xctx = ctx->cipher_data; | 1095 | EVP_AES_XTS_CTX *xctx = ctx->cipher_data; |
| 1777 | 1096 | ||
| 1778 | if (!xctx->xts.key1 || !xctx->xts.key2) | 1097 | if (xctx->xts.key1 == NULL || xctx->xts.key2 == NULL) |
| 1779 | return 0; | ||
| 1780 | if (!out || !in || len < AES_BLOCK_SIZE) | ||
| 1781 | return 0; | 1098 | return 0; |
| 1782 | 1099 | ||
| 1783 | if (xctx->stream) | 1100 | if (out == NULL || in == NULL || len < AES_BLOCK_SIZE) |
| 1784 | (*xctx->stream)(in, out, len, xctx->xts.key1, xctx->xts.key2, | ||
| 1785 | ctx->iv); | ||
| 1786 | else if (CRYPTO_xts128_encrypt(&xctx->xts, ctx->iv, in, out, len, | ||
| 1787 | ctx->encrypt)) | ||
| 1788 | return 0; | 1101 | return 0; |
| 1102 | |||
| 1103 | aes_xts_encrypt_internal(in, out, len, xctx->xts.key1, xctx->xts.key2, | ||
| 1104 | ctx->iv, ctx->encrypt); | ||
| 1105 | |||
| 1789 | return 1; | 1106 | return 1; |
| 1790 | } | 1107 | } |
| 1791 | 1108 | ||
| @@ -1793,22 +1110,6 @@ aes_xts_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1793 | ( EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CUSTOM_IV | \ | 1110 | ( EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CUSTOM_IV | \ |
| 1794 | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) | 1111 | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) |
| 1795 | 1112 | ||
| 1796 | |||
| 1797 | #ifdef AESNI_CAPABLE | ||
| 1798 | static const EVP_CIPHER aesni_128_xts = { | ||
| 1799 | .nid = NID_aes_128_xts, | ||
| 1800 | .block_size = 1, | ||
| 1801 | .key_len = 2 * 16, | ||
| 1802 | .iv_len = 16, | ||
| 1803 | .flags = XTS_FLAGS | EVP_CIPH_XTS_MODE, | ||
| 1804 | .init = aesni_xts_init_key, | ||
| 1805 | .do_cipher = aes_xts_cipher, | ||
| 1806 | .cleanup = NULL, | ||
| 1807 | .ctx_size = sizeof(EVP_AES_XTS_CTX), | ||
| 1808 | .ctrl = aes_xts_ctrl, | ||
| 1809 | }; | ||
| 1810 | #endif | ||
| 1811 | |||
| 1812 | static const EVP_CIPHER aes_128_xts = { | 1113 | static const EVP_CIPHER aes_128_xts = { |
| 1813 | .nid = NID_aes_128_xts, | 1114 | .nid = NID_aes_128_xts, |
| 1814 | .block_size = 1, | 1115 | .block_size = 1, |
| @@ -1825,29 +1126,10 @@ static const EVP_CIPHER aes_128_xts = { | |||
| 1825 | const EVP_CIPHER * | 1126 | const EVP_CIPHER * |
| 1826 | EVP_aes_128_xts(void) | 1127 | EVP_aes_128_xts(void) |
| 1827 | { | 1128 | { |
| 1828 | #ifdef AESNI_CAPABLE | ||
| 1829 | return AESNI_CAPABLE ? &aesni_128_xts : &aes_128_xts; | ||
| 1830 | #else | ||
| 1831 | return &aes_128_xts; | 1129 | return &aes_128_xts; |
| 1832 | #endif | ||
| 1833 | } | 1130 | } |
| 1834 | LCRYPTO_ALIAS(EVP_aes_128_xts); | 1131 | LCRYPTO_ALIAS(EVP_aes_128_xts); |
| 1835 | 1132 | ||
| 1836 | #ifdef AESNI_CAPABLE | ||
| 1837 | static const EVP_CIPHER aesni_256_xts = { | ||
| 1838 | .nid = NID_aes_256_xts, | ||
| 1839 | .block_size = 1, | ||
| 1840 | .key_len = 2 * 32, | ||
| 1841 | .iv_len = 16, | ||
| 1842 | .flags = XTS_FLAGS | EVP_CIPH_XTS_MODE, | ||
| 1843 | .init = aesni_xts_init_key, | ||
| 1844 | .do_cipher = aes_xts_cipher, | ||
| 1845 | .cleanup = NULL, | ||
| 1846 | .ctx_size = sizeof(EVP_AES_XTS_CTX), | ||
| 1847 | .ctrl = aes_xts_ctrl, | ||
| 1848 | }; | ||
| 1849 | #endif | ||
| 1850 | |||
| 1851 | static const EVP_CIPHER aes_256_xts = { | 1133 | static const EVP_CIPHER aes_256_xts = { |
| 1852 | .nid = NID_aes_256_xts, | 1134 | .nid = NID_aes_256_xts, |
| 1853 | .block_size = 1, | 1135 | .block_size = 1, |
| @@ -1864,11 +1146,7 @@ static const EVP_CIPHER aes_256_xts = { | |||
| 1864 | const EVP_CIPHER * | 1146 | const EVP_CIPHER * |
| 1865 | EVP_aes_256_xts(void) | 1147 | EVP_aes_256_xts(void) |
| 1866 | { | 1148 | { |
| 1867 | #ifdef AESNI_CAPABLE | ||
| 1868 | return AESNI_CAPABLE ? &aesni_256_xts : &aes_256_xts; | ||
| 1869 | #else | ||
| 1870 | return &aes_256_xts; | 1149 | return &aes_256_xts; |
| 1871 | #endif | ||
| 1872 | } | 1150 | } |
| 1873 | LCRYPTO_ALIAS(EVP_aes_256_xts); | 1151 | LCRYPTO_ALIAS(EVP_aes_256_xts); |
| 1874 | 1152 | ||
| @@ -1951,8 +1229,7 @@ aes_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | |||
| 1951 | if (key) { | 1229 | if (key) { |
| 1952 | AES_set_encrypt_key(key, ctx->key_len * 8, &cctx->ks); | 1230 | AES_set_encrypt_key(key, ctx->key_len * 8, &cctx->ks); |
| 1953 | CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L, | 1231 | CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L, |
| 1954 | &cctx->ks, (block128_f)AES_encrypt); | 1232 | &cctx->ks, aes_encrypt_block128); |
| 1955 | cctx->str = NULL; | ||
| 1956 | cctx->key_set = 1; | 1233 | cctx->key_set = 1; |
| 1957 | } | 1234 | } |
| 1958 | if (iv) { | 1235 | if (iv) { |
| @@ -1970,7 +1247,14 @@ aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1970 | CCM128_CONTEXT *ccm = &cctx->ccm; | 1247 | CCM128_CONTEXT *ccm = &cctx->ccm; |
| 1971 | 1248 | ||
| 1972 | /* If not set up, return error */ | 1249 | /* If not set up, return error */ |
| 1973 | if (!cctx->iv_set && !cctx->key_set) | 1250 | if (!cctx->key_set) |
| 1251 | return -1; | ||
| 1252 | |||
| 1253 | /* EVP_*Final() doesn't return any data */ | ||
| 1254 | if (in == NULL && out != NULL) | ||
| 1255 | return 0; | ||
| 1256 | |||
| 1257 | if (!cctx->iv_set) | ||
| 1974 | return -1; | 1258 | return -1; |
| 1975 | if (!ctx->encrypt && !cctx->tag_set) | 1259 | if (!ctx->encrypt && !cctx->tag_set) |
| 1976 | return -1; | 1260 | return -1; |
| @@ -1989,9 +1273,7 @@ aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1989 | CRYPTO_ccm128_aad(ccm, in, len); | 1273 | CRYPTO_ccm128_aad(ccm, in, len); |
| 1990 | return len; | 1274 | return len; |
| 1991 | } | 1275 | } |
| 1992 | /* EVP_*Final() doesn't return any data */ | 1276 | |
| 1993 | if (!in) | ||
| 1994 | return 0; | ||
| 1995 | /* If not set length yet do it */ | 1277 | /* If not set length yet do it */ |
| 1996 | if (!cctx->len_set) { | 1278 | if (!cctx->len_set) { |
| 1997 | if (CRYPTO_ccm128_setiv(ccm, ctx->iv, 15 - cctx->L, len)) | 1279 | if (CRYPTO_ccm128_setiv(ccm, ctx->iv, 15 - cctx->L, len)) |
| @@ -1999,18 +1281,18 @@ aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 1999 | cctx->len_set = 1; | 1281 | cctx->len_set = 1; |
| 2000 | } | 1282 | } |
| 2001 | if (ctx->encrypt) { | 1283 | if (ctx->encrypt) { |
| 2002 | if (cctx->str ? CRYPTO_ccm128_encrypt_ccm64(ccm, in, out, len, | 1284 | if (CRYPTO_ccm128_encrypt_ccm64(ccm, in, out, len, |
| 2003 | cctx->str) : CRYPTO_ccm128_encrypt(ccm, in, out, len)) | 1285 | aes_ccm64_encrypt_ccm128f) != 0) |
| 2004 | return -1; | 1286 | return -1; |
| 2005 | cctx->tag_set = 1; | 1287 | cctx->tag_set = 1; |
| 2006 | return len; | 1288 | return len; |
| 2007 | } else { | 1289 | } else { |
| 2008 | int rv = -1; | 1290 | int rv = -1; |
| 2009 | if (cctx->str ? !CRYPTO_ccm128_decrypt_ccm64(ccm, in, out, len, | 1291 | if (CRYPTO_ccm128_decrypt_ccm64(ccm, in, out, len, |
| 2010 | cctx->str) : !CRYPTO_ccm128_decrypt(ccm, in, out, len)) { | 1292 | aes_ccm64_decrypt_ccm128f) == 0) { |
| 2011 | unsigned char tag[16]; | 1293 | unsigned char tag[16]; |
| 2012 | if (CRYPTO_ccm128_tag(ccm, tag, cctx->M)) { | 1294 | if (CRYPTO_ccm128_tag(ccm, tag, cctx->M)) { |
| 2013 | if (!memcmp(tag, ctx->buf, cctx->M)) | 1295 | if (timingsafe_memcmp(tag, ctx->buf, cctx->M) == 0) |
| 2014 | rv = len; | 1296 | rv = len; |
| 2015 | } | 1297 | } |
| 2016 | } | 1298 | } |
| @@ -2021,24 +1303,8 @@ aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | |||
| 2021 | cctx->len_set = 0; | 1303 | cctx->len_set = 0; |
| 2022 | return rv; | 1304 | return rv; |
| 2023 | } | 1305 | } |
| 2024 | |||
| 2025 | } | 1306 | } |
| 2026 | 1307 | ||
| 2027 | #ifdef AESNI_CAPABLE | ||
| 2028 | static const EVP_CIPHER aesni_128_ccm = { | ||
| 2029 | .nid = NID_aes_128_ccm, | ||
| 2030 | .block_size = 1, | ||
| 2031 | .key_len = 16, | ||
| 2032 | .iv_len = 12, | ||
| 2033 | .flags = CUSTOM_FLAGS | EVP_CIPH_CCM_MODE, | ||
| 2034 | .init = aesni_ccm_init_key, | ||
| 2035 | .do_cipher = aes_ccm_cipher, | ||
| 2036 | .cleanup = NULL, | ||
| 2037 | .ctx_size = sizeof(EVP_AES_CCM_CTX), | ||
| 2038 | .ctrl = aes_ccm_ctrl, | ||
| 2039 | }; | ||
| 2040 | #endif | ||
| 2041 | |||
| 2042 | static const EVP_CIPHER aes_128_ccm = { | 1308 | static const EVP_CIPHER aes_128_ccm = { |
| 2043 | .nid = NID_aes_128_ccm, | 1309 | .nid = NID_aes_128_ccm, |
| 2044 | .block_size = 1, | 1310 | .block_size = 1, |
| @@ -2055,29 +1321,10 @@ static const EVP_CIPHER aes_128_ccm = { | |||
| 2055 | const EVP_CIPHER * | 1321 | const EVP_CIPHER * |
| 2056 | EVP_aes_128_ccm(void) | 1322 | EVP_aes_128_ccm(void) |
| 2057 | { | 1323 | { |
| 2058 | #ifdef AESNI_CAPABLE | ||
| 2059 | return AESNI_CAPABLE ? &aesni_128_ccm : &aes_128_ccm; | ||
| 2060 | #else | ||
| 2061 | return &aes_128_ccm; | 1324 | return &aes_128_ccm; |
| 2062 | #endif | ||
| 2063 | } | 1325 | } |
| 2064 | LCRYPTO_ALIAS(EVP_aes_128_ccm); | 1326 | LCRYPTO_ALIAS(EVP_aes_128_ccm); |
| 2065 | 1327 | ||
| 2066 | #ifdef AESNI_CAPABLE | ||
| 2067 | static const EVP_CIPHER aesni_192_ccm = { | ||
| 2068 | .nid = NID_aes_192_ccm, | ||
| 2069 | .block_size = 1, | ||
| 2070 | .key_len = 24, | ||
| 2071 | .iv_len = 12, | ||
| 2072 | .flags = CUSTOM_FLAGS | EVP_CIPH_CCM_MODE, | ||
| 2073 | .init = aesni_ccm_init_key, | ||
| 2074 | .do_cipher = aes_ccm_cipher, | ||
| 2075 | .cleanup = NULL, | ||
| 2076 | .ctx_size = sizeof(EVP_AES_CCM_CTX), | ||
| 2077 | .ctrl = aes_ccm_ctrl, | ||
| 2078 | }; | ||
| 2079 | #endif | ||
| 2080 | |||
| 2081 | static const EVP_CIPHER aes_192_ccm = { | 1328 | static const EVP_CIPHER aes_192_ccm = { |
| 2082 | .nid = NID_aes_192_ccm, | 1329 | .nid = NID_aes_192_ccm, |
| 2083 | .block_size = 1, | 1330 | .block_size = 1, |
| @@ -2094,29 +1341,10 @@ static const EVP_CIPHER aes_192_ccm = { | |||
| 2094 | const EVP_CIPHER * | 1341 | const EVP_CIPHER * |
| 2095 | EVP_aes_192_ccm(void) | 1342 | EVP_aes_192_ccm(void) |
| 2096 | { | 1343 | { |
| 2097 | #ifdef AESNI_CAPABLE | ||
| 2098 | return AESNI_CAPABLE ? &aesni_192_ccm : &aes_192_ccm; | ||
| 2099 | #else | ||
| 2100 | return &aes_192_ccm; | 1344 | return &aes_192_ccm; |
| 2101 | #endif | ||
| 2102 | } | 1345 | } |
| 2103 | LCRYPTO_ALIAS(EVP_aes_192_ccm); | 1346 | LCRYPTO_ALIAS(EVP_aes_192_ccm); |
| 2104 | 1347 | ||
| 2105 | #ifdef AESNI_CAPABLE | ||
| 2106 | static const EVP_CIPHER aesni_256_ccm = { | ||
| 2107 | .nid = NID_aes_256_ccm, | ||
| 2108 | .block_size = 1, | ||
| 2109 | .key_len = 32, | ||
| 2110 | .iv_len = 12, | ||
| 2111 | .flags = CUSTOM_FLAGS | EVP_CIPH_CCM_MODE, | ||
| 2112 | .init = aesni_ccm_init_key, | ||
| 2113 | .do_cipher = aes_ccm_cipher, | ||
| 2114 | .cleanup = NULL, | ||
| 2115 | .ctx_size = sizeof(EVP_AES_CCM_CTX), | ||
| 2116 | .ctrl = aes_ccm_ctrl, | ||
| 2117 | }; | ||
| 2118 | #endif | ||
| 2119 | |||
| 2120 | static const EVP_CIPHER aes_256_ccm = { | 1348 | static const EVP_CIPHER aes_256_ccm = { |
| 2121 | .nid = NID_aes_256_ccm, | 1349 | .nid = NID_aes_256_ccm, |
| 2122 | .block_size = 1, | 1350 | .block_size = 1, |
| @@ -2133,11 +1361,7 @@ static const EVP_CIPHER aes_256_ccm = { | |||
| 2133 | const EVP_CIPHER * | 1361 | const EVP_CIPHER * |
| 2134 | EVP_aes_256_ccm(void) | 1362 | EVP_aes_256_ccm(void) |
| 2135 | { | 1363 | { |
| 2136 | #ifdef AESNI_CAPABLE | ||
| 2137 | return AESNI_CAPABLE ? &aesni_256_ccm : &aes_256_ccm; | ||
| 2138 | #else | ||
| 2139 | return &aes_256_ccm; | 1364 | return &aes_256_ccm; |
| 2140 | #endif | ||
| 2141 | } | 1365 | } |
| 2142 | LCRYPTO_ALIAS(EVP_aes_256_ccm); | 1366 | LCRYPTO_ALIAS(EVP_aes_256_ccm); |
| 2143 | 1367 | ||
| @@ -2149,7 +1373,6 @@ struct aead_aes_gcm_ctx { | |||
| 2149 | AES_KEY ks; | 1373 | AES_KEY ks; |
| 2150 | } ks; | 1374 | } ks; |
| 2151 | GCM128_CONTEXT gcm; | 1375 | GCM128_CONTEXT gcm; |
| 2152 | ctr128_f ctr; | ||
| 2153 | unsigned char tag_len; | 1376 | unsigned char tag_len; |
| 2154 | }; | 1377 | }; |
| 2155 | 1378 | ||
| @@ -2177,18 +1400,8 @@ aead_aes_gcm_init(EVP_AEAD_CTX *ctx, const unsigned char *key, size_t key_len, | |||
| 2177 | if ((gcm_ctx = calloc(1, sizeof(struct aead_aes_gcm_ctx))) == NULL) | 1400 | if ((gcm_ctx = calloc(1, sizeof(struct aead_aes_gcm_ctx))) == NULL) |
| 2178 | return 0; | 1401 | return 0; |
| 2179 | 1402 | ||
| 2180 | #ifdef AESNI_CAPABLE | 1403 | AES_set_encrypt_key(key, key_bits, &gcm_ctx->ks.ks); |
| 2181 | if (AESNI_CAPABLE) { | 1404 | CRYPTO_gcm128_init(&gcm_ctx->gcm, &gcm_ctx->ks.ks, aes_encrypt_block128); |
| 2182 | aesni_set_encrypt_key(key, key_bits, &gcm_ctx->ks.ks); | ||
| 2183 | CRYPTO_gcm128_init(&gcm_ctx->gcm, &gcm_ctx->ks.ks, | ||
| 2184 | (block128_f)aesni_encrypt); | ||
| 2185 | gcm_ctx->ctr = (ctr128_f) aesni_ctr32_encrypt_blocks; | ||
| 2186 | } else | ||
| 2187 | #endif | ||
| 2188 | { | ||
| 2189 | gcm_ctx->ctr = aes_gcm_set_key(&gcm_ctx->ks.ks, &gcm_ctx->gcm, | ||
| 2190 | key, key_len); | ||
| 2191 | } | ||
| 2192 | gcm_ctx->tag_len = tag_len; | 1405 | gcm_ctx->tag_len = tag_len; |
| 2193 | ctx->aead_state = gcm_ctx; | 1406 | ctx->aead_state = gcm_ctx; |
| 2194 | 1407 | ||
| @@ -2229,15 +1442,9 @@ aead_aes_gcm_seal(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, | |||
| 2229 | if (ad_len > 0 && CRYPTO_gcm128_aad(&gcm, ad, ad_len)) | 1442 | if (ad_len > 0 && CRYPTO_gcm128_aad(&gcm, ad, ad_len)) |
| 2230 | return 0; | 1443 | return 0; |
| 2231 | 1444 | ||
| 2232 | if (gcm_ctx->ctr) { | 1445 | if (CRYPTO_gcm128_encrypt_ctr32(&gcm, in + bulk, out + bulk, |
| 2233 | if (CRYPTO_gcm128_encrypt_ctr32(&gcm, in + bulk, out + bulk, | 1446 | in_len - bulk, aes_ctr32_encrypt_ctr128f)) |
| 2234 | in_len - bulk, gcm_ctx->ctr)) | 1447 | return 0; |
| 2235 | return 0; | ||
| 2236 | } else { | ||
| 2237 | if (CRYPTO_gcm128_encrypt(&gcm, in + bulk, out + bulk, | ||
| 2238 | in_len - bulk)) | ||
| 2239 | return 0; | ||
| 2240 | } | ||
| 2241 | 1448 | ||
| 2242 | CRYPTO_gcm128_tag(&gcm, out + in_len, gcm_ctx->tag_len); | 1449 | CRYPTO_gcm128_tag(&gcm, out + in_len, gcm_ctx->tag_len); |
| 2243 | *out_len = in_len + gcm_ctx->tag_len; | 1450 | *out_len = in_len + gcm_ctx->tag_len; |
| @@ -2280,15 +1487,9 @@ aead_aes_gcm_open(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, | |||
| 2280 | if (CRYPTO_gcm128_aad(&gcm, ad, ad_len)) | 1487 | if (CRYPTO_gcm128_aad(&gcm, ad, ad_len)) |
| 2281 | return 0; | 1488 | return 0; |
| 2282 | 1489 | ||
| 2283 | if (gcm_ctx->ctr) { | 1490 | if (CRYPTO_gcm128_decrypt_ctr32(&gcm, in + bulk, out + bulk, |
| 2284 | if (CRYPTO_gcm128_decrypt_ctr32(&gcm, in + bulk, out + bulk, | 1491 | in_len - bulk - gcm_ctx->tag_len, aes_ctr32_encrypt_ctr128f)) |
| 2285 | in_len - bulk - gcm_ctx->tag_len, gcm_ctx->ctr)) | 1492 | return 0; |
| 2286 | return 0; | ||
| 2287 | } else { | ||
| 2288 | if (CRYPTO_gcm128_decrypt(&gcm, in + bulk, out + bulk, | ||
| 2289 | in_len - bulk - gcm_ctx->tag_len)) | ||
| 2290 | return 0; | ||
| 2291 | } | ||
| 2292 | 1493 | ||
| 2293 | CRYPTO_gcm128_tag(&gcm, tag, gcm_ctx->tag_len); | 1494 | CRYPTO_gcm128_tag(&gcm, tag, gcm_ctx->tag_len); |
| 2294 | if (timingsafe_memcmp(tag, in + plaintext_len, gcm_ctx->tag_len) != 0) { | 1495 | if (timingsafe_memcmp(tag, in + plaintext_len, gcm_ctx->tag_len) != 0) { |
diff --git a/src/lib/libcrypto/evp/e_bf.c b/src/lib/libcrypto/evp/e_bf.c index 4f3799975b..8c32a5658e 100644 --- a/src/lib/libcrypto/evp/e_bf.c +++ b/src/lib/libcrypto/evp/e_bf.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_bf.c,v 1.19 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_bf.c,v 1.20 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -162,13 +162,14 @@ static const EVP_CIPHER bf_cbc = { | |||
| 162 | .block_size = 8, | 162 | .block_size = 8, |
| 163 | .key_len = 16, | 163 | .key_len = 16, |
| 164 | .iv_len = 8, | 164 | .iv_len = 8, |
| 165 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CBC_MODE, | 165 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CBC_MODE | |
| 166 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 166 | .init = bf_init_key, | 167 | .init = bf_init_key, |
| 167 | .do_cipher = bf_cbc_cipher, | 168 | .do_cipher = bf_cbc_cipher, |
| 168 | .cleanup = NULL, | 169 | .cleanup = NULL, |
| 169 | .ctx_size = sizeof(EVP_BF_KEY), | 170 | .ctx_size = sizeof(EVP_BF_KEY), |
| 170 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 171 | .set_asn1_parameters = NULL, |
| 171 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 172 | .get_asn1_parameters = NULL, |
| 172 | .ctrl = NULL, | 173 | .ctrl = NULL, |
| 173 | }; | 174 | }; |
| 174 | 175 | ||
| @@ -184,13 +185,14 @@ static const EVP_CIPHER bf_cfb64 = { | |||
| 184 | .block_size = 1, | 185 | .block_size = 1, |
| 185 | .key_len = 16, | 186 | .key_len = 16, |
| 186 | .iv_len = 8, | 187 | .iv_len = 8, |
| 187 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CFB_MODE, | 188 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CFB_MODE | |
| 189 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 188 | .init = bf_init_key, | 190 | .init = bf_init_key, |
| 189 | .do_cipher = bf_cfb64_cipher, | 191 | .do_cipher = bf_cfb64_cipher, |
| 190 | .cleanup = NULL, | 192 | .cleanup = NULL, |
| 191 | .ctx_size = sizeof(EVP_BF_KEY), | 193 | .ctx_size = sizeof(EVP_BF_KEY), |
| 192 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 194 | .set_asn1_parameters = NULL, |
| 193 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 195 | .get_asn1_parameters = NULL, |
| 194 | .ctrl = NULL, | 196 | .ctrl = NULL, |
| 195 | }; | 197 | }; |
| 196 | 198 | ||
| @@ -206,13 +208,14 @@ static const EVP_CIPHER bf_ofb = { | |||
| 206 | .block_size = 1, | 208 | .block_size = 1, |
| 207 | .key_len = 16, | 209 | .key_len = 16, |
| 208 | .iv_len = 8, | 210 | .iv_len = 8, |
| 209 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_OFB_MODE, | 211 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_OFB_MODE | |
| 212 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 210 | .init = bf_init_key, | 213 | .init = bf_init_key, |
| 211 | .do_cipher = bf_ofb_cipher, | 214 | .do_cipher = bf_ofb_cipher, |
| 212 | .cleanup = NULL, | 215 | .cleanup = NULL, |
| 213 | .ctx_size = sizeof(EVP_BF_KEY), | 216 | .ctx_size = sizeof(EVP_BF_KEY), |
| 214 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 217 | .set_asn1_parameters = NULL, |
| 215 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 218 | .get_asn1_parameters = NULL, |
| 216 | .ctrl = NULL, | 219 | .ctrl = NULL, |
| 217 | }; | 220 | }; |
| 218 | 221 | ||
| @@ -228,13 +231,14 @@ static const EVP_CIPHER bf_ecb = { | |||
| 228 | .block_size = 8, | 231 | .block_size = 8, |
| 229 | .key_len = 16, | 232 | .key_len = 16, |
| 230 | .iv_len = 0, | 233 | .iv_len = 0, |
| 231 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_ECB_MODE, | 234 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_ECB_MODE | |
| 235 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 232 | .init = bf_init_key, | 236 | .init = bf_init_key, |
| 233 | .do_cipher = bf_ecb_cipher, | 237 | .do_cipher = bf_ecb_cipher, |
| 234 | .cleanup = NULL, | 238 | .cleanup = NULL, |
| 235 | .ctx_size = sizeof(EVP_BF_KEY), | 239 | .ctx_size = sizeof(EVP_BF_KEY), |
| 236 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 240 | .set_asn1_parameters = NULL, |
| 237 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 241 | .get_asn1_parameters = NULL, |
| 238 | .ctrl = NULL, | 242 | .ctrl = NULL, |
| 239 | }; | 243 | }; |
| 240 | 244 | ||
diff --git a/src/lib/libcrypto/evp/e_camellia.c b/src/lib/libcrypto/evp/e_camellia.c index 5538281e75..8da46275a3 100644 --- a/src/lib/libcrypto/evp/e_camellia.c +++ b/src/lib/libcrypto/evp/e_camellia.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_camellia.c,v 1.21 2025/05/10 05:54:38 tb Exp $ */ | 1 | /* $OpenBSD: e_camellia.c,v 1.22 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 2006 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2006 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -163,13 +163,13 @@ static const EVP_CIPHER camellia_128_cbc = { | |||
| 163 | .block_size = 16, | 163 | .block_size = 16, |
| 164 | .key_len = 16, | 164 | .key_len = 16, |
| 165 | .iv_len = 16, | 165 | .iv_len = 16, |
| 166 | .flags = 0 | EVP_CIPH_CBC_MODE, | 166 | .flags = EVP_CIPH_CBC_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 167 | .init = camellia_init_key, | 167 | .init = camellia_init_key, |
| 168 | .do_cipher = camellia_128_cbc_cipher, | 168 | .do_cipher = camellia_128_cbc_cipher, |
| 169 | .cleanup = NULL, | 169 | .cleanup = NULL, |
| 170 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 170 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 171 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 171 | .set_asn1_parameters = NULL, |
| 172 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 172 | .get_asn1_parameters = NULL, |
| 173 | .ctrl = NULL, | 173 | .ctrl = NULL, |
| 174 | }; | 174 | }; |
| 175 | 175 | ||
| @@ -185,13 +185,13 @@ static const EVP_CIPHER camellia_128_cfb128 = { | |||
| 185 | .block_size = 1, | 185 | .block_size = 1, |
| 186 | .key_len = 16, | 186 | .key_len = 16, |
| 187 | .iv_len = 16, | 187 | .iv_len = 16, |
| 188 | .flags = 0 | EVP_CIPH_CFB_MODE, | 188 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 189 | .init = camellia_init_key, | 189 | .init = camellia_init_key, |
| 190 | .do_cipher = camellia_128_cfb128_cipher, | 190 | .do_cipher = camellia_128_cfb128_cipher, |
| 191 | .cleanup = NULL, | 191 | .cleanup = NULL, |
| 192 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 192 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 193 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 193 | .set_asn1_parameters = NULL, |
| 194 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 194 | .get_asn1_parameters = NULL, |
| 195 | .ctrl = NULL, | 195 | .ctrl = NULL, |
| 196 | }; | 196 | }; |
| 197 | 197 | ||
| @@ -207,13 +207,13 @@ static const EVP_CIPHER camellia_128_ofb = { | |||
| 207 | .block_size = 1, | 207 | .block_size = 1, |
| 208 | .key_len = 16, | 208 | .key_len = 16, |
| 209 | .iv_len = 16, | 209 | .iv_len = 16, |
| 210 | .flags = 0 | EVP_CIPH_OFB_MODE, | 210 | .flags = EVP_CIPH_OFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 211 | .init = camellia_init_key, | 211 | .init = camellia_init_key, |
| 212 | .do_cipher = camellia_128_ofb_cipher, | 212 | .do_cipher = camellia_128_ofb_cipher, |
| 213 | .cleanup = NULL, | 213 | .cleanup = NULL, |
| 214 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 214 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 215 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 215 | .set_asn1_parameters = NULL, |
| 216 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 216 | .get_asn1_parameters = NULL, |
| 217 | .ctrl = NULL, | 217 | .ctrl = NULL, |
| 218 | }; | 218 | }; |
| 219 | 219 | ||
| @@ -229,13 +229,13 @@ static const EVP_CIPHER camellia_128_ecb = { | |||
| 229 | .block_size = 16, | 229 | .block_size = 16, |
| 230 | .key_len = 16, | 230 | .key_len = 16, |
| 231 | .iv_len = 0, | 231 | .iv_len = 0, |
| 232 | .flags = 0 | EVP_CIPH_ECB_MODE, | 232 | .flags = EVP_CIPH_ECB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 233 | .init = camellia_init_key, | 233 | .init = camellia_init_key, |
| 234 | .do_cipher = camellia_128_ecb_cipher, | 234 | .do_cipher = camellia_128_ecb_cipher, |
| 235 | .cleanup = NULL, | 235 | .cleanup = NULL, |
| 236 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 236 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 237 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 237 | .set_asn1_parameters = NULL, |
| 238 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 238 | .get_asn1_parameters = NULL, |
| 239 | .ctrl = NULL, | 239 | .ctrl = NULL, |
| 240 | }; | 240 | }; |
| 241 | 241 | ||
| @@ -321,13 +321,13 @@ static const EVP_CIPHER camellia_192_cbc = { | |||
| 321 | .block_size = 16, | 321 | .block_size = 16, |
| 322 | .key_len = 24, | 322 | .key_len = 24, |
| 323 | .iv_len = 16, | 323 | .iv_len = 16, |
| 324 | .flags = 0 | EVP_CIPH_CBC_MODE, | 324 | .flags = EVP_CIPH_CBC_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 325 | .init = camellia_init_key, | 325 | .init = camellia_init_key, |
| 326 | .do_cipher = camellia_192_cbc_cipher, | 326 | .do_cipher = camellia_192_cbc_cipher, |
| 327 | .cleanup = NULL, | 327 | .cleanup = NULL, |
| 328 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 328 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 329 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 329 | .set_asn1_parameters = NULL, |
| 330 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 330 | .get_asn1_parameters = NULL, |
| 331 | .ctrl = NULL, | 331 | .ctrl = NULL, |
| 332 | }; | 332 | }; |
| 333 | 333 | ||
| @@ -343,13 +343,13 @@ static const EVP_CIPHER camellia_192_cfb128 = { | |||
| 343 | .block_size = 1, | 343 | .block_size = 1, |
| 344 | .key_len = 24, | 344 | .key_len = 24, |
| 345 | .iv_len = 16, | 345 | .iv_len = 16, |
| 346 | .flags = 0 | EVP_CIPH_CFB_MODE, | 346 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 347 | .init = camellia_init_key, | 347 | .init = camellia_init_key, |
| 348 | .do_cipher = camellia_192_cfb128_cipher, | 348 | .do_cipher = camellia_192_cfb128_cipher, |
| 349 | .cleanup = NULL, | 349 | .cleanup = NULL, |
| 350 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 350 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 351 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 351 | .set_asn1_parameters = NULL, |
| 352 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 352 | .get_asn1_parameters = NULL, |
| 353 | .ctrl = NULL, | 353 | .ctrl = NULL, |
| 354 | }; | 354 | }; |
| 355 | 355 | ||
| @@ -365,13 +365,13 @@ static const EVP_CIPHER camellia_192_ofb = { | |||
| 365 | .block_size = 1, | 365 | .block_size = 1, |
| 366 | .key_len = 24, | 366 | .key_len = 24, |
| 367 | .iv_len = 16, | 367 | .iv_len = 16, |
| 368 | .flags = 0 | EVP_CIPH_OFB_MODE, | 368 | .flags = EVP_CIPH_OFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 369 | .init = camellia_init_key, | 369 | .init = camellia_init_key, |
| 370 | .do_cipher = camellia_192_ofb_cipher, | 370 | .do_cipher = camellia_192_ofb_cipher, |
| 371 | .cleanup = NULL, | 371 | .cleanup = NULL, |
| 372 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 372 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 373 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 373 | .set_asn1_parameters = NULL, |
| 374 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 374 | .get_asn1_parameters = NULL, |
| 375 | .ctrl = NULL, | 375 | .ctrl = NULL, |
| 376 | }; | 376 | }; |
| 377 | 377 | ||
| @@ -387,13 +387,13 @@ static const EVP_CIPHER camellia_192_ecb = { | |||
| 387 | .block_size = 16, | 387 | .block_size = 16, |
| 388 | .key_len = 24, | 388 | .key_len = 24, |
| 389 | .iv_len = 0, | 389 | .iv_len = 0, |
| 390 | .flags = 0 | EVP_CIPH_ECB_MODE, | 390 | .flags = EVP_CIPH_ECB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 391 | .init = camellia_init_key, | 391 | .init = camellia_init_key, |
| 392 | .do_cipher = camellia_192_ecb_cipher, | 392 | .do_cipher = camellia_192_ecb_cipher, |
| 393 | .cleanup = NULL, | 393 | .cleanup = NULL, |
| 394 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 394 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 395 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 395 | .set_asn1_parameters = NULL, |
| 396 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 396 | .get_asn1_parameters = NULL, |
| 397 | .ctrl = NULL, | 397 | .ctrl = NULL, |
| 398 | }; | 398 | }; |
| 399 | 399 | ||
| @@ -479,13 +479,13 @@ static const EVP_CIPHER camellia_256_cbc = { | |||
| 479 | .block_size = 16, | 479 | .block_size = 16, |
| 480 | .key_len = 32, | 480 | .key_len = 32, |
| 481 | .iv_len = 16, | 481 | .iv_len = 16, |
| 482 | .flags = 0 | EVP_CIPH_CBC_MODE, | 482 | .flags = EVP_CIPH_CBC_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 483 | .init = camellia_init_key, | 483 | .init = camellia_init_key, |
| 484 | .do_cipher = camellia_256_cbc_cipher, | 484 | .do_cipher = camellia_256_cbc_cipher, |
| 485 | .cleanup = NULL, | 485 | .cleanup = NULL, |
| 486 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 486 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 487 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 487 | .set_asn1_parameters = NULL, |
| 488 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 488 | .get_asn1_parameters = NULL, |
| 489 | .ctrl = NULL, | 489 | .ctrl = NULL, |
| 490 | }; | 490 | }; |
| 491 | 491 | ||
| @@ -501,13 +501,13 @@ static const EVP_CIPHER camellia_256_cfb128 = { | |||
| 501 | .block_size = 1, | 501 | .block_size = 1, |
| 502 | .key_len = 32, | 502 | .key_len = 32, |
| 503 | .iv_len = 16, | 503 | .iv_len = 16, |
| 504 | .flags = 0 | EVP_CIPH_CFB_MODE, | 504 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 505 | .init = camellia_init_key, | 505 | .init = camellia_init_key, |
| 506 | .do_cipher = camellia_256_cfb128_cipher, | 506 | .do_cipher = camellia_256_cfb128_cipher, |
| 507 | .cleanup = NULL, | 507 | .cleanup = NULL, |
| 508 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 508 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 509 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 509 | .set_asn1_parameters = NULL, |
| 510 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 510 | .get_asn1_parameters = NULL, |
| 511 | .ctrl = NULL, | 511 | .ctrl = NULL, |
| 512 | }; | 512 | }; |
| 513 | 513 | ||
| @@ -523,13 +523,13 @@ static const EVP_CIPHER camellia_256_ofb = { | |||
| 523 | .block_size = 1, | 523 | .block_size = 1, |
| 524 | .key_len = 32, | 524 | .key_len = 32, |
| 525 | .iv_len = 16, | 525 | .iv_len = 16, |
| 526 | .flags = 0 | EVP_CIPH_OFB_MODE, | 526 | .flags = EVP_CIPH_OFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 527 | .init = camellia_init_key, | 527 | .init = camellia_init_key, |
| 528 | .do_cipher = camellia_256_ofb_cipher, | 528 | .do_cipher = camellia_256_ofb_cipher, |
| 529 | .cleanup = NULL, | 529 | .cleanup = NULL, |
| 530 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 530 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 531 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 531 | .set_asn1_parameters = NULL, |
| 532 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 532 | .get_asn1_parameters = NULL, |
| 533 | .ctrl = NULL, | 533 | .ctrl = NULL, |
| 534 | }; | 534 | }; |
| 535 | 535 | ||
| @@ -545,13 +545,13 @@ static const EVP_CIPHER camellia_256_ecb = { | |||
| 545 | .block_size = 16, | 545 | .block_size = 16, |
| 546 | .key_len = 32, | 546 | .key_len = 32, |
| 547 | .iv_len = 0, | 547 | .iv_len = 0, |
| 548 | .flags = 0 | EVP_CIPH_ECB_MODE, | 548 | .flags = EVP_CIPH_ECB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 549 | .init = camellia_init_key, | 549 | .init = camellia_init_key, |
| 550 | .do_cipher = camellia_256_ecb_cipher, | 550 | .do_cipher = camellia_256_ecb_cipher, |
| 551 | .cleanup = NULL, | 551 | .cleanup = NULL, |
| 552 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 552 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 553 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 553 | .set_asn1_parameters = NULL, |
| 554 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 554 | .get_asn1_parameters = NULL, |
| 555 | .ctrl = NULL, | 555 | .ctrl = NULL, |
| 556 | }; | 556 | }; |
| 557 | 557 | ||
| @@ -589,13 +589,13 @@ static const EVP_CIPHER camellia_128_cfb1 = { | |||
| 589 | .block_size = 1, | 589 | .block_size = 1, |
| 590 | .key_len = 128/8, | 590 | .key_len = 128/8, |
| 591 | .iv_len = 16, | 591 | .iv_len = 16, |
| 592 | .flags = 0 | EVP_CIPH_CFB_MODE, | 592 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 593 | .init = camellia_init_key, | 593 | .init = camellia_init_key, |
| 594 | .do_cipher = camellia_128_cfb1_cipher, | 594 | .do_cipher = camellia_128_cfb1_cipher, |
| 595 | .cleanup = NULL, | 595 | .cleanup = NULL, |
| 596 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 596 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 597 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 597 | .set_asn1_parameters = NULL, |
| 598 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 598 | .get_asn1_parameters = NULL, |
| 599 | .ctrl = NULL, | 599 | .ctrl = NULL, |
| 600 | }; | 600 | }; |
| 601 | 601 | ||
| @@ -633,13 +633,13 @@ static const EVP_CIPHER camellia_192_cfb1 = { | |||
| 633 | .block_size = 1, | 633 | .block_size = 1, |
| 634 | .key_len = 192/8, | 634 | .key_len = 192/8, |
| 635 | .iv_len = 16, | 635 | .iv_len = 16, |
| 636 | .flags = 0 | EVP_CIPH_CFB_MODE, | 636 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 637 | .init = camellia_init_key, | 637 | .init = camellia_init_key, |
| 638 | .do_cipher = camellia_192_cfb1_cipher, | 638 | .do_cipher = camellia_192_cfb1_cipher, |
| 639 | .cleanup = NULL, | 639 | .cleanup = NULL, |
| 640 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 640 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 641 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 641 | .set_asn1_parameters = NULL, |
| 642 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 642 | .get_asn1_parameters = NULL, |
| 643 | .ctrl = NULL, | 643 | .ctrl = NULL, |
| 644 | }; | 644 | }; |
| 645 | 645 | ||
| @@ -677,13 +677,13 @@ static const EVP_CIPHER camellia_256_cfb1 = { | |||
| 677 | .block_size = 1, | 677 | .block_size = 1, |
| 678 | .key_len = 256/8, | 678 | .key_len = 256/8, |
| 679 | .iv_len = 16, | 679 | .iv_len = 16, |
| 680 | .flags = 0 | EVP_CIPH_CFB_MODE, | 680 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 681 | .init = camellia_init_key, | 681 | .init = camellia_init_key, |
| 682 | .do_cipher = camellia_256_cfb1_cipher, | 682 | .do_cipher = camellia_256_cfb1_cipher, |
| 683 | .cleanup = NULL, | 683 | .cleanup = NULL, |
| 684 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 684 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 685 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 685 | .set_asn1_parameters = NULL, |
| 686 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 686 | .get_asn1_parameters = NULL, |
| 687 | .ctrl = NULL, | 687 | .ctrl = NULL, |
| 688 | }; | 688 | }; |
| 689 | 689 | ||
| @@ -720,13 +720,13 @@ static const EVP_CIPHER camellia_128_cfb8 = { | |||
| 720 | .block_size = 1, | 720 | .block_size = 1, |
| 721 | .key_len = 128/8, | 721 | .key_len = 128/8, |
| 722 | .iv_len = 16, | 722 | .iv_len = 16, |
| 723 | .flags = 0 | EVP_CIPH_CFB_MODE, | 723 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 724 | .init = camellia_init_key, | 724 | .init = camellia_init_key, |
| 725 | .do_cipher = camellia_128_cfb8_cipher, | 725 | .do_cipher = camellia_128_cfb8_cipher, |
| 726 | .cleanup = NULL, | 726 | .cleanup = NULL, |
| 727 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 727 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 728 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 728 | .set_asn1_parameters = NULL, |
| 729 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 729 | .get_asn1_parameters = NULL, |
| 730 | .ctrl = NULL, | 730 | .ctrl = NULL, |
| 731 | }; | 731 | }; |
| 732 | 732 | ||
| @@ -762,13 +762,13 @@ static const EVP_CIPHER camellia_192_cfb8 = { | |||
| 762 | .block_size = 1, | 762 | .block_size = 1, |
| 763 | .key_len = 192/8, | 763 | .key_len = 192/8, |
| 764 | .iv_len = 16, | 764 | .iv_len = 16, |
| 765 | .flags = 0 | EVP_CIPH_CFB_MODE, | 765 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 766 | .init = camellia_init_key, | 766 | .init = camellia_init_key, |
| 767 | .do_cipher = camellia_192_cfb8_cipher, | 767 | .do_cipher = camellia_192_cfb8_cipher, |
| 768 | .cleanup = NULL, | 768 | .cleanup = NULL, |
| 769 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 769 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 770 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 770 | .set_asn1_parameters = NULL, |
| 771 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 771 | .get_asn1_parameters = NULL, |
| 772 | .ctrl = NULL, | 772 | .ctrl = NULL, |
| 773 | }; | 773 | }; |
| 774 | 774 | ||
| @@ -804,13 +804,13 @@ static const EVP_CIPHER camellia_256_cfb8 = { | |||
| 804 | .block_size = 1, | 804 | .block_size = 1, |
| 805 | .key_len = 256/8, | 805 | .key_len = 256/8, |
| 806 | .iv_len = 16, | 806 | .iv_len = 16, |
| 807 | .flags = 0 | EVP_CIPH_CFB_MODE, | 807 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 808 | .init = camellia_init_key, | 808 | .init = camellia_init_key, |
| 809 | .do_cipher = camellia_256_cfb8_cipher, | 809 | .do_cipher = camellia_256_cfb8_cipher, |
| 810 | .cleanup = NULL, | 810 | .cleanup = NULL, |
| 811 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), | 811 | .ctx_size = sizeof(EVP_CAMELLIA_KEY), |
| 812 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 812 | .set_asn1_parameters = NULL, |
| 813 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 813 | .get_asn1_parameters = NULL, |
| 814 | .ctrl = NULL, | 814 | .ctrl = NULL, |
| 815 | }; | 815 | }; |
| 816 | 816 | ||
diff --git a/src/lib/libcrypto/evp/e_cast.c b/src/lib/libcrypto/evp/e_cast.c index 1575a7a5bb..283cb8cf63 100644 --- a/src/lib/libcrypto/evp/e_cast.c +++ b/src/lib/libcrypto/evp/e_cast.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_cast.c,v 1.18 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_cast.c,v 1.19 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -162,13 +162,14 @@ static const EVP_CIPHER cast5_cbc = { | |||
| 162 | .block_size = 8, | 162 | .block_size = 8, |
| 163 | .key_len = CAST_KEY_LENGTH, | 163 | .key_len = CAST_KEY_LENGTH, |
| 164 | .iv_len = 8, | 164 | .iv_len = 8, |
| 165 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CBC_MODE, | 165 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CBC_MODE | |
| 166 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 166 | .init = cast_init_key, | 167 | .init = cast_init_key, |
| 167 | .do_cipher = cast5_cbc_cipher, | 168 | .do_cipher = cast5_cbc_cipher, |
| 168 | .cleanup = NULL, | 169 | .cleanup = NULL, |
| 169 | .ctx_size = sizeof(EVP_CAST_KEY), | 170 | .ctx_size = sizeof(EVP_CAST_KEY), |
| 170 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 171 | .set_asn1_parameters = NULL, |
| 171 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 172 | .get_asn1_parameters = NULL, |
| 172 | .ctrl = NULL, | 173 | .ctrl = NULL, |
| 173 | }; | 174 | }; |
| 174 | 175 | ||
| @@ -184,13 +185,14 @@ static const EVP_CIPHER cast5_cfb64 = { | |||
| 184 | .block_size = 1, | 185 | .block_size = 1, |
| 185 | .key_len = CAST_KEY_LENGTH, | 186 | .key_len = CAST_KEY_LENGTH, |
| 186 | .iv_len = 8, | 187 | .iv_len = 8, |
| 187 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CFB_MODE, | 188 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CFB_MODE | |
| 189 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 188 | .init = cast_init_key, | 190 | .init = cast_init_key, |
| 189 | .do_cipher = cast5_cfb64_cipher, | 191 | .do_cipher = cast5_cfb64_cipher, |
| 190 | .cleanup = NULL, | 192 | .cleanup = NULL, |
| 191 | .ctx_size = sizeof(EVP_CAST_KEY), | 193 | .ctx_size = sizeof(EVP_CAST_KEY), |
| 192 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 194 | .set_asn1_parameters = NULL, |
| 193 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 195 | .get_asn1_parameters = NULL, |
| 194 | .ctrl = NULL, | 196 | .ctrl = NULL, |
| 195 | }; | 197 | }; |
| 196 | 198 | ||
| @@ -206,13 +208,14 @@ static const EVP_CIPHER cast5_ofb = { | |||
| 206 | .block_size = 1, | 208 | .block_size = 1, |
| 207 | .key_len = CAST_KEY_LENGTH, | 209 | .key_len = CAST_KEY_LENGTH, |
| 208 | .iv_len = 8, | 210 | .iv_len = 8, |
| 209 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_OFB_MODE, | 211 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_OFB_MODE | |
| 212 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 210 | .init = cast_init_key, | 213 | .init = cast_init_key, |
| 211 | .do_cipher = cast5_ofb_cipher, | 214 | .do_cipher = cast5_ofb_cipher, |
| 212 | .cleanup = NULL, | 215 | .cleanup = NULL, |
| 213 | .ctx_size = sizeof(EVP_CAST_KEY), | 216 | .ctx_size = sizeof(EVP_CAST_KEY), |
| 214 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 217 | .set_asn1_parameters = NULL, |
| 215 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 218 | .get_asn1_parameters = NULL, |
| 216 | .ctrl = NULL, | 219 | .ctrl = NULL, |
| 217 | }; | 220 | }; |
| 218 | 221 | ||
| @@ -228,13 +231,14 @@ static const EVP_CIPHER cast5_ecb = { | |||
| 228 | .block_size = 8, | 231 | .block_size = 8, |
| 229 | .key_len = CAST_KEY_LENGTH, | 232 | .key_len = CAST_KEY_LENGTH, |
| 230 | .iv_len = 0, | 233 | .iv_len = 0, |
| 231 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_ECB_MODE, | 234 | .flags = EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_ECB_MODE | |
| 235 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 232 | .init = cast_init_key, | 236 | .init = cast_init_key, |
| 233 | .do_cipher = cast5_ecb_cipher, | 237 | .do_cipher = cast5_ecb_cipher, |
| 234 | .cleanup = NULL, | 238 | .cleanup = NULL, |
| 235 | .ctx_size = sizeof(EVP_CAST_KEY), | 239 | .ctx_size = sizeof(EVP_CAST_KEY), |
| 236 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 240 | .set_asn1_parameters = NULL, |
| 237 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 241 | .get_asn1_parameters = NULL, |
| 238 | .ctrl = NULL, | 242 | .ctrl = NULL, |
| 239 | }; | 243 | }; |
| 240 | 244 | ||
diff --git a/src/lib/libcrypto/evp/e_des.c b/src/lib/libcrypto/evp/e_des.c index fb335e95b1..680f77a723 100644 --- a/src/lib/libcrypto/evp/e_des.c +++ b/src/lib/libcrypto/evp/e_des.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_des.c,v 1.24 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_des.c,v 1.25 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -226,13 +226,14 @@ static const EVP_CIPHER des_cbc = { | |||
| 226 | .block_size = 8, | 226 | .block_size = 8, |
| 227 | .key_len = 8, | 227 | .key_len = 8, |
| 228 | .iv_len = 8, | 228 | .iv_len = 8, |
| 229 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE, | 229 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE | |
| 230 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 230 | .init = des_init_key, | 231 | .init = des_init_key, |
| 231 | .do_cipher = des_cbc_cipher, | 232 | .do_cipher = des_cbc_cipher, |
| 232 | .cleanup = NULL, | 233 | .cleanup = NULL, |
| 233 | .ctx_size = sizeof(DES_key_schedule), | 234 | .ctx_size = sizeof(DES_key_schedule), |
| 234 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 235 | .set_asn1_parameters = NULL, |
| 235 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 236 | .get_asn1_parameters = NULL, |
| 236 | .ctrl = des_ctrl, | 237 | .ctrl = des_ctrl, |
| 237 | }; | 238 | }; |
| 238 | 239 | ||
| @@ -248,13 +249,14 @@ static const EVP_CIPHER des_cfb64 = { | |||
| 248 | .block_size = 1, | 249 | .block_size = 1, |
| 249 | .key_len = 8, | 250 | .key_len = 8, |
| 250 | .iv_len = 8, | 251 | .iv_len = 8, |
| 251 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 252 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 253 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 252 | .init = des_init_key, | 254 | .init = des_init_key, |
| 253 | .do_cipher = des_cfb64_cipher, | 255 | .do_cipher = des_cfb64_cipher, |
| 254 | .cleanup = NULL, | 256 | .cleanup = NULL, |
| 255 | .ctx_size = sizeof(DES_key_schedule), | 257 | .ctx_size = sizeof(DES_key_schedule), |
| 256 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 258 | .set_asn1_parameters = NULL, |
| 257 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 259 | .get_asn1_parameters = NULL, |
| 258 | .ctrl = des_ctrl, | 260 | .ctrl = des_ctrl, |
| 259 | }; | 261 | }; |
| 260 | 262 | ||
| @@ -270,13 +272,14 @@ static const EVP_CIPHER des_ofb = { | |||
| 270 | .block_size = 1, | 272 | .block_size = 1, |
| 271 | .key_len = 8, | 273 | .key_len = 8, |
| 272 | .iv_len = 8, | 274 | .iv_len = 8, |
| 273 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_OFB_MODE, | 275 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_OFB_MODE | |
| 276 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 274 | .init = des_init_key, | 277 | .init = des_init_key, |
| 275 | .do_cipher = des_ofb_cipher, | 278 | .do_cipher = des_ofb_cipher, |
| 276 | .cleanup = NULL, | 279 | .cleanup = NULL, |
| 277 | .ctx_size = sizeof(DES_key_schedule), | 280 | .ctx_size = sizeof(DES_key_schedule), |
| 278 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 281 | .set_asn1_parameters = NULL, |
| 279 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 282 | .get_asn1_parameters = NULL, |
| 280 | .ctrl = des_ctrl, | 283 | .ctrl = des_ctrl, |
| 281 | }; | 284 | }; |
| 282 | 285 | ||
| @@ -292,13 +295,14 @@ static const EVP_CIPHER des_ecb = { | |||
| 292 | .block_size = 8, | 295 | .block_size = 8, |
| 293 | .key_len = 8, | 296 | .key_len = 8, |
| 294 | .iv_len = 0, | 297 | .iv_len = 0, |
| 295 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE, | 298 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE | |
| 299 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 296 | .init = des_init_key, | 300 | .init = des_init_key, |
| 297 | .do_cipher = des_ecb_cipher, | 301 | .do_cipher = des_ecb_cipher, |
| 298 | .cleanup = NULL, | 302 | .cleanup = NULL, |
| 299 | .ctx_size = sizeof(DES_key_schedule), | 303 | .ctx_size = sizeof(DES_key_schedule), |
| 300 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 304 | .set_asn1_parameters = NULL, |
| 301 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 305 | .get_asn1_parameters = NULL, |
| 302 | .ctrl = des_ctrl, | 306 | .ctrl = des_ctrl, |
| 303 | }; | 307 | }; |
| 304 | 308 | ||
| @@ -314,13 +318,14 @@ static const EVP_CIPHER des_cfb1 = { | |||
| 314 | .block_size = 1, | 318 | .block_size = 1, |
| 315 | .key_len = 8, | 319 | .key_len = 8, |
| 316 | .iv_len = 8, | 320 | .iv_len = 8, |
| 317 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 321 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 322 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 318 | .init = des_init_key, | 323 | .init = des_init_key, |
| 319 | .do_cipher = des_cfb1_cipher, | 324 | .do_cipher = des_cfb1_cipher, |
| 320 | .cleanup = NULL, | 325 | .cleanup = NULL, |
| 321 | .ctx_size = sizeof(DES_key_schedule), | 326 | .ctx_size = sizeof(DES_key_schedule), |
| 322 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 327 | .set_asn1_parameters = NULL, |
| 323 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 328 | .get_asn1_parameters = NULL, |
| 324 | .ctrl = des_ctrl, | 329 | .ctrl = des_ctrl, |
| 325 | }; | 330 | }; |
| 326 | 331 | ||
| @@ -336,13 +341,14 @@ static const EVP_CIPHER des_cfb8 = { | |||
| 336 | .block_size = 1, | 341 | .block_size = 1, |
| 337 | .key_len = 8, | 342 | .key_len = 8, |
| 338 | .iv_len = 8, | 343 | .iv_len = 8, |
| 339 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 344 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 345 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 340 | .init = des_init_key, | 346 | .init = des_init_key, |
| 341 | .do_cipher = des_cfb8_cipher, | 347 | .do_cipher = des_cfb8_cipher, |
| 342 | .cleanup = NULL, | 348 | .cleanup = NULL, |
| 343 | .ctx_size = sizeof(DES_key_schedule), | 349 | .ctx_size = sizeof(DES_key_schedule), |
| 344 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 350 | .set_asn1_parameters = NULL, |
| 345 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 351 | .get_asn1_parameters = NULL, |
| 346 | .ctrl = des_ctrl, | 352 | .ctrl = des_ctrl, |
| 347 | }; | 353 | }; |
| 348 | 354 | ||
diff --git a/src/lib/libcrypto/evp/e_des3.c b/src/lib/libcrypto/evp/e_des3.c index 48fbcdb366..f3eb4cce1b 100644 --- a/src/lib/libcrypto/evp/e_des3.c +++ b/src/lib/libcrypto/evp/e_des3.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_des3.c,v 1.30 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_des3.c,v 1.31 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -258,13 +258,14 @@ static const EVP_CIPHER des_ede_cbc = { | |||
| 258 | .block_size = 8, | 258 | .block_size = 8, |
| 259 | .key_len = 16, | 259 | .key_len = 16, |
| 260 | .iv_len = 8, | 260 | .iv_len = 8, |
| 261 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE, | 261 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE | |
| 262 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 262 | .init = des_ede_init_key, | 263 | .init = des_ede_init_key, |
| 263 | .do_cipher = des_ede_cbc_cipher, | 264 | .do_cipher = des_ede_cbc_cipher, |
| 264 | .cleanup = NULL, | 265 | .cleanup = NULL, |
| 265 | .ctx_size = sizeof(DES_EDE_KEY), | 266 | .ctx_size = sizeof(DES_EDE_KEY), |
| 266 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 267 | .set_asn1_parameters = NULL, |
| 267 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 268 | .get_asn1_parameters = NULL, |
| 268 | .ctrl = des3_ctrl, | 269 | .ctrl = des3_ctrl, |
| 269 | }; | 270 | }; |
| 270 | 271 | ||
| @@ -280,13 +281,14 @@ static const EVP_CIPHER des_ede_cfb64 = { | |||
| 280 | .block_size = 1, | 281 | .block_size = 1, |
| 281 | .key_len = 16, | 282 | .key_len = 16, |
| 282 | .iv_len = 8, | 283 | .iv_len = 8, |
| 283 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 284 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 285 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 284 | .init = des_ede_init_key, | 286 | .init = des_ede_init_key, |
| 285 | .do_cipher = des_ede_cfb64_cipher, | 287 | .do_cipher = des_ede_cfb64_cipher, |
| 286 | .cleanup = NULL, | 288 | .cleanup = NULL, |
| 287 | .ctx_size = sizeof(DES_EDE_KEY), | 289 | .ctx_size = sizeof(DES_EDE_KEY), |
| 288 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 290 | .set_asn1_parameters = NULL, |
| 289 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 291 | .get_asn1_parameters = NULL, |
| 290 | .ctrl = des3_ctrl, | 292 | .ctrl = des3_ctrl, |
| 291 | }; | 293 | }; |
| 292 | 294 | ||
| @@ -307,8 +309,8 @@ static const EVP_CIPHER des_ede_ofb = { | |||
| 307 | .do_cipher = des_ede_ofb_cipher, | 309 | .do_cipher = des_ede_ofb_cipher, |
| 308 | .cleanup = NULL, | 310 | .cleanup = NULL, |
| 309 | .ctx_size = sizeof(DES_EDE_KEY), | 311 | .ctx_size = sizeof(DES_EDE_KEY), |
| 310 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 312 | .set_asn1_parameters = NULL, |
| 311 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 313 | .get_asn1_parameters = NULL, |
| 312 | .ctrl = des3_ctrl, | 314 | .ctrl = des3_ctrl, |
| 313 | }; | 315 | }; |
| 314 | 316 | ||
| @@ -324,13 +326,14 @@ static const EVP_CIPHER des_ede_ecb = { | |||
| 324 | .block_size = 8, | 326 | .block_size = 8, |
| 325 | .key_len = 16, | 327 | .key_len = 16, |
| 326 | .iv_len = 0, | 328 | .iv_len = 0, |
| 327 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE, | 329 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE | |
| 330 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 328 | .init = des_ede_init_key, | 331 | .init = des_ede_init_key, |
| 329 | .do_cipher = des_ede_ecb_cipher, | 332 | .do_cipher = des_ede_ecb_cipher, |
| 330 | .cleanup = NULL, | 333 | .cleanup = NULL, |
| 331 | .ctx_size = sizeof(DES_EDE_KEY), | 334 | .ctx_size = sizeof(DES_EDE_KEY), |
| 332 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 335 | .set_asn1_parameters = NULL, |
| 333 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 336 | .get_asn1_parameters = NULL, |
| 334 | .ctrl = des3_ctrl, | 337 | .ctrl = des3_ctrl, |
| 335 | }; | 338 | }; |
| 336 | 339 | ||
| @@ -352,13 +355,14 @@ static const EVP_CIPHER des_ede3_cbc = { | |||
| 352 | .block_size = 8, | 355 | .block_size = 8, |
| 353 | .key_len = 24, | 356 | .key_len = 24, |
| 354 | .iv_len = 8, | 357 | .iv_len = 8, |
| 355 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE, | 358 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CBC_MODE | |
| 359 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 356 | .init = des_ede3_init_key, | 360 | .init = des_ede3_init_key, |
| 357 | .do_cipher = des_ede3_cbc_cipher, | 361 | .do_cipher = des_ede3_cbc_cipher, |
| 358 | .cleanup = NULL, | 362 | .cleanup = NULL, |
| 359 | .ctx_size = sizeof(DES_EDE_KEY), | 363 | .ctx_size = sizeof(DES_EDE_KEY), |
| 360 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 364 | .set_asn1_parameters = NULL, |
| 361 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 365 | .get_asn1_parameters = NULL, |
| 362 | .ctrl = des3_ctrl, | 366 | .ctrl = des3_ctrl, |
| 363 | }; | 367 | }; |
| 364 | 368 | ||
| @@ -374,13 +378,14 @@ static const EVP_CIPHER des_ede3_cfb64 = { | |||
| 374 | .block_size = 1, | 378 | .block_size = 1, |
| 375 | .key_len = 24, | 379 | .key_len = 24, |
| 376 | .iv_len = 8, | 380 | .iv_len = 8, |
| 377 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 381 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 382 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 378 | .init = des_ede3_init_key, | 383 | .init = des_ede3_init_key, |
| 379 | .do_cipher = des_ede3_cfb64_cipher, | 384 | .do_cipher = des_ede3_cfb64_cipher, |
| 380 | .cleanup = NULL, | 385 | .cleanup = NULL, |
| 381 | .ctx_size = sizeof(DES_EDE_KEY), | 386 | .ctx_size = sizeof(DES_EDE_KEY), |
| 382 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 387 | .set_asn1_parameters = NULL, |
| 383 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 388 | .get_asn1_parameters = NULL, |
| 384 | .ctrl = des3_ctrl, | 389 | .ctrl = des3_ctrl, |
| 385 | }; | 390 | }; |
| 386 | 391 | ||
| @@ -396,13 +401,14 @@ static const EVP_CIPHER des_ede3_ofb = { | |||
| 396 | .block_size = 1, | 401 | .block_size = 1, |
| 397 | .key_len = 24, | 402 | .key_len = 24, |
| 398 | .iv_len = 8, | 403 | .iv_len = 8, |
| 399 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_OFB_MODE, | 404 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_OFB_MODE | |
| 405 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 400 | .init = des_ede3_init_key, | 406 | .init = des_ede3_init_key, |
| 401 | .do_cipher = des_ede3_ofb_cipher, | 407 | .do_cipher = des_ede3_ofb_cipher, |
| 402 | .cleanup = NULL, | 408 | .cleanup = NULL, |
| 403 | .ctx_size = sizeof(DES_EDE_KEY), | 409 | .ctx_size = sizeof(DES_EDE_KEY), |
| 404 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 410 | .set_asn1_parameters = NULL, |
| 405 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 411 | .get_asn1_parameters = NULL, |
| 406 | .ctrl = des3_ctrl, | 412 | .ctrl = des3_ctrl, |
| 407 | }; | 413 | }; |
| 408 | 414 | ||
| @@ -418,13 +424,14 @@ static const EVP_CIPHER des_ede3_ecb = { | |||
| 418 | .block_size = 8, | 424 | .block_size = 8, |
| 419 | .key_len = 24, | 425 | .key_len = 24, |
| 420 | .iv_len = 0, | 426 | .iv_len = 0, |
| 421 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE, | 427 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_ECB_MODE | |
| 428 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 422 | .init = des_ede3_init_key, | 429 | .init = des_ede3_init_key, |
| 423 | .do_cipher = des_ede3_ecb_cipher, | 430 | .do_cipher = des_ede3_ecb_cipher, |
| 424 | .cleanup = NULL, | 431 | .cleanup = NULL, |
| 425 | .ctx_size = sizeof(DES_EDE_KEY), | 432 | .ctx_size = sizeof(DES_EDE_KEY), |
| 426 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 433 | .set_asn1_parameters = NULL, |
| 427 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 434 | .get_asn1_parameters = NULL, |
| 428 | .ctrl = des3_ctrl, | 435 | .ctrl = des3_ctrl, |
| 429 | }; | 436 | }; |
| 430 | 437 | ||
| @@ -441,13 +448,14 @@ static const EVP_CIPHER des_ede3_cfb1 = { | |||
| 441 | .block_size = 1, | 448 | .block_size = 1, |
| 442 | .key_len = 24, | 449 | .key_len = 24, |
| 443 | .iv_len = 8, | 450 | .iv_len = 8, |
| 444 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 451 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 452 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 445 | .init = des_ede3_init_key, | 453 | .init = des_ede3_init_key, |
| 446 | .do_cipher = des_ede3_cfb1_cipher, | 454 | .do_cipher = des_ede3_cfb1_cipher, |
| 447 | .cleanup = NULL, | 455 | .cleanup = NULL, |
| 448 | .ctx_size = sizeof(DES_EDE_KEY), | 456 | .ctx_size = sizeof(DES_EDE_KEY), |
| 449 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 457 | .set_asn1_parameters = NULL, |
| 450 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 458 | .get_asn1_parameters = NULL, |
| 451 | .ctrl = des3_ctrl, | 459 | .ctrl = des3_ctrl, |
| 452 | }; | 460 | }; |
| 453 | 461 | ||
| @@ -464,13 +472,14 @@ static const EVP_CIPHER des_ede3_cfb8 = { | |||
| 464 | .block_size = 1, | 472 | .block_size = 1, |
| 465 | .key_len = 24, | 473 | .key_len = 24, |
| 466 | .iv_len = 8, | 474 | .iv_len = 8, |
| 467 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE, | 475 | .flags = EVP_CIPH_RAND_KEY | EVP_CIPH_CFB_MODE | |
| 476 | EVP_CIPH_FLAG_DEFAULT_ASN1, | ||
| 468 | .init = des_ede3_init_key, | 477 | .init = des_ede3_init_key, |
| 469 | .do_cipher = des_ede3_cfb8_cipher, | 478 | .do_cipher = des_ede3_cfb8_cipher, |
| 470 | .cleanup = NULL, | 479 | .cleanup = NULL, |
| 471 | .ctx_size = sizeof(DES_EDE_KEY), | 480 | .ctx_size = sizeof(DES_EDE_KEY), |
| 472 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 481 | .set_asn1_parameters = NULL, |
| 473 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 482 | .get_asn1_parameters = NULL, |
| 474 | .ctrl = des3_ctrl, | 483 | .ctrl = des3_ctrl, |
| 475 | }; | 484 | }; |
| 476 | 485 | ||
diff --git a/src/lib/libcrypto/evp/e_idea.c b/src/lib/libcrypto/evp/e_idea.c index 86cf77602a..5d33a110fd 100644 --- a/src/lib/libcrypto/evp/e_idea.c +++ b/src/lib/libcrypto/evp/e_idea.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_idea.c,v 1.22 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_idea.c,v 1.23 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -181,13 +181,13 @@ static const EVP_CIPHER idea_cbc = { | |||
| 181 | .block_size = 8, | 181 | .block_size = 8, |
| 182 | .key_len = 16, | 182 | .key_len = 16, |
| 183 | .iv_len = 8, | 183 | .iv_len = 8, |
| 184 | .flags = 0 | EVP_CIPH_CBC_MODE, | 184 | .flags = EVP_CIPH_CBC_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 185 | .init = idea_init_key, | 185 | .init = idea_init_key, |
| 186 | .do_cipher = idea_cbc_cipher, | 186 | .do_cipher = idea_cbc_cipher, |
| 187 | .cleanup = NULL, | 187 | .cleanup = NULL, |
| 188 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), | 188 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), |
| 189 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 189 | .set_asn1_parameters = NULL, |
| 190 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 190 | .get_asn1_parameters = NULL, |
| 191 | .ctrl = NULL, | 191 | .ctrl = NULL, |
| 192 | }; | 192 | }; |
| 193 | 193 | ||
| @@ -203,13 +203,13 @@ static const EVP_CIPHER idea_cfb64 = { | |||
| 203 | .block_size = 1, | 203 | .block_size = 1, |
| 204 | .key_len = 16, | 204 | .key_len = 16, |
| 205 | .iv_len = 8, | 205 | .iv_len = 8, |
| 206 | .flags = 0 | EVP_CIPH_CFB_MODE, | 206 | .flags = EVP_CIPH_CFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 207 | .init = idea_init_key, | 207 | .init = idea_init_key, |
| 208 | .do_cipher = idea_cfb64_cipher, | 208 | .do_cipher = idea_cfb64_cipher, |
| 209 | .cleanup = NULL, | 209 | .cleanup = NULL, |
| 210 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), | 210 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), |
| 211 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 211 | .set_asn1_parameters = NULL, |
| 212 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 212 | .get_asn1_parameters = NULL, |
| 213 | .ctrl = NULL, | 213 | .ctrl = NULL, |
| 214 | }; | 214 | }; |
| 215 | 215 | ||
| @@ -225,13 +225,13 @@ static const EVP_CIPHER idea_ofb = { | |||
| 225 | .block_size = 1, | 225 | .block_size = 1, |
| 226 | .key_len = 16, | 226 | .key_len = 16, |
| 227 | .iv_len = 8, | 227 | .iv_len = 8, |
| 228 | .flags = 0 | EVP_CIPH_OFB_MODE, | 228 | .flags = EVP_CIPH_OFB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 229 | .init = idea_init_key, | 229 | .init = idea_init_key, |
| 230 | .do_cipher = idea_ofb_cipher, | 230 | .do_cipher = idea_ofb_cipher, |
| 231 | .cleanup = NULL, | 231 | .cleanup = NULL, |
| 232 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), | 232 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), |
| 233 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 233 | .set_asn1_parameters = NULL, |
| 234 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 234 | .get_asn1_parameters = NULL, |
| 235 | .ctrl = NULL, | 235 | .ctrl = NULL, |
| 236 | }; | 236 | }; |
| 237 | 237 | ||
| @@ -247,13 +247,13 @@ static const EVP_CIPHER idea_ecb = { | |||
| 247 | .block_size = 8, | 247 | .block_size = 8, |
| 248 | .key_len = 16, | 248 | .key_len = 16, |
| 249 | .iv_len = 0, | 249 | .iv_len = 0, |
| 250 | .flags = 0 | EVP_CIPH_ECB_MODE, | 250 | .flags = EVP_CIPH_ECB_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 251 | .init = idea_init_key, | 251 | .init = idea_init_key, |
| 252 | .do_cipher = idea_ecb_cipher, | 252 | .do_cipher = idea_ecb_cipher, |
| 253 | .cleanup = NULL, | 253 | .cleanup = NULL, |
| 254 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), | 254 | .ctx_size = sizeof(IDEA_KEY_SCHEDULE), |
| 255 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 255 | .set_asn1_parameters = NULL, |
| 256 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 256 | .get_asn1_parameters = NULL, |
| 257 | .ctrl = NULL, | 257 | .ctrl = NULL, |
| 258 | }; | 258 | }; |
| 259 | 259 | ||
diff --git a/src/lib/libcrypto/evp/e_xcbc_d.c b/src/lib/libcrypto/evp/e_xcbc_d.c index 1e3bee0791..1c5e6c32b2 100644 --- a/src/lib/libcrypto/evp/e_xcbc_d.c +++ b/src/lib/libcrypto/evp/e_xcbc_d.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: e_xcbc_d.c,v 1.18 2024/04/09 13:52:41 beck Exp $ */ | 1 | /* $OpenBSD: e_xcbc_d.c,v 1.19 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -88,13 +88,13 @@ static const EVP_CIPHER d_xcbc_cipher = { | |||
| 88 | .block_size = 8, | 88 | .block_size = 8, |
| 89 | .key_len = 24, | 89 | .key_len = 24, |
| 90 | .iv_len = 8, | 90 | .iv_len = 8, |
| 91 | .flags = EVP_CIPH_CBC_MODE, | 91 | .flags = EVP_CIPH_CBC_MODE | EVP_CIPH_FLAG_DEFAULT_ASN1, |
| 92 | .init = desx_cbc_init_key, | 92 | .init = desx_cbc_init_key, |
| 93 | .do_cipher = desx_cbc_cipher, | 93 | .do_cipher = desx_cbc_cipher, |
| 94 | .cleanup = NULL, | 94 | .cleanup = NULL, |
| 95 | .ctx_size = sizeof(DESX_CBC_KEY), | 95 | .ctx_size = sizeof(DESX_CBC_KEY), |
| 96 | .set_asn1_parameters = EVP_CIPHER_set_asn1_iv, | 96 | .set_asn1_parameters = NULL, |
| 97 | .get_asn1_parameters = EVP_CIPHER_get_asn1_iv, | 97 | .get_asn1_parameters = NULL, |
| 98 | .ctrl = NULL, | 98 | .ctrl = NULL, |
| 99 | }; | 99 | }; |
| 100 | 100 | ||
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h index c2b81d0576..94295e1262 100644 --- a/src/lib/libcrypto/evp/evp.h +++ b/src/lib/libcrypto/evp/evp.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: evp.h,v 1.137 2024/08/31 10:38:49 tb Exp $ */ | 1 | /* $OpenBSD: evp.h,v 1.138 2025/07/02 06:36:52 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -778,28 +778,24 @@ void *EVP_PKEY_get0(const EVP_PKEY *pkey); | |||
| 778 | const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); | 778 | const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); |
| 779 | 779 | ||
| 780 | #ifndef OPENSSL_NO_RSA | 780 | #ifndef OPENSSL_NO_RSA |
| 781 | struct rsa_st; | 781 | RSA *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); |
| 782 | struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); | 782 | RSA *EVP_PKEY_get1_RSA(const EVP_PKEY *pkey); |
| 783 | struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); | 783 | int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key); |
| 784 | int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); | ||
| 785 | #endif | 784 | #endif |
| 786 | #ifndef OPENSSL_NO_DSA | 785 | #ifndef OPENSSL_NO_DSA |
| 787 | struct dsa_st; | 786 | DSA *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); |
| 788 | struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); | 787 | DSA *EVP_PKEY_get1_DSA(const EVP_PKEY *pkey); |
| 789 | struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); | 788 | int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key); |
| 790 | int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); | ||
| 791 | #endif | 789 | #endif |
| 792 | #ifndef OPENSSL_NO_DH | 790 | #ifndef OPENSSL_NO_DH |
| 793 | struct dh_st; | 791 | DH *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); |
| 794 | struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); | 792 | DH *EVP_PKEY_get1_DH(const EVP_PKEY *pkey); |
| 795 | struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); | 793 | int EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key); |
| 796 | int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); | ||
| 797 | #endif | 794 | #endif |
| 798 | #ifndef OPENSSL_NO_EC | 795 | #ifndef OPENSSL_NO_EC |
| 799 | struct ec_key_st; | 796 | EC_KEY *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); |
| 800 | struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); | 797 | EC_KEY *EVP_PKEY_get1_EC_KEY(const EVP_PKEY *pkey); |
| 801 | struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); | 798 | int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key); |
| 802 | int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); | ||
| 803 | #endif | 799 | #endif |
| 804 | 800 | ||
| 805 | EVP_PKEY *EVP_PKEY_new(void); | 801 | EVP_PKEY *EVP_PKEY_new(void); |
diff --git a/src/lib/libcrypto/evp/evp_cipher.c b/src/lib/libcrypto/evp/evp_cipher.c index 16606991ae..04e0e1c0b0 100644 --- a/src/lib/libcrypto/evp/evp_cipher.c +++ b/src/lib/libcrypto/evp/evp_cipher.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: evp_cipher.c,v 1.24 2025/05/10 05:54:38 tb Exp $ */ | 1 | /* $OpenBSD: evp_cipher.c,v 1.28 2025/07/02 06:19:46 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -167,7 +167,7 @@ EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, | |||
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | if ((ctx->cipher->flags & EVP_CIPH_CTRL_INIT) != 0) { | 169 | if ((ctx->cipher->flags & EVP_CIPH_CTRL_INIT) != 0) { |
| 170 | if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) { | 170 | if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL) <= 0) { |
| 171 | EVPerror(EVP_R_INITIALIZATION_ERROR); | 171 | EVPerror(EVP_R_INITIALIZATION_ERROR); |
| 172 | return 0; | 172 | return 0; |
| 173 | } | 173 | } |
| @@ -944,14 +944,20 @@ EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx) | |||
| 944 | LCRYPTO_ALIAS(EVP_CIPHER_CTX_flags); | 944 | LCRYPTO_ALIAS(EVP_CIPHER_CTX_flags); |
| 945 | 945 | ||
| 946 | /* | 946 | /* |
| 947 | * Used by CMS and its predecessors. Only GOST and RC2 have a custom method. | 947 | * Used by CMS and its predecessors. Only RC2 has a custom method. |
| 948 | */ | 948 | */ |
| 949 | 949 | ||
| 950 | int | 950 | int |
| 951 | EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | 951 | EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) |
| 952 | { | 952 | { |
| 953 | int iv_len; | 953 | int iv_len; |
| 954 | 954 | ||
| 955 | if (ctx->cipher->get_asn1_parameters != NULL) | ||
| 956 | return ctx->cipher->get_asn1_parameters(ctx, type); | ||
| 957 | |||
| 958 | if ((ctx->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) == 0) | ||
| 959 | return -1; | ||
| 960 | |||
| 955 | if (type == NULL) | 961 | if (type == NULL) |
| 956 | return 0; | 962 | return 0; |
| 957 | 963 | ||
| @@ -970,21 +976,15 @@ EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | |||
| 970 | } | 976 | } |
| 971 | 977 | ||
| 972 | int | 978 | int |
| 973 | EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | 979 | EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) |
| 974 | { | 980 | { |
| 975 | if (ctx->cipher->get_asn1_parameters != NULL) | 981 | int iv_len; |
| 976 | return ctx->cipher->get_asn1_parameters(ctx, type); | ||
| 977 | |||
| 978 | if ((ctx->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) != 0) | ||
| 979 | return EVP_CIPHER_get_asn1_iv(ctx, type); | ||
| 980 | 982 | ||
| 981 | return -1; | 983 | if (ctx->cipher->set_asn1_parameters != NULL) |
| 982 | } | 984 | return ctx->cipher->set_asn1_parameters(ctx, type); |
| 983 | 985 | ||
| 984 | int | 986 | if ((ctx->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) == 0) |
| 985 | EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | 987 | return -1; |
| 986 | { | ||
| 987 | int iv_len; | ||
| 988 | 988 | ||
| 989 | if (type == NULL) | 989 | if (type == NULL) |
| 990 | return 0; | 990 | return 0; |
| @@ -998,18 +998,6 @@ EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | |||
| 998 | return ASN1_TYPE_set_octetstring(type, ctx->oiv, iv_len); | 998 | return ASN1_TYPE_set_octetstring(type, ctx->oiv, iv_len); |
| 999 | } | 999 | } |
| 1000 | 1000 | ||
| 1001 | int | ||
| 1002 | EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *type) | ||
| 1003 | { | ||
| 1004 | if (ctx->cipher->set_asn1_parameters != NULL) | ||
| 1005 | return ctx->cipher->set_asn1_parameters(ctx, type); | ||
| 1006 | |||
| 1007 | if ((ctx->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) != 0) | ||
| 1008 | return EVP_CIPHER_set_asn1_iv(ctx, type); | ||
| 1009 | |||
| 1010 | return -1; | ||
| 1011 | } | ||
| 1012 | |||
| 1013 | /* Convert the various cipher NIDs and dummies to a proper OID NID */ | 1001 | /* Convert the various cipher NIDs and dummies to a proper OID NID */ |
| 1014 | int | 1002 | int |
| 1015 | EVP_CIPHER_type(const EVP_CIPHER *cipher) | 1003 | EVP_CIPHER_type(const EVP_CIPHER *cipher) |
diff --git a/src/lib/libcrypto/evp/evp_local.h b/src/lib/libcrypto/evp/evp_local.h index 54cd65d0af..76465643c6 100644 --- a/src/lib/libcrypto/evp/evp_local.h +++ b/src/lib/libcrypto/evp/evp_local.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: evp_local.h,v 1.25 2024/08/29 16:58:19 tb Exp $ */ | 1 | /* $OpenBSD: evp_local.h,v 1.26 2025/05/27 03:58:12 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -353,9 +353,7 @@ struct evp_aead_ctx_st { | |||
| 353 | }; | 353 | }; |
| 354 | 354 | ||
| 355 | /* Legacy EVP_CIPHER methods used by CMS and its predecessors. */ | 355 | /* Legacy EVP_CIPHER methods used by CMS and its predecessors. */ |
| 356 | int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); | ||
| 357 | int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); | 356 | int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); |
| 358 | int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); | ||
| 359 | int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); | 357 | int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *cipher, ASN1_TYPE *type); |
| 360 | 358 | ||
| 361 | int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, | 359 | int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, |
diff --git a/src/lib/libcrypto/evp/p_lib.c b/src/lib/libcrypto/evp/p_lib.c index 9623bb59a1..3f88185737 100644 --- a/src/lib/libcrypto/evp/p_lib.c +++ b/src/lib/libcrypto/evp/p_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p_lib.c,v 1.62 2025/05/10 05:54:38 tb Exp $ */ | 1 | /* $OpenBSD: p_lib.c,v 1.63 2025/07/02 06:36:52 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -628,7 +628,7 @@ LCRYPTO_ALIAS(EVP_PKEY_get0_hmac); | |||
| 628 | 628 | ||
| 629 | #ifndef OPENSSL_NO_RSA | 629 | #ifndef OPENSSL_NO_RSA |
| 630 | RSA * | 630 | RSA * |
| 631 | EVP_PKEY_get0_RSA(EVP_PKEY *pkey) | 631 | EVP_PKEY_get0_RSA(const EVP_PKEY *pkey) |
| 632 | { | 632 | { |
| 633 | if (pkey->type == EVP_PKEY_RSA || pkey->type == EVP_PKEY_RSA_PSS) | 633 | if (pkey->type == EVP_PKEY_RSA || pkey->type == EVP_PKEY_RSA_PSS) |
| 634 | return pkey->pkey.rsa; | 634 | return pkey->pkey.rsa; |
| @@ -639,7 +639,7 @@ EVP_PKEY_get0_RSA(EVP_PKEY *pkey) | |||
| 639 | LCRYPTO_ALIAS(EVP_PKEY_get0_RSA); | 639 | LCRYPTO_ALIAS(EVP_PKEY_get0_RSA); |
| 640 | 640 | ||
| 641 | RSA * | 641 | RSA * |
| 642 | EVP_PKEY_get1_RSA(EVP_PKEY *pkey) | 642 | EVP_PKEY_get1_RSA(const EVP_PKEY *pkey) |
| 643 | { | 643 | { |
| 644 | RSA *rsa; | 644 | RSA *rsa; |
| 645 | 645 | ||
| @@ -665,7 +665,7 @@ LCRYPTO_ALIAS(EVP_PKEY_set1_RSA); | |||
| 665 | 665 | ||
| 666 | #ifndef OPENSSL_NO_DSA | 666 | #ifndef OPENSSL_NO_DSA |
| 667 | DSA * | 667 | DSA * |
| 668 | EVP_PKEY_get0_DSA(EVP_PKEY *pkey) | 668 | EVP_PKEY_get0_DSA(const EVP_PKEY *pkey) |
| 669 | { | 669 | { |
| 670 | if (pkey->type != EVP_PKEY_DSA) { | 670 | if (pkey->type != EVP_PKEY_DSA) { |
| 671 | EVPerror(EVP_R_EXPECTING_A_DSA_KEY); | 671 | EVPerror(EVP_R_EXPECTING_A_DSA_KEY); |
| @@ -676,7 +676,7 @@ EVP_PKEY_get0_DSA(EVP_PKEY *pkey) | |||
| 676 | LCRYPTO_ALIAS(EVP_PKEY_get0_DSA); | 676 | LCRYPTO_ALIAS(EVP_PKEY_get0_DSA); |
| 677 | 677 | ||
| 678 | DSA * | 678 | DSA * |
| 679 | EVP_PKEY_get1_DSA(EVP_PKEY *pkey) | 679 | EVP_PKEY_get1_DSA(const EVP_PKEY *pkey) |
| 680 | { | 680 | { |
| 681 | DSA *dsa; | 681 | DSA *dsa; |
| 682 | 682 | ||
| @@ -702,7 +702,7 @@ LCRYPTO_ALIAS(EVP_PKEY_set1_DSA); | |||
| 702 | 702 | ||
| 703 | #ifndef OPENSSL_NO_EC | 703 | #ifndef OPENSSL_NO_EC |
| 704 | EC_KEY * | 704 | EC_KEY * |
| 705 | EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey) | 705 | EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey) |
| 706 | { | 706 | { |
| 707 | if (pkey->type != EVP_PKEY_EC) { | 707 | if (pkey->type != EVP_PKEY_EC) { |
| 708 | EVPerror(EVP_R_EXPECTING_A_EC_KEY); | 708 | EVPerror(EVP_R_EXPECTING_A_EC_KEY); |
| @@ -713,7 +713,7 @@ EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey) | |||
| 713 | LCRYPTO_ALIAS(EVP_PKEY_get0_EC_KEY); | 713 | LCRYPTO_ALIAS(EVP_PKEY_get0_EC_KEY); |
| 714 | 714 | ||
| 715 | EC_KEY * | 715 | EC_KEY * |
| 716 | EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey) | 716 | EVP_PKEY_get1_EC_KEY(const EVP_PKEY *pkey) |
| 717 | { | 717 | { |
| 718 | EC_KEY *key; | 718 | EC_KEY *key; |
| 719 | 719 | ||
| @@ -740,7 +740,7 @@ LCRYPTO_ALIAS(EVP_PKEY_set1_EC_KEY); | |||
| 740 | 740 | ||
| 741 | #ifndef OPENSSL_NO_DH | 741 | #ifndef OPENSSL_NO_DH |
| 742 | DH * | 742 | DH * |
| 743 | EVP_PKEY_get0_DH(EVP_PKEY *pkey) | 743 | EVP_PKEY_get0_DH(const EVP_PKEY *pkey) |
| 744 | { | 744 | { |
| 745 | if (pkey->type != EVP_PKEY_DH) { | 745 | if (pkey->type != EVP_PKEY_DH) { |
| 746 | EVPerror(EVP_R_EXPECTING_A_DH_KEY); | 746 | EVPerror(EVP_R_EXPECTING_A_DH_KEY); |
| @@ -751,7 +751,7 @@ EVP_PKEY_get0_DH(EVP_PKEY *pkey) | |||
| 751 | LCRYPTO_ALIAS(EVP_PKEY_get0_DH); | 751 | LCRYPTO_ALIAS(EVP_PKEY_get0_DH); |
| 752 | 752 | ||
| 753 | DH * | 753 | DH * |
| 754 | EVP_PKEY_get1_DH(EVP_PKEY *pkey) | 754 | EVP_PKEY_get1_DH(const EVP_PKEY *pkey) |
| 755 | { | 755 | { |
| 756 | DH *dh; | 756 | DH *dh; |
| 757 | 757 | ||
