1 /* 2 * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #ifndef OPENSSL_EVP_H 11 # define OPENSSL_EVP_H 12 # pragma once 13 14 # include <openssl/macros.h> 15 # ifndef OPENSSL_NO_DEPRECATED_3_0 16 # define HEADER_ENVELOPE_H 17 # endif 18 19 # include <stdarg.h> 20 21 # ifndef OPENSSL_NO_STDIO 22 # include <stdio.h> 23 # endif 24 25 # include <openssl/opensslconf.h> 26 # include <openssl/types.h> 27 # include <openssl/core.h> 28 # include <openssl/core_dispatch.h> 29 # include <openssl/symhacks.h> 30 # include <openssl/bio.h> 31 # include <openssl/evperr.h> 32 # include <openssl/params.h> 33 34 # define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ 35 # define EVP_MAX_KEY_LENGTH 64 36 # define EVP_MAX_IV_LENGTH 16 37 # define EVP_MAX_BLOCK_LENGTH 32 38 # define EVP_MAX_AEAD_TAG_LENGTH 16 39 40 /* Maximum pipes in cipher pipelining */ 41 # define EVP_MAX_PIPES 32 42 43 # define PKCS5_SALT_LEN 8 44 /* Default PKCS#5 iteration count */ 45 # define PKCS5_DEFAULT_ITER 2048 46 47 # include <openssl/objects.h> 48 49 # ifndef OPENSSL_NO_DEPRECATED_3_0 50 # define EVP_PK_RSA 0x0001 51 # define EVP_PK_DSA 0x0002 52 # define EVP_PK_DH 0x0004 53 # define EVP_PK_EC 0x0008 54 # define EVP_PKT_SIGN 0x0010 55 # define EVP_PKT_ENC 0x0020 56 # define EVP_PKT_EXCH 0x0040 57 # define EVP_PKS_RSA 0x0100 58 # define EVP_PKS_DSA 0x0200 59 # define EVP_PKS_EC 0x0400 60 # endif 61 62 # define EVP_PKEY_NONE NID_undef 63 # define EVP_PKEY_RSA NID_rsaEncryption 64 # define EVP_PKEY_RSA2 NID_rsa 65 # define EVP_PKEY_RSA_PSS NID_rsassaPss 66 # define EVP_PKEY_DSA NID_dsa 67 # define EVP_PKEY_DSA1 NID_dsa_2 68 # define EVP_PKEY_DSA2 NID_dsaWithSHA 69 # define EVP_PKEY_DSA3 NID_dsaWithSHA1 70 # define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 71 # define EVP_PKEY_DH NID_dhKeyAgreement 72 # define EVP_PKEY_DHX NID_dhpublicnumber 73 # define EVP_PKEY_EC NID_X9_62_id_ecPublicKey 74 # define EVP_PKEY_SM2 NID_sm2 75 # define EVP_PKEY_HMAC NID_hmac 76 # define EVP_PKEY_CMAC NID_cmac 77 # define EVP_PKEY_SCRYPT NID_id_scrypt 78 # define EVP_PKEY_TLS1_PRF NID_tls1_prf 79 # define EVP_PKEY_HKDF NID_hkdf 80 # define EVP_PKEY_POLY1305 NID_poly1305 81 # define EVP_PKEY_SIPHASH NID_siphash 82 # define EVP_PKEY_X25519 NID_X25519 83 # define EVP_PKEY_ED25519 NID_ED25519 84 # define EVP_PKEY_X448 NID_X448 85 # define EVP_PKEY_ED448 NID_ED448 86 # define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44 87 # define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65 88 # define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87 89 # define EVP_PKEY_SLH_DSA_SHA2_128S NID_SLH_DSA_SHA2_128s 90 # define EVP_PKEY_SLH_DSA_SHA2_128F NID_SLH_DSA_SHA2_128f 91 # define EVP_PKEY_SLH_DSA_SHA2_192S NID_SLH_DSA_SHA2_192s 92 # define EVP_PKEY_SLH_DSA_SHA2_192F NID_SLH_DSA_SHA2_192f 93 # define EVP_PKEY_SLH_DSA_SHA2_256S NID_SLH_DSA_SHA2_256s 94 # define EVP_PKEY_SLH_DSA_SHA2_256F NID_SLH_DSA_SHA2_256f 95 # define EVP_PKEY_SLH_DSA_SHAKE_128S NID_SLH_DSA_SHAKE_128s 96 # define EVP_PKEY_SLH_DSA_SHAKE_128F NID_SLH_DSA_SHAKE_128f 97 # define EVP_PKEY_SLH_DSA_SHAKE_192S NID_SLH_DSA_SHAKE_192s 98 # define EVP_PKEY_SLH_DSA_SHAKE_192F NID_SLH_DSA_SHAKE_192f 99 # define EVP_PKEY_SLH_DSA_SHAKE_256S NID_SLH_DSA_SHAKE_256s 100 # define EVP_PKEY_SLH_DSA_SHAKE_256F NID_SLH_DSA_SHAKE_256f 101 102 /* Special indicator that the object is uniquely provider side */ 103 # define EVP_PKEY_KEYMGMT -1 104 105 /* Easy to use macros for EVP_PKEY related selections */ 106 # define EVP_PKEY_KEY_PARAMETERS \ 107 ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ) 108 # define EVP_PKEY_PRIVATE_KEY \ 109 ( EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY ) 110 # define EVP_PKEY_PUBLIC_KEY \ 111 ( EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY ) 112 # define EVP_PKEY_KEYPAIR \ 113 ( EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY ) 114 115 #ifdef __cplusplus 116 extern "C" { 117 #endif 118 119 int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); 120 char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); 121 int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); 122 int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); 123 124 # define EVP_PKEY_MO_SIGN 0x0001 125 # define EVP_PKEY_MO_VERIFY 0x0002 126 # define EVP_PKEY_MO_ENCRYPT 0x0004 127 # define EVP_PKEY_MO_DECRYPT 0x0008 128 129 # ifndef EVP_MD 130 # ifndef OPENSSL_NO_DEPRECATED_3_0 131 OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); 132 OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); 133 OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); 134 OSSL_DEPRECATEDIN_3_0 135 int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); 136 OSSL_DEPRECATEDIN_3_0 137 int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); 138 OSSL_DEPRECATEDIN_3_0 139 int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); 140 OSSL_DEPRECATEDIN_3_0 141 int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); 142 OSSL_DEPRECATEDIN_3_0 143 int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); 144 OSSL_DEPRECATEDIN_3_0 145 int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, 146 const void *data, 147 size_t count)); 148 OSSL_DEPRECATEDIN_3_0 149 int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, 150 unsigned char *md)); 151 OSSL_DEPRECATEDIN_3_0 152 int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, 153 const EVP_MD_CTX *from)); 154 OSSL_DEPRECATEDIN_3_0 155 int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); 156 OSSL_DEPRECATEDIN_3_0 157 int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, 158 int p1, void *p2)); 159 OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); 160 OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); 161 OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); 162 OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); 163 OSSL_DEPRECATEDIN_3_0 164 int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); 165 OSSL_DEPRECATEDIN_3_0 166 int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, 167 const void *data, size_t count); 168 OSSL_DEPRECATEDIN_3_0 169 int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, 170 unsigned char *md); 171 OSSL_DEPRECATEDIN_3_0 172 int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, 173 const EVP_MD_CTX *from); 174 OSSL_DEPRECATEDIN_3_0 175 int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); 176 OSSL_DEPRECATEDIN_3_0 177 int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, 178 int p1, void *p2); 179 # endif 180 /* digest can only handle a single block */ 181 # define EVP_MD_FLAG_ONESHOT 0x0001 182 183 /* digest is extensible-output function, XOF */ 184 # define EVP_MD_FLAG_XOF 0x0002 185 186 /* DigestAlgorithmIdentifier flags... */ 187 188 # define EVP_MD_FLAG_DIGALGID_MASK 0x0018 189 190 /* NULL or absent parameter accepted. Use NULL */ 191 192 # define EVP_MD_FLAG_DIGALGID_NULL 0x0000 193 194 /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ 195 196 # define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 197 198 /* Custom handling via ctrl */ 199 200 # define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 201 202 /* Note if suitable for use in FIPS mode */ 203 # define EVP_MD_FLAG_FIPS 0x0400 204 205 /* Digest ctrls */ 206 207 # define EVP_MD_CTRL_DIGALGID 0x1 208 # define EVP_MD_CTRL_MICALG 0x2 209 # define EVP_MD_CTRL_XOF_LEN 0x3 210 # define EVP_MD_CTRL_TLSTREE 0x4 211 212 /* Minimum Algorithm specific ctrl value */ 213 214 # define EVP_MD_CTRL_ALG_CTRL 0x1000 215 216 # endif /* !EVP_MD */ 217 218 /* values for EVP_MD_CTX flags */ 219 220 # define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be 221 * called once only */ 222 # define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been 223 * cleaned */ 224 # define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data 225 * in EVP_MD_CTX_reset */ 226 /* 227 * FIPS and pad options are ignored in 1.0.0, definitions are here so we 228 * don't accidentally reuse the values for other purposes. 229 */ 230 231 /* This flag has no effect from openssl-3.0 onwards */ 232 # define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 233 234 /* 235 * The following PAD options are also currently ignored in 1.0.0, digest 236 * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() 237 * instead. 238 */ 239 # define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ 240 # define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ 241 # define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ 242 # define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ 243 244 # define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ 245 /* 246 * Some functions such as EVP_DigestSign only finalise copies of internal 247 * contexts so additional data can be included after the finalisation call. 248 * This is inefficient if this functionality is not required: it is disabled 249 * if the following flag is set. 250 */ 251 # define EVP_MD_CTX_FLAG_FINALISE 0x0200 252 /* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ 253 254 # ifndef OPENSSL_NO_DEPRECATED_3_0 255 OSSL_DEPRECATEDIN_3_0 256 EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); 257 OSSL_DEPRECATEDIN_3_0 258 EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); 259 OSSL_DEPRECATEDIN_3_0 260 void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); 261 OSSL_DEPRECATEDIN_3_0 262 int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); 263 OSSL_DEPRECATEDIN_3_0 264 int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); 265 OSSL_DEPRECATEDIN_3_0 266 int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); 267 OSSL_DEPRECATEDIN_3_0 268 int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, 269 int (*init) (EVP_CIPHER_CTX *ctx, 270 const unsigned char *key, 271 const unsigned char *iv, 272 int enc)); 273 OSSL_DEPRECATEDIN_3_0 274 int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, 275 int (*do_cipher) (EVP_CIPHER_CTX *ctx, 276 unsigned char *out, 277 const unsigned char *in, 278 size_t inl)); 279 OSSL_DEPRECATEDIN_3_0 280 int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, 281 int (*cleanup) (EVP_CIPHER_CTX *)); 282 OSSL_DEPRECATEDIN_3_0 283 int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, 284 int (*set_asn1_parameters) (EVP_CIPHER_CTX *, 285 ASN1_TYPE *)); 286 OSSL_DEPRECATEDIN_3_0 287 int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, 288 int (*get_asn1_parameters) (EVP_CIPHER_CTX *, 289 ASN1_TYPE *)); 290 OSSL_DEPRECATEDIN_3_0 291 int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, 292 int (*ctrl) (EVP_CIPHER_CTX *, int type, 293 int arg, void *ptr)); 294 OSSL_DEPRECATEDIN_3_0 int 295 (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, 296 const unsigned char *key, 297 const unsigned char *iv, 298 int enc); 299 OSSL_DEPRECATEDIN_3_0 int 300 (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, 301 unsigned char *out, 302 const unsigned char *in, 303 size_t inl); 304 OSSL_DEPRECATEDIN_3_0 int 305 (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); 306 OSSL_DEPRECATEDIN_3_0 int 307 (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, 308 ASN1_TYPE *); 309 OSSL_DEPRECATEDIN_3_0 int 310 (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, 311 ASN1_TYPE *); 312 OSSL_DEPRECATEDIN_3_0 int 313 (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, 314 int arg, void *ptr); 315 # endif 316 317 /* Values for cipher flags */ 318 319 /* Modes for ciphers */ 320 321 # define EVP_CIPH_STREAM_CIPHER 0x0 322 # define EVP_CIPH_ECB_MODE 0x1 323 # define EVP_CIPH_CBC_MODE 0x2 324 # define EVP_CIPH_CFB_MODE 0x3 325 # define EVP_CIPH_OFB_MODE 0x4 326 # define EVP_CIPH_CTR_MODE 0x5 327 # define EVP_CIPH_GCM_MODE 0x6 328 # define EVP_CIPH_CCM_MODE 0x7 329 # define EVP_CIPH_XTS_MODE 0x10001 330 # define EVP_CIPH_WRAP_MODE 0x10002 331 # define EVP_CIPH_OCB_MODE 0x10003 332 # define EVP_CIPH_SIV_MODE 0x10004 333 # define EVP_CIPH_GCM_SIV_MODE 0x10005 334 # define EVP_CIPH_MODE 0xF0007 335 /* Set if variable length cipher */ 336 # define EVP_CIPH_VARIABLE_LENGTH 0x8 337 /* Set if the iv handling should be done by the cipher itself */ 338 # define EVP_CIPH_CUSTOM_IV 0x10 339 /* Set if the cipher's init() function should be called if key is NULL */ 340 # define EVP_CIPH_ALWAYS_CALL_INIT 0x20 341 /* Call ctrl() to init cipher parameters */ 342 # define EVP_CIPH_CTRL_INIT 0x40 343 /* Don't use standard key length function */ 344 # define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 345 /* Don't use standard block padding */ 346 # define EVP_CIPH_NO_PADDING 0x100 347 /* cipher handles random key generation */ 348 # define EVP_CIPH_RAND_KEY 0x200 349 /* cipher has its own additional copying logic */ 350 # define EVP_CIPH_CUSTOM_COPY 0x400 351 /* Don't use standard iv length function */ 352 # define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 353 /* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ 354 # define EVP_CIPH_FLAG_DEFAULT_ASN1 0 355 /* Free: 0x1000 */ 356 /* Buffer length in bits not bytes: CFB1 mode only */ 357 # define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 358 /* Deprecated FIPS flag: was 0x4000 */ 359 # define EVP_CIPH_FLAG_FIPS 0 360 /* Deprecated FIPS flag: was 0x8000 */ 361 # define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 362 363 /* 364 * Cipher handles any and all padding logic as well as finalisation. 365 */ 366 # define EVP_CIPH_FLAG_CTS 0x4000 367 # define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 368 # define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 369 # define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 370 /* Cipher can handle pipeline operations */ 371 # define EVP_CIPH_FLAG_PIPELINE 0X800000 372 /* For provider implementations that handle ASN1 get/set param themselves */ 373 # define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 374 /* For ciphers generating unprotected CMS attributes */ 375 # define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 376 /* For supplementary wrap cipher support */ 377 # define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 378 # define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 379 380 /* 381 * Cipher context flag to indicate we can handle wrap mode: if allowed in 382 * older applications it could overflow buffers. 383 */ 384 385 # define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 386 387 /* ctrl() values */ 388 389 # define EVP_CTRL_INIT 0x0 390 # define EVP_CTRL_SET_KEY_LENGTH 0x1 391 # define EVP_CTRL_GET_RC2_KEY_BITS 0x2 392 # define EVP_CTRL_SET_RC2_KEY_BITS 0x3 393 # define EVP_CTRL_GET_RC5_ROUNDS 0x4 394 # define EVP_CTRL_SET_RC5_ROUNDS 0x5 395 # define EVP_CTRL_RAND_KEY 0x6 396 # define EVP_CTRL_PBE_PRF_NID 0x7 397 # define EVP_CTRL_COPY 0x8 398 # define EVP_CTRL_AEAD_SET_IVLEN 0x9 399 # define EVP_CTRL_AEAD_GET_TAG 0x10 400 # define EVP_CTRL_AEAD_SET_TAG 0x11 401 # define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 402 # define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN 403 # define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG 404 # define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG 405 # define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED 406 # define EVP_CTRL_GCM_IV_GEN 0x13 407 # define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN 408 # define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG 409 # define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG 410 # define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED 411 # define EVP_CTRL_CCM_SET_L 0x14 412 # define EVP_CTRL_CCM_SET_MSGLEN 0x15 413 /* 414 * AEAD cipher deduces payload length and returns number of bytes required to 415 * store MAC and eventual padding. Subsequent call to EVP_Cipher even 416 * appends/verifies MAC. 417 */ 418 # define EVP_CTRL_AEAD_TLS1_AAD 0x16 419 /* Used by composite AEAD ciphers, no-op in GCM, CCM... */ 420 # define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 421 /* Set the GCM invocation field, decrypt only */ 422 # define EVP_CTRL_GCM_SET_IV_INV 0x18 423 424 # define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 425 # define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a 426 # define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b 427 # define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c 428 429 # define EVP_CTRL_SSL3_MASTER_SECRET 0x1d 430 431 /* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ 432 # define EVP_CTRL_SET_SBOX 0x1e 433 /* 434 * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a 435 * pre-allocated buffer with specified size 436 */ 437 # define EVP_CTRL_SBOX_USED 0x1f 438 /* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, 439 * 0 switches meshing off 440 */ 441 # define EVP_CTRL_KEY_MESH 0x20 442 /* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ 443 # define EVP_CTRL_BLOCK_PADDING_MODE 0x21 444 445 /* Set the output buffers to use for a pipelined operation */ 446 # define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 447 /* Set the input buffers to use for a pipelined operation */ 448 # define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 449 /* Set the input buffer lengths to use for a pipelined operation */ 450 # define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 451 /* Get the IV length used by the cipher */ 452 # define EVP_CTRL_GET_IVLEN 0x25 453 /* 0x26 is unused */ 454 /* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ 455 # define EVP_CTRL_SET_SPEED 0x27 456 /* Get the unprotectedAttrs from cipher ctx */ 457 # define EVP_CTRL_PROCESS_UNPROTECTED 0x28 458 /* Get the supplementary wrap cipher */ 459 #define EVP_CTRL_GET_WRAP_CIPHER 0x29 460 /* TLSTREE key diversification */ 461 #define EVP_CTRL_TLSTREE 0x2A 462 463 /* Padding modes */ 464 #define EVP_PADDING_PKCS7 1 465 #define EVP_PADDING_ISO7816_4 2 466 #define EVP_PADDING_ANSI923 3 467 #define EVP_PADDING_ISO10126 4 468 #define EVP_PADDING_ZERO 5 469 470 /* RFC 5246 defines additional data to be 13 bytes in length */ 471 # define EVP_AEAD_TLS1_AAD_LEN 13 472 473 typedef struct { 474 unsigned char *out; 475 const unsigned char *inp; 476 size_t len; 477 unsigned int interleave; 478 } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; 479 480 /* GCM TLS constants */ 481 /* Length of fixed part of IV derived from PRF */ 482 # define EVP_GCM_TLS_FIXED_IV_LEN 4 483 /* Length of explicit part of IV part of TLS records */ 484 # define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 485 /* Length of tag for TLS */ 486 # define EVP_GCM_TLS_TAG_LEN 16 487 488 /* CCM TLS constants */ 489 /* Length of fixed part of IV derived from PRF */ 490 # define EVP_CCM_TLS_FIXED_IV_LEN 4 491 /* Length of explicit part of IV part of TLS records */ 492 # define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 493 /* Total length of CCM IV length for TLS */ 494 # define EVP_CCM_TLS_IV_LEN 12 495 /* Length of tag for TLS */ 496 # define EVP_CCM_TLS_TAG_LEN 16 497 /* Length of CCM8 tag for TLS */ 498 # define EVP_CCM8_TLS_TAG_LEN 8 499 500 /* Length of tag for TLS */ 501 # define EVP_CHACHAPOLY_TLS_TAG_LEN 16 502 503 typedef struct evp_cipher_info_st { 504 const EVP_CIPHER *cipher; 505 unsigned char iv[EVP_MAX_IV_LENGTH]; 506 } EVP_CIPHER_INFO; 507 508 509 /* Password based encryption function */ 510 typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, 511 int passlen, ASN1_TYPE *param, 512 const EVP_CIPHER *cipher, const EVP_MD *md, 513 int en_de); 514 515 typedef int (EVP_PBE_KEYGEN_EX) (EVP_CIPHER_CTX *ctx, const char *pass, 516 int passlen, ASN1_TYPE *param, 517 const EVP_CIPHER *cipher, const EVP_MD *md, 518 int en_de, OSSL_LIB_CTX *libctx, const char *propq); 519 520 # ifndef OPENSSL_NO_DEPRECATED_3_0 521 # define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ 522 (rsa)) 523 # endif 524 525 # ifndef OPENSSL_NO_DSA 526 # define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ 527 (dsa)) 528 # endif 529 530 # if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) 531 # define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,(dh)) 532 # endif 533 534 # ifndef OPENSSL_NO_DEPRECATED_3_0 535 # ifndef OPENSSL_NO_EC 536 # define EVP_PKEY_assign_EC_KEY(pkey,eckey) \ 537 EVP_PKEY_assign((pkey), EVP_PKEY_EC, (eckey)) 538 # endif 539 # endif 540 # ifndef OPENSSL_NO_SIPHASH 541 # define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),\ 542 EVP_PKEY_SIPHASH,(shkey)) 543 # endif 544 545 # ifndef OPENSSL_NO_POLY1305 546 # define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),\ 547 EVP_PKEY_POLY1305,(polykey)) 548 # endif 549 550 /* Add some extra combinations */ 551 # define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) 552 # define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) 553 # define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) 554 # define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) 555 556 int EVP_MD_get_type(const EVP_MD *md); 557 # define EVP_MD_type EVP_MD_get_type 558 # define EVP_MD_nid EVP_MD_get_type 559 const char *EVP_MD_get0_name(const EVP_MD *md); 560 # define EVP_MD_name EVP_MD_get0_name 561 const char *EVP_MD_get0_description(const EVP_MD *md); 562 int EVP_MD_is_a(const EVP_MD *md, const char *name); 563 int EVP_MD_names_do_all(const EVP_MD *md, 564 void (*fn)(const char *name, void *data), 565 void *data); 566 const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); 567 int EVP_MD_get_pkey_type(const EVP_MD *md); 568 # define EVP_MD_pkey_type EVP_MD_get_pkey_type 569 int EVP_MD_get_size(const EVP_MD *md); 570 # define EVP_MD_size EVP_MD_get_size 571 int EVP_MD_get_block_size(const EVP_MD *md); 572 # define EVP_MD_block_size EVP_MD_get_block_size 573 unsigned long EVP_MD_get_flags(const EVP_MD *md); 574 # define EVP_MD_flags EVP_MD_get_flags 575 int EVP_MD_xof(const EVP_MD *md); 576 577 const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); 578 EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); 579 # ifndef OPENSSL_NO_DEPRECATED_3_0 580 OSSL_DEPRECATEDIN_3_0 581 const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); 582 OSSL_DEPRECATEDIN_3_0 583 int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, 584 const void *data, size_t count); 585 OSSL_DEPRECATEDIN_3_0 586 void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, 587 int (*update) (EVP_MD_CTX *ctx, 588 const void *data, size_t count)); 589 # endif 590 int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); 591 592 # define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) 593 # define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e) 594 # define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex 595 # define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) 596 # define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size 597 # define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) 598 # define EVP_MD_CTX_type EVP_MD_CTX_get_type 599 EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); 600 # define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx 601 void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); 602 void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); 603 # define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data 604 605 int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); 606 # define EVP_CIPHER_nid EVP_CIPHER_get_nid 607 const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); 608 # define EVP_CIPHER_name EVP_CIPHER_get0_name 609 const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); 610 int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); 611 int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, 612 void (*fn)(const char *name, void *data), 613 void *data); 614 const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); 615 int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); 616 # define EVP_CIPHER_block_size EVP_CIPHER_get_block_size 617 # ifndef OPENSSL_NO_DEPRECATED_3_0 618 OSSL_DEPRECATEDIN_3_0 619 int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); 620 # endif 621 int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); 622 # define EVP_CIPHER_key_length EVP_CIPHER_get_key_length 623 int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); 624 # define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length 625 unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); 626 # define EVP_CIPHER_flags EVP_CIPHER_get_flags 627 int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); 628 # define EVP_CIPHER_mode EVP_CIPHER_get_mode 629 int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); 630 # define EVP_CIPHER_type EVP_CIPHER_get_type 631 EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 632 const char *properties); 633 int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); 634 int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); 635 void EVP_CIPHER_free(EVP_CIPHER *cipher); 636 637 const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); 638 EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); 639 int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); 640 # define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting 641 int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); 642 # define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid 643 int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); 644 # define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size 645 int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); 646 # define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length 647 int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); 648 # define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length 649 int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); 650 # define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length 651 # ifndef OPENSSL_NO_DEPRECATED_3_0 652 const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); 653 OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); 654 OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); 655 OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); 656 # endif 657 int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); 658 int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); 659 # ifndef OPENSSL_NO_DEPRECATED_3_0 660 OSSL_DEPRECATEDIN_3_0 661 unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); 662 # endif 663 int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); 664 # define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num 665 int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); 666 EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); 667 int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); 668 void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); 669 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); 670 void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); 671 void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); 672 # define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) 673 # define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) 674 # define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type 675 # ifndef OPENSSL_NO_DEPRECATED_1_1_0 676 # define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) 677 # endif 678 # define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) 679 # define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode 680 681 # define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80) 682 # define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80) 683 684 # define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) 685 # define EVP_SignInit(a,b) EVP_DigestInit(a,b) 686 # define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 687 # define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) 688 # define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) 689 # define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 690 # define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) 691 # define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) 692 693 # ifdef CONST_STRICT 694 void BIO_set_md(BIO *, const EVP_MD *md); 695 # else 696 # define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(void *)(md)) 697 # endif 698 # define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(mdp)) 699 # define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(mdcp)) 700 # define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(mdcp)) 701 # define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) 702 # define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(c_pp)) 703 704 __owur int EVP_Cipher(EVP_CIPHER_CTX *c, 705 unsigned char *out, 706 const unsigned char *in, unsigned int inl); 707 708 # define EVP_add_cipher_alias(n,alias) \ 709 OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) 710 # define EVP_add_digest_alias(n,alias) \ 711 OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) 712 # define EVP_delete_cipher_alias(alias) \ 713 OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); 714 # define EVP_delete_digest_alias(alias) \ 715 OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); 716 717 int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); 718 int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); 719 int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); 720 const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); 721 const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); 722 const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); 723 const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); 724 const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); 725 int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); 726 EVP_MD_CTX *EVP_MD_CTX_new(void); 727 int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); 728 void EVP_MD_CTX_free(EVP_MD_CTX *ctx); 729 # define EVP_MD_CTX_create() EVP_MD_CTX_new() 730 # define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) 731 # define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) 732 __owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); 733 __owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); 734 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); 735 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); 736 int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); 737 __owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, 738 const OSSL_PARAM params[]); 739 __owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, 740 ENGINE *impl); 741 __owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, 742 size_t cnt); 743 __owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, 744 unsigned int *s); 745 __owur int EVP_Digest(const void *data, size_t count, 746 unsigned char *md, unsigned int *size, 747 const EVP_MD *type, ENGINE *impl); 748 __owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, 749 const char *propq, const void *data, size_t datalen, 750 unsigned char *md, size_t *mdlen); 751 752 __owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); 753 __owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); 754 __owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, 755 unsigned int *s); 756 __owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, 757 size_t outlen); 758 __owur int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, 759 size_t outlen); 760 761 __owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 762 const char *properties); 763 764 int EVP_MD_up_ref(EVP_MD *md); 765 void EVP_MD_free(EVP_MD *md); 766 767 int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); 768 int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, 769 const char *prompt, int verify); 770 void EVP_set_pw_prompt(const char *prompt); 771 char *EVP_get_pw_prompt(void); 772 773 __owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, 774 const unsigned char *salt, 775 const unsigned char *data, int datal, int count, 776 unsigned char *key, unsigned char *iv); 777 778 void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); 779 void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); 780 int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); 781 782 __owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 783 const unsigned char *key, const unsigned char *iv); 784 __owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, 785 const EVP_CIPHER *cipher, ENGINE *impl, 786 const unsigned char *key, 787 const unsigned char *iv); 788 __owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 789 const unsigned char *key, 790 const unsigned char *iv, 791 const OSSL_PARAM params[]); 792 __owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 793 int *outl, const unsigned char *in, int inl); 794 __owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, 795 int *outl); 796 __owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, 797 int *outl); 798 799 __owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 800 const unsigned char *key, const unsigned char *iv); 801 __owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, 802 const EVP_CIPHER *cipher, ENGINE *impl, 803 const unsigned char *key, 804 const unsigned char *iv); 805 __owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 806 const unsigned char *key, 807 const unsigned char *iv, 808 const OSSL_PARAM params[]); 809 __owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 810 int *outl, const unsigned char *in, int inl); 811 __owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, 812 int *outl); 813 __owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, 814 int *outl); 815 816 __owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 817 const unsigned char *key, const unsigned char *iv, 818 int enc); 819 __owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, 820 const EVP_CIPHER *cipher, ENGINE *impl, 821 const unsigned char *key, 822 const unsigned char *iv, int enc); 823 __owur int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 824 EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, 825 int enc, const OSSL_PARAM params[]); 826 __owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 827 const unsigned char *key, const unsigned char *iv, 828 int enc, const OSSL_PARAM params[]); 829 __owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 830 int *outl, const unsigned char *in, int inl); 831 __owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, 832 int *outl); 833 __owur int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, 834 const EVP_CIPHER *cipher, 835 const unsigned char *key, size_t keylen, 836 size_t numpipes, 837 const unsigned char **iv, size_t ivlen); 838 __owur int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, 839 const EVP_CIPHER *cipher, 840 const unsigned char *key, size_t keylen, 841 size_t numpipes, 842 const unsigned char **iv, size_t ivlen); 843 __owur int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, 844 unsigned char **out, size_t *outl, 845 const size_t *outsize, 846 const unsigned char **in, const size_t *inl); 847 __owur int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, 848 unsigned char **outm, size_t *outl, 849 const size_t *outsize); 850 __owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, 851 int *outl); 852 853 __owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, 854 EVP_PKEY *pkey); 855 __owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, 856 EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, 857 const char *propq); 858 859 __owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, 860 size_t *siglen, const unsigned char *tbs, 861 size_t tbslen); 862 863 __owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, 864 unsigned int siglen, EVP_PKEY *pkey); 865 __owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, 866 unsigned int siglen, EVP_PKEY *pkey, 867 OSSL_LIB_CTX *libctx, const char *propq); 868 869 __owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, 870 size_t siglen, const unsigned char *tbs, 871 size_t tbslen); 872 873 __owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 874 const char *mdname, OSSL_LIB_CTX *libctx, 875 const char *props, EVP_PKEY *pkey, 876 const OSSL_PARAM params[]); 877 __owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 878 const EVP_MD *type, ENGINE *e, 879 EVP_PKEY *pkey); 880 __owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); 881 __owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, 882 size_t *siglen); 883 884 __owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 885 const char *mdname, OSSL_LIB_CTX *libctx, 886 const char *props, EVP_PKEY *pkey, 887 const OSSL_PARAM params[]); 888 __owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 889 const EVP_MD *type, ENGINE *e, 890 EVP_PKEY *pkey); 891 int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); 892 __owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, 893 size_t siglen); 894 895 __owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 896 const unsigned char *ek, int ekl, 897 const unsigned char *iv, EVP_PKEY *priv); 898 __owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 899 900 __owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 901 unsigned char **ek, int *ekl, unsigned char *iv, 902 EVP_PKEY **pubk, int npubk); 903 __owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 904 905 EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); 906 void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); 907 int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); 908 int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); 909 void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); 910 int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 911 const unsigned char *in, int inl); 912 void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); 913 int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); 914 915 void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); 916 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 917 const unsigned char *in, int inl); 918 int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned 919 char *out, int *outl); 920 int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); 921 922 # ifndef OPENSSL_NO_DEPRECATED_1_1_0 923 # define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) 924 # define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) 925 # endif 926 EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); 927 int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); 928 void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); 929 int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); 930 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); 931 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); 932 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); 933 int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); 934 int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); 935 int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); 936 const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); 937 const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); 938 const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); 939 const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); 940 const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); 941 942 int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); 943 int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); 944 int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); 945 946 const BIO_METHOD *BIO_f_md(void); 947 const BIO_METHOD *BIO_f_base64(void); 948 const BIO_METHOD *BIO_f_cipher(void); 949 const BIO_METHOD *BIO_f_reliable(void); 950 __owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, 951 const unsigned char *i, int enc); 952 953 const EVP_MD *EVP_md_null(void); 954 # ifndef OPENSSL_NO_MD2 955 const EVP_MD *EVP_md2(void); 956 # endif 957 # ifndef OPENSSL_NO_MD4 958 const EVP_MD *EVP_md4(void); 959 # endif 960 # ifndef OPENSSL_NO_MD5 961 const EVP_MD *EVP_md5(void); 962 const EVP_MD *EVP_md5_sha1(void); 963 # endif 964 # ifndef OPENSSL_NO_BLAKE2 965 const EVP_MD *EVP_blake2b512(void); 966 const EVP_MD *EVP_blake2s256(void); 967 # endif 968 const EVP_MD *EVP_sha1(void); 969 const EVP_MD *EVP_sha224(void); 970 const EVP_MD *EVP_sha256(void); 971 const EVP_MD *EVP_sha384(void); 972 const EVP_MD *EVP_sha512(void); 973 const EVP_MD *EVP_sha512_224(void); 974 const EVP_MD *EVP_sha512_256(void); 975 const EVP_MD *EVP_sha3_224(void); 976 const EVP_MD *EVP_sha3_256(void); 977 const EVP_MD *EVP_sha3_384(void); 978 const EVP_MD *EVP_sha3_512(void); 979 const EVP_MD *EVP_shake128(void); 980 const EVP_MD *EVP_shake256(void); 981 982 # ifndef OPENSSL_NO_MDC2 983 const EVP_MD *EVP_mdc2(void); 984 # endif 985 # ifndef OPENSSL_NO_RMD160 986 const EVP_MD *EVP_ripemd160(void); 987 # endif 988 # ifndef OPENSSL_NO_WHIRLPOOL 989 const EVP_MD *EVP_whirlpool(void); 990 # endif 991 # ifndef OPENSSL_NO_SM3 992 const EVP_MD *EVP_sm3(void); 993 # endif 994 const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ 995 # ifndef OPENSSL_NO_DES 996 const EVP_CIPHER *EVP_des_ecb(void); 997 const EVP_CIPHER *EVP_des_ede(void); 998 const EVP_CIPHER *EVP_des_ede3(void); 999 const EVP_CIPHER *EVP_des_ede_ecb(void); 1000 const EVP_CIPHER *EVP_des_ede3_ecb(void); 1001 const EVP_CIPHER *EVP_des_cfb64(void); 1002 # define EVP_des_cfb EVP_des_cfb64 1003 const EVP_CIPHER *EVP_des_cfb1(void); 1004 const EVP_CIPHER *EVP_des_cfb8(void); 1005 const EVP_CIPHER *EVP_des_ede_cfb64(void); 1006 # define EVP_des_ede_cfb EVP_des_ede_cfb64 1007 const EVP_CIPHER *EVP_des_ede3_cfb64(void); 1008 # define EVP_des_ede3_cfb EVP_des_ede3_cfb64 1009 const EVP_CIPHER *EVP_des_ede3_cfb1(void); 1010 const EVP_CIPHER *EVP_des_ede3_cfb8(void); 1011 const EVP_CIPHER *EVP_des_ofb(void); 1012 const EVP_CIPHER *EVP_des_ede_ofb(void); 1013 const EVP_CIPHER *EVP_des_ede3_ofb(void); 1014 const EVP_CIPHER *EVP_des_cbc(void); 1015 const EVP_CIPHER *EVP_des_ede_cbc(void); 1016 const EVP_CIPHER *EVP_des_ede3_cbc(void); 1017 const EVP_CIPHER *EVP_desx_cbc(void); 1018 const EVP_CIPHER *EVP_des_ede3_wrap(void); 1019 /* 1020 * This should now be supported through the dev_crypto ENGINE. But also, why 1021 * are rc4 and md5 declarations made here inside a "NO_DES" precompiler 1022 * branch? 1023 */ 1024 # endif 1025 # ifndef OPENSSL_NO_RC4 1026 const EVP_CIPHER *EVP_rc4(void); 1027 const EVP_CIPHER *EVP_rc4_40(void); 1028 # ifndef OPENSSL_NO_MD5 1029 const EVP_CIPHER *EVP_rc4_hmac_md5(void); 1030 # endif 1031 # endif 1032 # ifndef OPENSSL_NO_IDEA 1033 const EVP_CIPHER *EVP_idea_ecb(void); 1034 const EVP_CIPHER *EVP_idea_cfb64(void); 1035 # define EVP_idea_cfb EVP_idea_cfb64 1036 const EVP_CIPHER *EVP_idea_ofb(void); 1037 const EVP_CIPHER *EVP_idea_cbc(void); 1038 # endif 1039 # ifndef OPENSSL_NO_RC2 1040 const EVP_CIPHER *EVP_rc2_ecb(void); 1041 const EVP_CIPHER *EVP_rc2_cbc(void); 1042 const EVP_CIPHER *EVP_rc2_40_cbc(void); 1043 const EVP_CIPHER *EVP_rc2_64_cbc(void); 1044 const EVP_CIPHER *EVP_rc2_cfb64(void); 1045 # define EVP_rc2_cfb EVP_rc2_cfb64 1046 const EVP_CIPHER *EVP_rc2_ofb(void); 1047 # endif 1048 # ifndef OPENSSL_NO_BF 1049 const EVP_CIPHER *EVP_bf_ecb(void); 1050 const EVP_CIPHER *EVP_bf_cbc(void); 1051 const EVP_CIPHER *EVP_bf_cfb64(void); 1052 # define EVP_bf_cfb EVP_bf_cfb64 1053 const EVP_CIPHER *EVP_bf_ofb(void); 1054 # endif 1055 # ifndef OPENSSL_NO_CAST 1056 const EVP_CIPHER *EVP_cast5_ecb(void); 1057 const EVP_CIPHER *EVP_cast5_cbc(void); 1058 const EVP_CIPHER *EVP_cast5_cfb64(void); 1059 # define EVP_cast5_cfb EVP_cast5_cfb64 1060 const EVP_CIPHER *EVP_cast5_ofb(void); 1061 # endif 1062 # ifndef OPENSSL_NO_RC5 1063 const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); 1064 const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); 1065 const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); 1066 # define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 1067 const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); 1068 # endif 1069 const EVP_CIPHER *EVP_aes_128_ecb(void); 1070 const EVP_CIPHER *EVP_aes_128_cbc(void); 1071 const EVP_CIPHER *EVP_aes_128_cfb1(void); 1072 const EVP_CIPHER *EVP_aes_128_cfb8(void); 1073 const EVP_CIPHER *EVP_aes_128_cfb128(void); 1074 # define EVP_aes_128_cfb EVP_aes_128_cfb128 1075 const EVP_CIPHER *EVP_aes_128_ofb(void); 1076 const EVP_CIPHER *EVP_aes_128_ctr(void); 1077 const EVP_CIPHER *EVP_aes_128_ccm(void); 1078 const EVP_CIPHER *EVP_aes_128_gcm(void); 1079 const EVP_CIPHER *EVP_aes_128_xts(void); 1080 const EVP_CIPHER *EVP_aes_128_wrap(void); 1081 const EVP_CIPHER *EVP_aes_128_wrap_pad(void); 1082 # ifndef OPENSSL_NO_OCB 1083 const EVP_CIPHER *EVP_aes_128_ocb(void); 1084 # endif 1085 const EVP_CIPHER *EVP_aes_192_ecb(void); 1086 const EVP_CIPHER *EVP_aes_192_cbc(void); 1087 const EVP_CIPHER *EVP_aes_192_cfb1(void); 1088 const EVP_CIPHER *EVP_aes_192_cfb8(void); 1089 const EVP_CIPHER *EVP_aes_192_cfb128(void); 1090 # define EVP_aes_192_cfb EVP_aes_192_cfb128 1091 const EVP_CIPHER *EVP_aes_192_ofb(void); 1092 const EVP_CIPHER *EVP_aes_192_ctr(void); 1093 const EVP_CIPHER *EVP_aes_192_ccm(void); 1094 const EVP_CIPHER *EVP_aes_192_gcm(void); 1095 const EVP_CIPHER *EVP_aes_192_wrap(void); 1096 const EVP_CIPHER *EVP_aes_192_wrap_pad(void); 1097 # ifndef OPENSSL_NO_OCB 1098 const EVP_CIPHER *EVP_aes_192_ocb(void); 1099 # endif 1100 const EVP_CIPHER *EVP_aes_256_ecb(void); 1101 const EVP_CIPHER *EVP_aes_256_cbc(void); 1102 const EVP_CIPHER *EVP_aes_256_cfb1(void); 1103 const EVP_CIPHER *EVP_aes_256_cfb8(void); 1104 const EVP_CIPHER *EVP_aes_256_cfb128(void); 1105 # define EVP_aes_256_cfb EVP_aes_256_cfb128 1106 const EVP_CIPHER *EVP_aes_256_ofb(void); 1107 const EVP_CIPHER *EVP_aes_256_ctr(void); 1108 const EVP_CIPHER *EVP_aes_256_ccm(void); 1109 const EVP_CIPHER *EVP_aes_256_gcm(void); 1110 const EVP_CIPHER *EVP_aes_256_xts(void); 1111 const EVP_CIPHER *EVP_aes_256_wrap(void); 1112 const EVP_CIPHER *EVP_aes_256_wrap_pad(void); 1113 # ifndef OPENSSL_NO_OCB 1114 const EVP_CIPHER *EVP_aes_256_ocb(void); 1115 # endif 1116 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); 1117 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); 1118 const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); 1119 const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); 1120 # ifndef OPENSSL_NO_ARIA 1121 const EVP_CIPHER *EVP_aria_128_ecb(void); 1122 const EVP_CIPHER *EVP_aria_128_cbc(void); 1123 const EVP_CIPHER *EVP_aria_128_cfb1(void); 1124 const EVP_CIPHER *EVP_aria_128_cfb8(void); 1125 const EVP_CIPHER *EVP_aria_128_cfb128(void); 1126 # define EVP_aria_128_cfb EVP_aria_128_cfb128 1127 const EVP_CIPHER *EVP_aria_128_ctr(void); 1128 const EVP_CIPHER *EVP_aria_128_ofb(void); 1129 const EVP_CIPHER *EVP_aria_128_gcm(void); 1130 const EVP_CIPHER *EVP_aria_128_ccm(void); 1131 const EVP_CIPHER *EVP_aria_192_ecb(void); 1132 const EVP_CIPHER *EVP_aria_192_cbc(void); 1133 const EVP_CIPHER *EVP_aria_192_cfb1(void); 1134 const EVP_CIPHER *EVP_aria_192_cfb8(void); 1135 const EVP_CIPHER *EVP_aria_192_cfb128(void); 1136 # define EVP_aria_192_cfb EVP_aria_192_cfb128 1137 const EVP_CIPHER *EVP_aria_192_ctr(void); 1138 const EVP_CIPHER *EVP_aria_192_ofb(void); 1139 const EVP_CIPHER *EVP_aria_192_gcm(void); 1140 const EVP_CIPHER *EVP_aria_192_ccm(void); 1141 const EVP_CIPHER *EVP_aria_256_ecb(void); 1142 const EVP_CIPHER *EVP_aria_256_cbc(void); 1143 const EVP_CIPHER *EVP_aria_256_cfb1(void); 1144 const EVP_CIPHER *EVP_aria_256_cfb8(void); 1145 const EVP_CIPHER *EVP_aria_256_cfb128(void); 1146 # define EVP_aria_256_cfb EVP_aria_256_cfb128 1147 const EVP_CIPHER *EVP_aria_256_ctr(void); 1148 const EVP_CIPHER *EVP_aria_256_ofb(void); 1149 const EVP_CIPHER *EVP_aria_256_gcm(void); 1150 const EVP_CIPHER *EVP_aria_256_ccm(void); 1151 # endif 1152 # ifndef OPENSSL_NO_CAMELLIA 1153 const EVP_CIPHER *EVP_camellia_128_ecb(void); 1154 const EVP_CIPHER *EVP_camellia_128_cbc(void); 1155 const EVP_CIPHER *EVP_camellia_128_cfb1(void); 1156 const EVP_CIPHER *EVP_camellia_128_cfb8(void); 1157 const EVP_CIPHER *EVP_camellia_128_cfb128(void); 1158 # define EVP_camellia_128_cfb EVP_camellia_128_cfb128 1159 const EVP_CIPHER *EVP_camellia_128_ofb(void); 1160 const EVP_CIPHER *EVP_camellia_128_ctr(void); 1161 const EVP_CIPHER *EVP_camellia_192_ecb(void); 1162 const EVP_CIPHER *EVP_camellia_192_cbc(void); 1163 const EVP_CIPHER *EVP_camellia_192_cfb1(void); 1164 const EVP_CIPHER *EVP_camellia_192_cfb8(void); 1165 const EVP_CIPHER *EVP_camellia_192_cfb128(void); 1166 # define EVP_camellia_192_cfb EVP_camellia_192_cfb128 1167 const EVP_CIPHER *EVP_camellia_192_ofb(void); 1168 const EVP_CIPHER *EVP_camellia_192_ctr(void); 1169 const EVP_CIPHER *EVP_camellia_256_ecb(void); 1170 const EVP_CIPHER *EVP_camellia_256_cbc(void); 1171 const EVP_CIPHER *EVP_camellia_256_cfb1(void); 1172 const EVP_CIPHER *EVP_camellia_256_cfb8(void); 1173 const EVP_CIPHER *EVP_camellia_256_cfb128(void); 1174 # define EVP_camellia_256_cfb EVP_camellia_256_cfb128 1175 const EVP_CIPHER *EVP_camellia_256_ofb(void); 1176 const EVP_CIPHER *EVP_camellia_256_ctr(void); 1177 # endif 1178 # ifndef OPENSSL_NO_CHACHA 1179 const EVP_CIPHER *EVP_chacha20(void); 1180 # ifndef OPENSSL_NO_POLY1305 1181 const EVP_CIPHER *EVP_chacha20_poly1305(void); 1182 # endif 1183 # endif 1184 1185 # ifndef OPENSSL_NO_SEED 1186 const EVP_CIPHER *EVP_seed_ecb(void); 1187 const EVP_CIPHER *EVP_seed_cbc(void); 1188 const EVP_CIPHER *EVP_seed_cfb128(void); 1189 # define EVP_seed_cfb EVP_seed_cfb128 1190 const EVP_CIPHER *EVP_seed_ofb(void); 1191 # endif 1192 1193 # ifndef OPENSSL_NO_SM4 1194 const EVP_CIPHER *EVP_sm4_ecb(void); 1195 const EVP_CIPHER *EVP_sm4_cbc(void); 1196 const EVP_CIPHER *EVP_sm4_cfb128(void); 1197 # define EVP_sm4_cfb EVP_sm4_cfb128 1198 const EVP_CIPHER *EVP_sm4_ofb(void); 1199 const EVP_CIPHER *EVP_sm4_ctr(void); 1200 # endif 1201 1202 # ifndef OPENSSL_NO_DEPRECATED_1_1_0 1203 # define OPENSSL_add_all_algorithms_conf() \ 1204 OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ 1205 | OPENSSL_INIT_ADD_ALL_DIGESTS \ 1206 | OPENSSL_INIT_LOAD_CONFIG, NULL) 1207 # define OPENSSL_add_all_algorithms_noconf() \ 1208 OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ 1209 | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) 1210 1211 # ifdef OPENSSL_LOAD_CONF 1212 # define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() 1213 # else 1214 # define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() 1215 # endif 1216 1217 # define OpenSSL_add_all_ciphers() \ 1218 OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) 1219 # define OpenSSL_add_all_digests() \ 1220 OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) 1221 1222 # define EVP_cleanup() while(0) continue 1223 # endif 1224 1225 int EVP_add_cipher(const EVP_CIPHER *cipher); 1226 int EVP_add_digest(const EVP_MD *digest); 1227 1228 const EVP_CIPHER *EVP_get_cipherbyname(const char *name); 1229 const EVP_MD *EVP_get_digestbyname(const char *name); 1230 1231 void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, 1232 const char *from, const char *to, void *x), 1233 void *arg); 1234 void EVP_CIPHER_do_all_sorted(void (*fn) 1235 (const EVP_CIPHER *ciph, const char *from, 1236 const char *to, void *x), void *arg); 1237 void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, 1238 void (*fn)(EVP_CIPHER *cipher, void *arg), 1239 void *arg); 1240 1241 void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, 1242 const char *from, const char *to, void *x), 1243 void *arg); 1244 void EVP_MD_do_all_sorted(void (*fn) 1245 (const EVP_MD *ciph, const char *from, 1246 const char *to, void *x), void *arg); 1247 void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, 1248 void (*fn)(EVP_MD *md, void *arg), 1249 void *arg); 1250 1251 /* MAC stuff */ 1252 1253 EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, 1254 const char *properties); 1255 int EVP_MAC_up_ref(EVP_MAC *mac); 1256 void EVP_MAC_free(EVP_MAC *mac); 1257 const char *EVP_MAC_get0_name(const EVP_MAC *mac); 1258 const char *EVP_MAC_get0_description(const EVP_MAC *mac); 1259 int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); 1260 const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); 1261 int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); 1262 1263 EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); 1264 void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); 1265 EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); 1266 EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); 1267 int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); 1268 int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); 1269 1270 size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); 1271 size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); 1272 unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, 1273 const char *subalg, const OSSL_PARAM *params, 1274 const void *key, size_t keylen, 1275 const unsigned char *data, size_t datalen, 1276 unsigned char *out, size_t outsize, size_t *outlen); 1277 int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, 1278 const OSSL_PARAM params[]); 1279 int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); 1280 int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); 1281 int EVP_MAC_final(EVP_MAC_CTX *ctx, 1282 unsigned char *out, size_t *outl, size_t outsize); 1283 int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); 1284 const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); 1285 const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); 1286 const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); 1287 const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); 1288 const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); 1289 1290 void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, 1291 void (*fn)(EVP_MAC *mac, void *arg), 1292 void *arg); 1293 int EVP_MAC_names_do_all(const EVP_MAC *mac, 1294 void (*fn)(const char *name, void *data), 1295 void *data); 1296 1297 /* RAND stuff */ 1298 EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, 1299 const char *properties); 1300 int EVP_RAND_up_ref(EVP_RAND *rand); 1301 void EVP_RAND_free(EVP_RAND *rand); 1302 const char *EVP_RAND_get0_name(const EVP_RAND *rand); 1303 const char *EVP_RAND_get0_description(const EVP_RAND *md); 1304 int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); 1305 const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); 1306 int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); 1307 1308 EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); 1309 int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); 1310 void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); 1311 EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); 1312 int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); 1313 int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); 1314 const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); 1315 const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); 1316 const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); 1317 const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); 1318 const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); 1319 1320 void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, 1321 void (*fn)(EVP_RAND *rand, void *arg), 1322 void *arg); 1323 int EVP_RAND_names_do_all(const EVP_RAND *rand, 1324 void (*fn)(const char *name, void *data), 1325 void *data); 1326 1327 __owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, 1328 int prediction_resistance, 1329 const unsigned char *pstr, size_t pstr_len, 1330 const OSSL_PARAM params[]); 1331 int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); 1332 __owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, 1333 size_t outlen, unsigned int strength, 1334 int prediction_resistance, 1335 const unsigned char *addin, size_t addin_len); 1336 int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, 1337 const unsigned char *ent, size_t ent_len, 1338 const unsigned char *addin, size_t addin_len); 1339 __owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); 1340 __owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); 1341 1342 int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); 1343 unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); 1344 int EVP_RAND_get_state(EVP_RAND_CTX *ctx); 1345 1346 # define EVP_RAND_STATE_UNINITIALISED 0 1347 # define EVP_RAND_STATE_READY 1 1348 # define EVP_RAND_STATE_ERROR 2 1349 1350 /* PKEY stuff */ 1351 # ifndef OPENSSL_NO_DEPRECATED_3_0 1352 OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, 1353 const unsigned char *enc_key, 1354 int enc_key_len, 1355 EVP_PKEY *private_key); 1356 OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, 1357 const unsigned char *key, 1358 int key_len, EVP_PKEY *pub_key); 1359 # endif 1360 int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); 1361 int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, 1362 void (*fn)(const char *name, void *data), 1363 void *data); 1364 int EVP_PKEY_type(int type); 1365 int EVP_PKEY_get_id(const EVP_PKEY *pkey); 1366 # define EVP_PKEY_id EVP_PKEY_get_id 1367 int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); 1368 # define EVP_PKEY_base_id EVP_PKEY_get_base_id 1369 int EVP_PKEY_get_bits(const EVP_PKEY *pkey); 1370 # define EVP_PKEY_bits EVP_PKEY_get_bits 1371 int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); 1372 # define EVP_PKEY_security_bits EVP_PKEY_get_security_bits 1373 int EVP_PKEY_get_size(const EVP_PKEY *pkey); 1374 # define EVP_PKEY_size EVP_PKEY_get_size 1375 int EVP_PKEY_can_sign(const EVP_PKEY *pkey); 1376 int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); 1377 int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); 1378 int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); 1379 # ifndef OPENSSL_NO_DEPRECATED_3_0 1380 # ifndef OPENSSL_NO_ENGINE 1381 OSSL_DEPRECATEDIN_3_0 1382 int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); 1383 OSSL_DEPRECATEDIN_3_0 1384 ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); 1385 # endif 1386 OSSL_DEPRECATEDIN_3_0 1387 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); 1388 OSSL_DEPRECATEDIN_3_0 1389 void *EVP_PKEY_get0(const EVP_PKEY *pkey); 1390 OSSL_DEPRECATEDIN_3_0 1391 const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); 1392 # ifndef OPENSSL_NO_POLY1305 1393 OSSL_DEPRECATEDIN_3_0 1394 const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); 1395 # endif 1396 # ifndef OPENSSL_NO_SIPHASH 1397 OSSL_DEPRECATEDIN_3_0 1398 const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); 1399 # endif 1400 1401 struct rsa_st; 1402 OSSL_DEPRECATEDIN_3_0 1403 int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); 1404 OSSL_DEPRECATEDIN_3_0 1405 const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); 1406 OSSL_DEPRECATEDIN_3_0 1407 struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); 1408 1409 # ifndef OPENSSL_NO_DSA 1410 struct dsa_st; 1411 OSSL_DEPRECATEDIN_3_0 1412 int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); 1413 OSSL_DEPRECATEDIN_3_0 1414 const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); 1415 OSSL_DEPRECATEDIN_3_0 1416 struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); 1417 # endif 1418 1419 # ifndef OPENSSL_NO_DH 1420 struct dh_st; 1421 OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); 1422 OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); 1423 OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); 1424 # endif 1425 1426 # ifndef OPENSSL_NO_EC 1427 struct ec_key_st; 1428 OSSL_DEPRECATEDIN_3_0 1429 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); 1430 OSSL_DEPRECATEDIN_3_0 1431 const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); 1432 OSSL_DEPRECATEDIN_3_0 1433 struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); 1434 # endif 1435 # endif /* OPENSSL_NO_DEPRECATED_3_0 */ 1436 1437 EVP_PKEY *EVP_PKEY_new(void); 1438 int EVP_PKEY_up_ref(EVP_PKEY *pkey); 1439 EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); 1440 void EVP_PKEY_free(EVP_PKEY *pkey); 1441 const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); 1442 const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); 1443 1444 EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, 1445 long length); 1446 int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); 1447 1448 1449 EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, 1450 long length, OSSL_LIB_CTX *libctx, 1451 const char *propq); 1452 EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, 1453 long length); 1454 EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, 1455 long length, OSSL_LIB_CTX *libctx, 1456 const char *propq); 1457 EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, 1458 long length); 1459 int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); 1460 1461 int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); 1462 EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, 1463 long length); 1464 int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); 1465 EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); 1466 1467 int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); 1468 int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); 1469 int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); 1470 int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); 1471 int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); 1472 1473 # ifndef OPENSSL_NO_DEPRECATED_3_0 1474 OSSL_DEPRECATEDIN_3_0 1475 int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); 1476 OSSL_DEPRECATEDIN_3_0 1477 int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); 1478 # endif 1479 1480 int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, 1481 int indent, ASN1_PCTX *pctx); 1482 int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, 1483 int indent, ASN1_PCTX *pctx); 1484 int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, 1485 int indent, ASN1_PCTX *pctx); 1486 # ifndef OPENSSL_NO_STDIO 1487 int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, 1488 int indent, ASN1_PCTX *pctx); 1489 int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, 1490 int indent, ASN1_PCTX *pctx); 1491 int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, 1492 int indent, ASN1_PCTX *pctx); 1493 # endif 1494 1495 int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); 1496 int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, 1497 char *mdname, size_t mdname_sz); 1498 int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, 1499 const char *name, const char *propq); 1500 1501 # ifndef OPENSSL_NO_DEPRECATED_3_0 1502 /* 1503 * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in 1504 * preference 1505 */ 1506 # define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ 1507 EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) 1508 # endif 1509 1510 int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, 1511 const unsigned char *pub, size_t publen); 1512 1513 # ifndef OPENSSL_NO_DEPRECATED_3_0 1514 /* 1515 * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in 1516 * preference 1517 */ 1518 # define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ 1519 EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) 1520 # endif 1521 1522 size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); 1523 1524 /* calls methods */ 1525 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 1526 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 1527 1528 /* These are used by EVP_CIPHER methods */ 1529 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 1530 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 1531 1532 /* PKCS5 password based encryption */ 1533 int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 1534 ASN1_TYPE *param, const EVP_CIPHER *cipher, 1535 const EVP_MD *md, int en_de); 1536 int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, 1537 ASN1_TYPE *param, const EVP_CIPHER *cipher, 1538 const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, 1539 const char *propq); 1540 int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, 1541 const unsigned char *salt, int saltlen, int iter, 1542 int keylen, unsigned char *out); 1543 int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, 1544 const unsigned char *salt, int saltlen, int iter, 1545 const EVP_MD *digest, int keylen, unsigned char *out); 1546 int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 1547 ASN1_TYPE *param, const EVP_CIPHER *cipher, 1548 const EVP_MD *md, int en_de); 1549 int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 1550 ASN1_TYPE *param, const EVP_CIPHER *cipher, 1551 const EVP_MD *md, int en_de, 1552 OSSL_LIB_CTX *libctx, const char *propq); 1553 1554 #ifndef OPENSSL_NO_SCRYPT 1555 int EVP_PBE_scrypt(const char *pass, size_t passlen, 1556 const unsigned char *salt, size_t saltlen, 1557 uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, 1558 unsigned char *key, size_t keylen); 1559 int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, 1560 const unsigned char *salt, size_t saltlen, 1561 uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, 1562 unsigned char *key, size_t keylen, 1563 OSSL_LIB_CTX *ctx, const char *propq); 1564 1565 int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, 1566 int passlen, ASN1_TYPE *param, 1567 const EVP_CIPHER *c, const EVP_MD *md, int en_de); 1568 int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, 1569 int passlen, ASN1_TYPE *param, 1570 const EVP_CIPHER *c, const EVP_MD *md, int en_de, 1571 OSSL_LIB_CTX *libctx, const char *propq); 1572 #endif 1573 1574 void PKCS5_PBE_add(void); 1575 1576 int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 1577 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); 1578 1579 int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 1580 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, 1581 OSSL_LIB_CTX *libctx, const char *propq); 1582 1583 /* PBE type */ 1584 1585 /* Can appear as the outermost AlgorithmIdentifier */ 1586 # define EVP_PBE_TYPE_OUTER 0x0 1587 /* Is an PRF type OID */ 1588 # define EVP_PBE_TYPE_PRF 0x1 1589 /* Is a PKCS#5 v2.0 KDF */ 1590 # define EVP_PBE_TYPE_KDF 0x2 1591 1592 int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, 1593 int md_nid, EVP_PBE_KEYGEN *keygen); 1594 int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, 1595 EVP_PBE_KEYGEN *keygen); 1596 int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, 1597 EVP_PBE_KEYGEN **pkeygen); 1598 int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, 1599 EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); 1600 void EVP_PBE_cleanup(void); 1601 int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); 1602 1603 # define ASN1_PKEY_ALIAS 0x1 1604 # define ASN1_PKEY_DYNAMIC 0x2 1605 # define ASN1_PKEY_SIGPARAM_NULL 0x4 1606 1607 # define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 1608 # define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 1609 # define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 1610 # define ASN1_PKEY_CTRL_CMS_SIGN 0x5 1611 # define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 1612 # define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 1613 1614 # define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 1615 # define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa 1616 # define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb 1617 1618 int EVP_PKEY_asn1_get_count(void); 1619 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); 1620 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); 1621 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, 1622 const char *str, int len); 1623 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); 1624 int EVP_PKEY_asn1_add_alias(int to, int from); 1625 int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, 1626 int *ppkey_flags, const char **pinfo, 1627 const char **ppem_str, 1628 const EVP_PKEY_ASN1_METHOD *ameth); 1629 1630 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); 1631 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, 1632 const char *pem_str, 1633 const char *info); 1634 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, 1635 const EVP_PKEY_ASN1_METHOD *src); 1636 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); 1637 void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, 1638 int (*pub_decode) (EVP_PKEY *pk, 1639 const X509_PUBKEY *pub), 1640 int (*pub_encode) (X509_PUBKEY *pub, 1641 const EVP_PKEY *pk), 1642 int (*pub_cmp) (const EVP_PKEY *a, 1643 const EVP_PKEY *b), 1644 int (*pub_print) (BIO *out, 1645 const EVP_PKEY *pkey, 1646 int indent, ASN1_PCTX *pctx), 1647 int (*pkey_size) (const EVP_PKEY *pk), 1648 int (*pkey_bits) (const EVP_PKEY *pk)); 1649 void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, 1650 int (*priv_decode) (EVP_PKEY *pk, 1651 const PKCS8_PRIV_KEY_INFO 1652 *p8inf), 1653 int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, 1654 const EVP_PKEY *pk), 1655 int (*priv_print) (BIO *out, 1656 const EVP_PKEY *pkey, 1657 int indent, 1658 ASN1_PCTX *pctx)); 1659 void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, 1660 int (*param_decode) (EVP_PKEY *pkey, 1661 const unsigned char **pder, 1662 int derlen), 1663 int (*param_encode) (const EVP_PKEY *pkey, 1664 unsigned char **pder), 1665 int (*param_missing) (const EVP_PKEY *pk), 1666 int (*param_copy) (EVP_PKEY *to, 1667 const EVP_PKEY *from), 1668 int (*param_cmp) (const EVP_PKEY *a, 1669 const EVP_PKEY *b), 1670 int (*param_print) (BIO *out, 1671 const EVP_PKEY *pkey, 1672 int indent, 1673 ASN1_PCTX *pctx)); 1674 1675 void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, 1676 void (*pkey_free) (EVP_PKEY *pkey)); 1677 void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, 1678 int (*pkey_ctrl) (EVP_PKEY *pkey, int op, 1679 long arg1, void *arg2)); 1680 void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, 1681 int (*item_verify) (EVP_MD_CTX *ctx, 1682 const ASN1_ITEM *it, 1683 const void *data, 1684 const X509_ALGOR *a, 1685 const ASN1_BIT_STRING *sig, 1686 EVP_PKEY *pkey), 1687 int (*item_sign) (EVP_MD_CTX *ctx, 1688 const ASN1_ITEM *it, 1689 const void *data, 1690 X509_ALGOR *alg1, 1691 X509_ALGOR *alg2, 1692 ASN1_BIT_STRING *sig)); 1693 1694 void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, 1695 int (*siginf_set) (X509_SIG_INFO *siginf, 1696 const X509_ALGOR *alg, 1697 const ASN1_STRING *sig)); 1698 1699 void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, 1700 int (*pkey_check) (const EVP_PKEY *pk)); 1701 1702 void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, 1703 int (*pkey_pub_check) (const EVP_PKEY *pk)); 1704 1705 void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, 1706 int (*pkey_param_check) (const EVP_PKEY *pk)); 1707 1708 void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, 1709 int (*set_priv_key) (EVP_PKEY *pk, 1710 const unsigned char 1711 *priv, 1712 size_t len)); 1713 void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, 1714 int (*set_pub_key) (EVP_PKEY *pk, 1715 const unsigned char *pub, 1716 size_t len)); 1717 void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, 1718 int (*get_priv_key) (const EVP_PKEY *pk, 1719 unsigned char *priv, 1720 size_t *len)); 1721 void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, 1722 int (*get_pub_key) (const EVP_PKEY *pk, 1723 unsigned char *pub, 1724 size_t *len)); 1725 1726 void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, 1727 int (*pkey_security_bits) (const EVP_PKEY 1728 *pk)); 1729 1730 int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 1731 int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 1732 1733 int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); 1734 int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); 1735 int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); 1736 1737 int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); 1738 1739 const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); 1740 1741 # define EVP_PKEY_OP_UNDEFINED 0 1742 # define EVP_PKEY_OP_PARAMGEN (1 << 1) 1743 # define EVP_PKEY_OP_KEYGEN (1 << 2) 1744 # define EVP_PKEY_OP_FROMDATA (1 << 3) 1745 # define EVP_PKEY_OP_SIGN (1 << 4) 1746 # define EVP_PKEY_OP_VERIFY (1 << 5) 1747 # define EVP_PKEY_OP_VERIFYRECOVER (1 << 6) 1748 # define EVP_PKEY_OP_SIGNCTX (1 << 7) 1749 # define EVP_PKEY_OP_VERIFYCTX (1 << 8) 1750 # define EVP_PKEY_OP_ENCRYPT (1 << 9) 1751 # define EVP_PKEY_OP_DECRYPT (1 << 10) 1752 # define EVP_PKEY_OP_DERIVE (1 << 11) 1753 # define EVP_PKEY_OP_ENCAPSULATE (1 << 12) 1754 # define EVP_PKEY_OP_DECAPSULATE (1 << 13) 1755 # define EVP_PKEY_OP_SIGNMSG (1 << 14) 1756 # define EVP_PKEY_OP_VERIFYMSG (1 << 15) 1757 /* Update the following when adding new EVP_PKEY_OPs */ 1758 # define EVP_PKEY_OP_ALL ((1 << 16) - 1) 1759 1760 # define EVP_PKEY_OP_TYPE_SIG \ 1761 (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG \ 1762 | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \ 1763 | EVP_PKEY_OP_VERIFYRECOVER \ 1764 | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) 1765 1766 # define EVP_PKEY_OP_TYPE_CRYPT \ 1767 (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) 1768 1769 # define EVP_PKEY_OP_TYPE_DERIVE \ 1770 (EVP_PKEY_OP_DERIVE) 1771 1772 # define EVP_PKEY_OP_TYPE_DATA \ 1773 (EVP_PKEY_OP_FROMDATA) 1774 1775 # define EVP_PKEY_OP_TYPE_KEM \ 1776 (EVP_PKEY_OP_ENCAPSULATE | EVP_PKEY_OP_DECAPSULATE) 1777 1778 # define EVP_PKEY_OP_TYPE_GEN \ 1779 (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) 1780 1781 # define EVP_PKEY_OP_TYPE_NOGEN \ 1782 (EVP_PKEY_OP_ALL & ~EVP_PKEY_OP_TYPE_GEN) 1783 1784 int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, 1785 int keylen); 1786 1787 # define EVP_PKEY_CTRL_MD 1 1788 # define EVP_PKEY_CTRL_PEER_KEY 2 1789 # define EVP_PKEY_CTRL_SET_MAC_KEY 6 1790 # define EVP_PKEY_CTRL_DIGESTINIT 7 1791 /* Used by GOST key encryption in TLS */ 1792 # define EVP_PKEY_CTRL_SET_IV 8 1793 # ifndef OPENSSL_NO_DEPRECATED_3_0 1794 # define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 1795 # define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 1796 # define EVP_PKEY_CTRL_PKCS7_SIGN 5 1797 # define EVP_PKEY_CTRL_CMS_ENCRYPT 9 1798 # define EVP_PKEY_CTRL_CMS_DECRYPT 10 1799 # define EVP_PKEY_CTRL_CMS_SIGN 11 1800 # endif 1801 # define EVP_PKEY_CTRL_CIPHER 12 1802 # define EVP_PKEY_CTRL_GET_MD 13 1803 # define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 1804 # define EVP_PKEY_CTRL_SET1_ID 15 1805 # define EVP_PKEY_CTRL_GET1_ID 16 1806 # define EVP_PKEY_CTRL_GET1_ID_LEN 17 1807 1808 # define EVP_PKEY_ALG_CTRL 0x1000 1809 1810 # define EVP_PKEY_FLAG_AUTOARGLEN 2 1811 /* 1812 * Method handles all operations: don't assume any digest related defaults. 1813 */ 1814 # define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 1815 # ifndef OPENSSL_NO_DEPRECATED_3_0 1816 OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); 1817 OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); 1818 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, 1819 const EVP_PKEY_METHOD *meth); 1820 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, 1821 const EVP_PKEY_METHOD *src); 1822 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); 1823 OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); 1824 OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); 1825 OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); 1826 OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); 1827 # endif 1828 1829 EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 1830 const char *properties); 1831 int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); 1832 void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); 1833 const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); 1834 const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); 1835 const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); 1836 int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); 1837 void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, 1838 void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), 1839 void *arg); 1840 int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, 1841 void (*fn)(const char *name, void *data), 1842 void *data); 1843 const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); 1844 const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); 1845 const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); 1846 const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); 1847 1848 EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 1849 const char *properties); 1850 int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); 1851 void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); 1852 const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); 1853 const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); 1854 const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); 1855 int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); 1856 void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, 1857 void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), 1858 void *arg); 1859 int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, 1860 void (*fn)(const char *name, void *data), 1861 void *data); 1862 const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); 1863 const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); 1864 1865 EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); 1866 EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); 1867 EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, 1868 const char *name, 1869 const char *propquery); 1870 EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, 1871 EVP_PKEY *pkey, const char *propquery); 1872 EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); 1873 void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); 1874 int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); 1875 1876 int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); 1877 const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); 1878 int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); 1879 const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); 1880 1881 int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); 1882 int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); 1883 int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); 1884 1885 int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, 1886 int cmd, int p1, void *p2); 1887 int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, 1888 const char *value); 1889 int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, 1890 int cmd, uint64_t value); 1891 1892 int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); 1893 int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); 1894 1895 int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); 1896 1897 int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); 1898 void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); 1899 1900 EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, 1901 const unsigned char *key, int keylen); 1902 EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, 1903 const char *keytype, 1904 const char *propq, 1905 const unsigned char *priv, size_t len); 1906 EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, 1907 const unsigned char *priv, 1908 size_t len); 1909 EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, 1910 const char *keytype, const char *propq, 1911 const unsigned char *pub, size_t len); 1912 EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, 1913 const unsigned char *pub, 1914 size_t len); 1915 int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, 1916 size_t *len); 1917 int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, 1918 size_t *len); 1919 1920 # ifndef OPENSSL_NO_DEPRECATED_3_0 1921 OSSL_DEPRECATEDIN_3_0 1922 EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, 1923 size_t len, const EVP_CIPHER *cipher); 1924 # endif 1925 1926 void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); 1927 void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); 1928 EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); 1929 1930 EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); 1931 1932 void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); 1933 void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); 1934 1935 int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, 1936 const unsigned char *sig, size_t siglen); 1937 1938 void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); 1939 int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); 1940 OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); 1941 EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 1942 const char *properties); 1943 int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); 1944 const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); 1945 const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); 1946 void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, 1947 void (*fn)(EVP_SIGNATURE *signature, 1948 void *data), 1949 void *data); 1950 int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, 1951 void (*fn)(const char *name, void *data), 1952 void *data); 1953 const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); 1954 const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); 1955 1956 void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); 1957 int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); 1958 OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); 1959 EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 1960 const char *properties); 1961 int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); 1962 const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); 1963 const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); 1964 void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, 1965 void (*fn)(EVP_ASYM_CIPHER *cipher, 1966 void *arg), 1967 void *arg); 1968 int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, 1969 void (*fn)(const char *name, void *data), 1970 void *data); 1971 const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); 1972 const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); 1973 1974 void EVP_KEM_free(EVP_KEM *wrap); 1975 int EVP_KEM_up_ref(EVP_KEM *wrap); 1976 OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); 1977 EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 1978 const char *properties); 1979 int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); 1980 const char *EVP_KEM_get0_name(const EVP_KEM *wrap); 1981 const char *EVP_KEM_get0_description(const EVP_KEM *wrap); 1982 void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, 1983 void (*fn)(EVP_KEM *wrap, void *arg), void *arg); 1984 int EVP_KEM_names_do_all(const EVP_KEM *wrap, 1985 void (*fn)(const char *name, void *data), void *data); 1986 const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); 1987 const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); 1988 1989 int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); 1990 int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 1991 int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, 1992 EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 1993 int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, 1994 unsigned char *sig, size_t *siglen, 1995 const unsigned char *tbs, size_t tbslen); 1996 int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, 1997 EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 1998 int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, 1999 const unsigned char *in, size_t inlen); 2000 int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, 2001 unsigned char *sig, size_t *siglen); 2002 int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); 2003 int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2004 int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, 2005 EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 2006 int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, 2007 const unsigned char *sig, size_t siglen, 2008 const unsigned char *tbs, size_t tbslen); 2009 int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, 2010 EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 2011 int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, 2012 const unsigned char *in, size_t inlen); 2013 int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); 2014 int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); 2015 int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, 2016 const OSSL_PARAM params[]); 2017 int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, 2018 EVP_SIGNATURE *algo, 2019 const OSSL_PARAM params[]); 2020 int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, 2021 unsigned char *rout, size_t *routlen, 2022 const unsigned char *sig, size_t siglen); 2023 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); 2024 int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2025 int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, 2026 unsigned char *out, size_t *outlen, 2027 const unsigned char *in, size_t inlen); 2028 int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); 2029 int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2030 int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, 2031 unsigned char *out, size_t *outlen, 2032 const unsigned char *in, size_t inlen); 2033 2034 int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); 2035 int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2036 int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, 2037 int validate_peer); 2038 int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); 2039 int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); 2040 2041 int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2042 int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, 2043 const OSSL_PARAM params[]); 2044 int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, 2045 unsigned char *wrappedkey, size_t *wrappedkeylen, 2046 unsigned char *genkey, size_t *genkeylen); 2047 int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 2048 int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, 2049 const OSSL_PARAM params[]); 2050 int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, 2051 unsigned char *unwrapped, size_t *unwrappedlen, 2052 const unsigned char *wrapped, size_t wrappedlen); 2053 typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); 2054 2055 int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); 2056 int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, 2057 OSSL_PARAM param[]); 2058 const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); 2059 2060 int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); 2061 int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, 2062 OSSL_CALLBACK *export_cb, void *export_cbarg); 2063 2064 const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); 2065 int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); 2066 int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, 2067 int *out); 2068 int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, 2069 size_t *out); 2070 int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, 2071 BIGNUM **bn); 2072 int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, 2073 char *str, size_t max_buf_sz, size_t *out_sz); 2074 int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, 2075 unsigned char *buf, size_t max_buf_sz, 2076 size_t *out_sz); 2077 2078 const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); 2079 int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); 2080 int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); 2081 int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); 2082 int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, 2083 const BIGNUM *bn); 2084 int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, 2085 const char *str); 2086 int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, 2087 const unsigned char *buf, size_t bsize); 2088 2089 int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); 2090 int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); 2091 2092 EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, 2093 const char *type, ...); 2094 int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); 2095 int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 2096 int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); 2097 int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 2098 int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 2099 int EVP_PKEY_check(EVP_PKEY_CTX *ctx); 2100 int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); 2101 int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); 2102 int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); 2103 int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); 2104 int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); 2105 int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); 2106 2107 # define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ 2108 CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) 2109 int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); 2110 void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); 2111 2112 void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); 2113 EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); 2114 2115 int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); 2116 # ifndef OPENSSL_NO_DEPRECATED_3_0 2117 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, 2118 int (*init) (EVP_PKEY_CTX *ctx)); 2119 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy 2120 (EVP_PKEY_METHOD *pmeth, int (*copy) (EVP_PKEY_CTX *dst, 2121 const EVP_PKEY_CTX *src)); 2122 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup 2123 (EVP_PKEY_METHOD *pmeth, void (*cleanup) (EVP_PKEY_CTX *ctx)); 2124 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen 2125 (EVP_PKEY_METHOD *pmeth, int (*paramgen_init) (EVP_PKEY_CTX *ctx), 2126 int (*paramgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 2127 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen 2128 (EVP_PKEY_METHOD *pmeth, int (*keygen_init) (EVP_PKEY_CTX *ctx), 2129 int (*keygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 2130 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign 2131 (EVP_PKEY_METHOD *pmeth, int (*sign_init) (EVP_PKEY_CTX *ctx), 2132 int (*sign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 2133 const unsigned char *tbs, size_t tbslen)); 2134 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify 2135 (EVP_PKEY_METHOD *pmeth, int (*verify_init) (EVP_PKEY_CTX *ctx), 2136 int (*verify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, 2137 const unsigned char *tbs, size_t tbslen)); 2138 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover 2139 (EVP_PKEY_METHOD *pmeth, int (*verify_recover_init) (EVP_PKEY_CTX *ctx), 2140 int (*verify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig, 2141 size_t *siglen, const unsigned char *tbs, 2142 size_t tbslen)); 2143 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx 2144 (EVP_PKEY_METHOD *pmeth, int (*signctx_init) (EVP_PKEY_CTX *ctx, 2145 EVP_MD_CTX *mctx), 2146 int (*signctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 2147 EVP_MD_CTX *mctx)); 2148 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx 2149 (EVP_PKEY_METHOD *pmeth, int (*verifyctx_init) (EVP_PKEY_CTX *ctx, 2150 EVP_MD_CTX *mctx), 2151 int (*verifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, 2152 EVP_MD_CTX *mctx)); 2153 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt 2154 (EVP_PKEY_METHOD *pmeth, int (*encrypt_init) (EVP_PKEY_CTX *ctx), 2155 int (*encryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 2156 const unsigned char *in, size_t inlen)); 2157 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt 2158 (EVP_PKEY_METHOD *pmeth, int (*decrypt_init) (EVP_PKEY_CTX *ctx), 2159 int (*decrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 2160 const unsigned char *in, size_t inlen)); 2161 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive 2162 (EVP_PKEY_METHOD *pmeth, int (*derive_init) (EVP_PKEY_CTX *ctx), 2163 int (*derive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); 2164 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl 2165 (EVP_PKEY_METHOD *pmeth, int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, 2166 void *p2), 2167 int (*ctrl_str) (EVP_PKEY_CTX *ctx, const char *type, const char *value)); 2168 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign 2169 (EVP_PKEY_METHOD *pmeth, 2170 int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, 2171 const unsigned char *tbs, size_t tbslen)); 2172 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify 2173 (EVP_PKEY_METHOD *pmeth, 2174 int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, 2175 size_t siglen, const unsigned char *tbs, 2176 size_t tbslen)); 2177 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check 2178 (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 2179 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check 2180 (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 2181 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check 2182 (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 2183 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom 2184 (EVP_PKEY_METHOD *pmeth, int (*digest_custom) (EVP_PKEY_CTX *ctx, 2185 EVP_MD_CTX *mctx)); 2186 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init 2187 (const EVP_PKEY_METHOD *pmeth, int (**pinit) (EVP_PKEY_CTX *ctx)); 2188 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy 2189 (const EVP_PKEY_METHOD *pmeth, int (**pcopy) (EVP_PKEY_CTX *dst, 2190 const EVP_PKEY_CTX *src)); 2191 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup 2192 (const EVP_PKEY_METHOD *pmeth, void (**pcleanup) (EVP_PKEY_CTX *ctx)); 2193 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen 2194 (const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init) (EVP_PKEY_CTX *ctx), 2195 int (**pparamgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 2196 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen 2197 (const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init) (EVP_PKEY_CTX *ctx), 2198 int (**pkeygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 2199 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign 2200 (const EVP_PKEY_METHOD *pmeth, int (**psign_init) (EVP_PKEY_CTX *ctx), 2201 int (**psign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 2202 const unsigned char *tbs, size_t tbslen)); 2203 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify 2204 (const EVP_PKEY_METHOD *pmeth, int (**pverify_init) (EVP_PKEY_CTX *ctx), 2205 int (**pverify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, 2206 size_t siglen, const unsigned char *tbs, size_t tbslen)); 2207 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover 2208 (const EVP_PKEY_METHOD *pmeth, 2209 int (**pverify_recover_init) (EVP_PKEY_CTX *ctx), 2210 int (**pverify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig, 2211 size_t *siglen, const unsigned char *tbs, 2212 size_t tbslen)); 2213 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx 2214 (const EVP_PKEY_METHOD *pmeth, 2215 int (**psignctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), 2216 int (**psignctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 2217 EVP_MD_CTX *mctx)); 2218 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx 2219 (const EVP_PKEY_METHOD *pmeth, 2220 int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), 2221 int (**pverifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, 2222 int siglen, EVP_MD_CTX *mctx)); 2223 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt 2224 (const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init) (EVP_PKEY_CTX *ctx), 2225 int (**pencryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 2226 const unsigned char *in, size_t inlen)); 2227 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt 2228 (const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), 2229 int (**pdecrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 2230 const unsigned char *in, size_t inlen)); 2231 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive 2232 (const EVP_PKEY_METHOD *pmeth, int (**pderive_init) (EVP_PKEY_CTX *ctx), 2233 int (**pderive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); 2234 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl 2235 (const EVP_PKEY_METHOD *pmeth, 2236 int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, void *p2), 2237 int (**pctrl_str) (EVP_PKEY_CTX *ctx, const char *type, 2238 const char *value)); 2239 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign 2240 (const EVP_PKEY_METHOD *pmeth, 2241 int (**digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, 2242 const unsigned char *tbs, size_t tbslen)); 2243 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify 2244 (const EVP_PKEY_METHOD *pmeth, 2245 int (**digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, 2246 size_t siglen, const unsigned char *tbs, 2247 size_t tbslen)); 2248 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check 2249 (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 2250 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check 2251 (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 2252 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check 2253 (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 2254 OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom 2255 (const EVP_PKEY_METHOD *pmeth, 2256 int (**pdigest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); 2257 # endif 2258 2259 void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); 2260 int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); 2261 EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 2262 const char *properties); 2263 OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); 2264 int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); 2265 const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); 2266 const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); 2267 void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, 2268 void (*fn)(EVP_KEYEXCH *keyexch, void *data), 2269 void *data); 2270 int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, 2271 void (*fn)(const char *name, void *data), 2272 void *data); 2273 const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); 2274 const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); 2275 2276 void EVP_add_alg_module(void); 2277 2278 int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); 2279 int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); 2280 int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, 2281 size_t *gname_len); 2282 2283 OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); 2284 const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); 2285 const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); 2286 2287 int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); 2288 EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, 2289 int selection, const OSSL_PARAM *params); 2290 EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, 2291 const char *propquery, const OSSL_PARAM *params); 2292 EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, 2293 unsigned char *key, size_t keylen, 2294 const char *propquery); 2295 int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, 2296 size_t *len); 2297 const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); 2298 int EVP_SKEY_export(const EVP_SKEY *skey, int selection, 2299 OSSL_CALLBACK *export_cb, void *export_cbarg); 2300 int EVP_SKEY_up_ref(EVP_SKEY *skey); 2301 void EVP_SKEY_free(EVP_SKEY *skey); 2302 const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); 2303 const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); 2304 EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, 2305 OSSL_PROVIDER *prov, const char *propquery); 2306 2307 # ifdef __cplusplus 2308 } 2309 # endif 2310 #endif 2311