155714Skris/* crypto/evp/evp.h */ 255714Skris/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 355714Skris * All rights reserved. 455714Skris * 555714Skris * This package is an SSL implementation written 655714Skris * by Eric Young (eay@cryptsoft.com). 755714Skris * The implementation was written so as to conform with Netscapes SSL. 8296341Sdelphij * 955714Skris * This library is free for commercial and non-commercial use as long as 1055714Skris * the following conditions are aheared to. The following conditions 1155714Skris * apply to all code found in this distribution, be it the RC4, RSA, 1255714Skris * lhash, DES, etc., code; not just the SSL code. The SSL documentation 1355714Skris * included with this distribution is covered by the same copyright terms 1455714Skris * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15296341Sdelphij * 1655714Skris * Copyright remains Eric Young's, and as such any Copyright notices in 1755714Skris * the code are not to be removed. 1855714Skris * If this package is used in a product, Eric Young should be given attribution 1955714Skris * as the author of the parts of the library used. 2055714Skris * This can be in the form of a textual message at program startup or 2155714Skris * in documentation (online or textual) provided with the package. 22296341Sdelphij * 2355714Skris * Redistribution and use in source and binary forms, with or without 2455714Skris * modification, are permitted provided that the following conditions 2555714Skris * are met: 2655714Skris * 1. Redistributions of source code must retain the copyright 2755714Skris * notice, this list of conditions and the following disclaimer. 2855714Skris * 2. Redistributions in binary form must reproduce the above copyright 2955714Skris * notice, this list of conditions and the following disclaimer in the 3055714Skris * documentation and/or other materials provided with the distribution. 3155714Skris * 3. All advertising materials mentioning features or use of this software 3255714Skris * must display the following acknowledgement: 3355714Skris * "This product includes cryptographic software written by 3455714Skris * Eric Young (eay@cryptsoft.com)" 3555714Skris * The word 'cryptographic' can be left out if the rouines from the library 3655714Skris * being used are not cryptographic related :-). 37296341Sdelphij * 4. If you include any Windows specific code (or a derivative thereof) from 3855714Skris * the apps directory (application code) you must include an acknowledgement: 3955714Skris * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40296341Sdelphij * 4155714Skris * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 4255714Skris * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4355714Skris * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4455714Skris * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 4555714Skris * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 4655714Skris * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 4755714Skris * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4855714Skris * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 4955714Skris * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5055714Skris * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5155714Skris * SUCH DAMAGE. 52296341Sdelphij * 5355714Skris * The licence and distribution terms for any publically available version or 5455714Skris * derivative of this code cannot be changed. i.e. this code cannot simply be 5555714Skris * copied and put under another distribution licence 5655714Skris * [including the GNU Public Licence.] 5755714Skris */ 5855714Skris 5955714Skris#ifndef HEADER_ENVELOPE_H 60296341Sdelphij# define HEADER_ENVELOPE_H 6155714Skris 62296341Sdelphij# ifdef OPENSSL_ALGORITHM_DEFINES 63296341Sdelphij# include <openssl/opensslconf.h> 64296341Sdelphij# else 65296341Sdelphij# define OPENSSL_ALGORITHM_DEFINES 66296341Sdelphij# include <openssl/opensslconf.h> 67296341Sdelphij# undef OPENSSL_ALGORITHM_DEFINES 68296341Sdelphij# endif 6955714Skris 70296341Sdelphij# include <openssl/ossl_typ.h> 71110007Smarkm 72296341Sdelphij# include <openssl/symhacks.h> 73110007Smarkm 74296341Sdelphij# ifndef OPENSSL_NO_BIO 75296341Sdelphij# include <openssl/bio.h> 76296341Sdelphij# endif 7755714Skris 78296341Sdelphij/*- 79296341Sdelphij#define EVP_RC2_KEY_SIZE 16 80296341Sdelphij#define EVP_RC4_KEY_SIZE 16 81296341Sdelphij#define EVP_BLOWFISH_KEY_SIZE 16 82296341Sdelphij#define EVP_CAST5_KEY_SIZE 16 83296341Sdelphij#define EVP_RC5_32_12_16_KEY_SIZE 16 84110007Smarkm*/ 85296341Sdelphij# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ 86296341Sdelphij# define EVP_MAX_KEY_LENGTH 64 87296341Sdelphij# define EVP_MAX_IV_LENGTH 16 88296341Sdelphij# define EVP_MAX_BLOCK_LENGTH 32 8955714Skris 90296341Sdelphij# define PKCS5_SALT_LEN 8 9155714Skris/* Default PKCS#5 iteration count */ 92296341Sdelphij# define PKCS5_DEFAULT_ITER 2048 9355714Skris 94296341Sdelphij# include <openssl/objects.h> 9555714Skris 96296341Sdelphij# define EVP_PK_RSA 0x0001 97296341Sdelphij# define EVP_PK_DSA 0x0002 98296341Sdelphij# define EVP_PK_DH 0x0004 99296341Sdelphij# define EVP_PK_EC 0x0008 100296341Sdelphij# define EVP_PKT_SIGN 0x0010 101296341Sdelphij# define EVP_PKT_ENC 0x0020 102296341Sdelphij# define EVP_PKT_EXCH 0x0040 103296341Sdelphij# define EVP_PKS_RSA 0x0100 104296341Sdelphij# define EVP_PKS_DSA 0x0200 105296341Sdelphij# define EVP_PKS_EC 0x0400 10655714Skris 107296341Sdelphij# define EVP_PKEY_NONE NID_undef 108296341Sdelphij# define EVP_PKEY_RSA NID_rsaEncryption 109296341Sdelphij# define EVP_PKEY_RSA2 NID_rsa 110296341Sdelphij# define EVP_PKEY_DSA NID_dsa 111296341Sdelphij# define EVP_PKEY_DSA1 NID_dsa_2 112296341Sdelphij# define EVP_PKEY_DSA2 NID_dsaWithSHA 113296341Sdelphij# define EVP_PKEY_DSA3 NID_dsaWithSHA1 114296341Sdelphij# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 115296341Sdelphij# define EVP_PKEY_DH NID_dhKeyAgreement 116296341Sdelphij# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey 117296341Sdelphij# define EVP_PKEY_HMAC NID_hmac 118296341Sdelphij# define EVP_PKEY_CMAC NID_cmac 11955714Skris 120296341Sdelphij#ifdef __cplusplus 12168654Skrisextern "C" { 12268654Skris#endif 12368654Skris 124296341Sdelphij/* 125296341Sdelphij * Type needs to be a bit field Sub-type needs to be for variations on the 126296341Sdelphij * method, as in, can it do arbitrary encryption.... 127296341Sdelphij */ 128296341Sdelphijstruct evp_pkey_st { 129296341Sdelphij int type; 130296341Sdelphij int save_type; 131296341Sdelphij int references; 132296341Sdelphij const EVP_PKEY_ASN1_METHOD *ameth; 133296341Sdelphij ENGINE *engine; 134296341Sdelphij union { 135296341Sdelphij char *ptr; 136296341Sdelphij# ifndef OPENSSL_NO_RSA 137296341Sdelphij struct rsa_st *rsa; /* RSA */ 138296341Sdelphij# endif 139296341Sdelphij# ifndef OPENSSL_NO_DSA 140296341Sdelphij struct dsa_st *dsa; /* DSA */ 141296341Sdelphij# endif 142296341Sdelphij# ifndef OPENSSL_NO_DH 143296341Sdelphij struct dh_st *dh; /* DH */ 144296341Sdelphij# endif 145296341Sdelphij# ifndef OPENSSL_NO_EC 146296341Sdelphij struct ec_key_st *ec; /* ECC */ 147296341Sdelphij# endif 148296341Sdelphij } pkey; 149296341Sdelphij int save_parameters; 150296341Sdelphij STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ 151296341Sdelphij} /* EVP_PKEY */ ; 15255714Skris 153296341Sdelphij# define EVP_PKEY_MO_SIGN 0x0001 154296341Sdelphij# define EVP_PKEY_MO_VERIFY 0x0002 155296341Sdelphij# define EVP_PKEY_MO_ENCRYPT 0x0004 156296341Sdelphij# define EVP_PKEY_MO_DECRYPT 0x0008 15755714Skris 158296341Sdelphij# ifndef EVP_MD 159296341Sdelphijstruct env_md_st { 160296341Sdelphij int type; 161296341Sdelphij int pkey_type; 162296341Sdelphij int md_size; 163296341Sdelphij unsigned long flags; 164296341Sdelphij int (*init) (EVP_MD_CTX *ctx); 165296341Sdelphij int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); 166296341Sdelphij int (*final) (EVP_MD_CTX *ctx, unsigned char *md); 167296341Sdelphij int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); 168296341Sdelphij int (*cleanup) (EVP_MD_CTX *ctx); 169296341Sdelphij /* FIXME: prototype these some day */ 170296341Sdelphij int (*sign) (int type, const unsigned char *m, unsigned int m_length, 171296341Sdelphij unsigned char *sigret, unsigned int *siglen, void *key); 172296341Sdelphij int (*verify) (int type, const unsigned char *m, unsigned int m_length, 173296341Sdelphij const unsigned char *sigbuf, unsigned int siglen, 174296341Sdelphij void *key); 175296341Sdelphij int required_pkey_type[5]; /* EVP_PKEY_xxx */ 176296341Sdelphij int block_size; 177296341Sdelphij int ctx_size; /* how big does the ctx->md_data need to be */ 178296341Sdelphij /* control function */ 179296341Sdelphij int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); 180296341Sdelphij} /* EVP_MD */ ; 18155714Skris 182296341Sdelphijtypedef int evp_sign_method(int type, const unsigned char *m, 183296341Sdelphij unsigned int m_length, unsigned char *sigret, 184296341Sdelphij unsigned int *siglen, void *key); 185296341Sdelphijtypedef int evp_verify_method(int type, const unsigned char *m, 186296341Sdelphij unsigned int m_length, 187296341Sdelphij const unsigned char *sigbuf, 188296341Sdelphij unsigned int siglen, void *key); 18955714Skris 190296341Sdelphij/* digest can only handle a single block */ 191296341Sdelphij# define EVP_MD_FLAG_ONESHOT 0x0001 192160817Ssimon 193296341Sdelphij/* 194296341Sdelphij * digest is a "clone" digest used 195296341Sdelphij * which is a copy of an existing 196296341Sdelphij * one for a specific public key type. 197296341Sdelphij * EVP_dss1() etc 198296341Sdelphij */ 199296341Sdelphij# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 20055714Skris 201238405Sjkim/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ 202238405Sjkim 203296341Sdelphij# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 204238405Sjkim 205238405Sjkim/* DigestAlgorithmIdentifier flags... */ 206238405Sjkim 207296341Sdelphij# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 208238405Sjkim 209238405Sjkim/* NULL or absent parameter accepted. Use NULL */ 210238405Sjkim 211296341Sdelphij# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 212238405Sjkim 213238405Sjkim/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ 214238405Sjkim 215296341Sdelphij# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 216238405Sjkim 217238405Sjkim/* Custom handling via ctrl */ 218238405Sjkim 219296341Sdelphij# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 220238405Sjkim 221296341Sdelphij/* Note if suitable for use in FIPS mode */ 222296341Sdelphij# define EVP_MD_FLAG_FIPS 0x0400 223194206Ssimon 224238405Sjkim/* Digest ctrls */ 225194206Ssimon 226296341Sdelphij# define EVP_MD_CTRL_DIGALGID 0x1 227296341Sdelphij# define EVP_MD_CTRL_MICALG 0x2 228238405Sjkim 229238405Sjkim/* Minimum Algorithm specific ctrl value */ 230238405Sjkim 231296341Sdelphij# define EVP_MD_CTRL_ALG_CTRL 0x1000 232238405Sjkim 233296341Sdelphij# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} 23455714Skris 235296341Sdelphij# ifndef OPENSSL_NO_DSA 236296341Sdelphij# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ 237296341Sdelphij (evp_verify_method *)DSA_verify, \ 238296341Sdelphij {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ 239296341Sdelphij EVP_PKEY_DSA4,0} 240296341Sdelphij# else 241296341Sdelphij# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method 242296341Sdelphij# endif 24355714Skris 244296341Sdelphij# ifndef OPENSSL_NO_ECDSA 245296341Sdelphij# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ 246296341Sdelphij (evp_verify_method *)ECDSA_verify, \ 247160817Ssimon {EVP_PKEY_EC,0,0,0} 248296341Sdelphij# else 249296341Sdelphij# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method 250296341Sdelphij# endif 251160817Ssimon 252296341Sdelphij# ifndef OPENSSL_NO_RSA 253296341Sdelphij# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ 254296341Sdelphij (evp_verify_method *)RSA_verify, \ 255296341Sdelphij {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} 256296341Sdelphij# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ 257296341Sdelphij (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ 258296341Sdelphij (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ 259296341Sdelphij {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} 260296341Sdelphij# else 261296341Sdelphij# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method 262296341Sdelphij# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method 263296341Sdelphij# endif 26455714Skris 265296341Sdelphij# endif /* !EVP_MD */ 26655714Skris 267296341Sdelphijstruct env_md_ctx_st { 268296341Sdelphij const EVP_MD *digest; 269296341Sdelphij ENGINE *engine; /* functional reference if 'digest' is 270296341Sdelphij * ENGINE-provided */ 271296341Sdelphij unsigned long flags; 272296341Sdelphij void *md_data; 273296341Sdelphij /* Public key context for sign/verify */ 274296341Sdelphij EVP_PKEY_CTX *pctx; 275296341Sdelphij /* Update function: usually copied from EVP_MD */ 276296341Sdelphij int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); 277296341Sdelphij} /* EVP_MD_CTX */ ; 27855714Skris 279110007Smarkm/* values for EVP_MD_CTX flags */ 28068654Skris 281296341Sdelphij# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be 282296341Sdelphij * called once only */ 283296341Sdelphij# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been 284296341Sdelphij * cleaned */ 285296341Sdelphij# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data 286296341Sdelphij * in EVP_MD_CTX_cleanup */ 287296341Sdelphij/* 288296341Sdelphij * FIPS and pad options are ignored in 1.0.0, definitions are here so we 289296341Sdelphij * don't accidentally reuse the values for other purposes. 290238405Sjkim */ 291238405Sjkim 292296341Sdelphij# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS 293296341Sdelphij * digest in FIPS mode */ 294110007Smarkm 295296341Sdelphij/* 296296341Sdelphij * The following PAD options are also currently ignored in 1.0.0, digest 297238405Sjkim * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() 298238405Sjkim * instead. 299238405Sjkim */ 300296341Sdelphij# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ 301296341Sdelphij# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ 302296341Sdelphij# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ 303296341Sdelphij# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ 304194206Ssimon 305296341Sdelphij# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ 306238405Sjkim 307296341Sdelphijstruct evp_cipher_st { 308296341Sdelphij int nid; 309296341Sdelphij int block_size; 310296341Sdelphij /* Default value for variable length ciphers */ 311296341Sdelphij int key_len; 312296341Sdelphij int iv_len; 313296341Sdelphij /* Various flags */ 314296341Sdelphij unsigned long flags; 315296341Sdelphij /* init key */ 316296341Sdelphij int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, 317296341Sdelphij const unsigned char *iv, int enc); 318296341Sdelphij /* encrypt/decrypt data */ 319296341Sdelphij int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, 320296341Sdelphij const unsigned char *in, size_t inl); 321296341Sdelphij /* cleanup ctx */ 322296341Sdelphij int (*cleanup) (EVP_CIPHER_CTX *); 323296341Sdelphij /* how big ctx->cipher_data needs to be */ 324296341Sdelphij int ctx_size; 325296341Sdelphij /* Populate a ASN1_TYPE with parameters */ 326296341Sdelphij int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); 327296341Sdelphij /* Get parameters from a ASN1_TYPE */ 328296341Sdelphij int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); 329296341Sdelphij /* Miscellaneous operations */ 330296341Sdelphij int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); 331296341Sdelphij /* Application data */ 332296341Sdelphij void *app_data; 333296341Sdelphij} /* EVP_CIPHER */ ; 33455714Skris 33568654Skris/* Values for cipher flags */ 33668654Skris 33768654Skris/* Modes for ciphers */ 33868654Skris 339296341Sdelphij# define EVP_CIPH_STREAM_CIPHER 0x0 340296341Sdelphij# define EVP_CIPH_ECB_MODE 0x1 341296341Sdelphij# define EVP_CIPH_CBC_MODE 0x2 342296341Sdelphij# define EVP_CIPH_CFB_MODE 0x3 343296341Sdelphij# define EVP_CIPH_OFB_MODE 0x4 344296341Sdelphij# define EVP_CIPH_CTR_MODE 0x5 345296341Sdelphij# define EVP_CIPH_GCM_MODE 0x6 346296341Sdelphij# define EVP_CIPH_CCM_MODE 0x7 347296341Sdelphij# define EVP_CIPH_XTS_MODE 0x10001 348296341Sdelphij# define EVP_CIPH_MODE 0xF0007 34968654Skris/* Set if variable length cipher */ 350296341Sdelphij# define EVP_CIPH_VARIABLE_LENGTH 0x8 35168654Skris/* Set if the iv handling should be done by the cipher itself */ 352296341Sdelphij# define EVP_CIPH_CUSTOM_IV 0x10 35368654Skris/* Set if the cipher's init() function should be called if key is NULL */ 354296341Sdelphij# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 35568654Skris/* Call ctrl() to init cipher parameters */ 356296341Sdelphij# define EVP_CIPH_CTRL_INIT 0x40 35768654Skris/* Don't use standard key length function */ 358296341Sdelphij# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 359110007Smarkm/* Don't use standard block padding */ 360296341Sdelphij# define EVP_CIPH_NO_PADDING 0x100 361160817Ssimon/* cipher handles random key generation */ 362296341Sdelphij# define EVP_CIPH_RAND_KEY 0x200 363238405Sjkim/* cipher has its own additional copying logic */ 364296341Sdelphij# define EVP_CIPH_CUSTOM_COPY 0x400 365194206Ssimon/* Allow use default ASN1 get/set iv */ 366296341Sdelphij# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 367194206Ssimon/* Buffer length in bits not bytes: CFB1 mode only */ 368296341Sdelphij# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 369238405Sjkim/* Note if suitable for use in FIPS mode */ 370296341Sdelphij# define EVP_CIPH_FLAG_FIPS 0x4000 371238405Sjkim/* Allow non FIPS cipher in FIPS mode */ 372296341Sdelphij# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 373296341Sdelphij/* 374296341Sdelphij * Cipher handles any and all padding logic as well as finalisation. 375238405Sjkim */ 376296341Sdelphij# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 377296341Sdelphij# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 37868654Skris 37968654Skris/* ctrl() values */ 38068654Skris 381296341Sdelphij# define EVP_CTRL_INIT 0x0 382296341Sdelphij# define EVP_CTRL_SET_KEY_LENGTH 0x1 383296341Sdelphij# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 384296341Sdelphij# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 385296341Sdelphij# define EVP_CTRL_GET_RC5_ROUNDS 0x4 386296341Sdelphij# define EVP_CTRL_SET_RC5_ROUNDS 0x5 387296341Sdelphij# define EVP_CTRL_RAND_KEY 0x6 388296341Sdelphij# define EVP_CTRL_PBE_PRF_NID 0x7 389296341Sdelphij# define EVP_CTRL_COPY 0x8 390296341Sdelphij# define EVP_CTRL_GCM_SET_IVLEN 0x9 391296341Sdelphij# define EVP_CTRL_GCM_GET_TAG 0x10 392296341Sdelphij# define EVP_CTRL_GCM_SET_TAG 0x11 393296341Sdelphij# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 394296341Sdelphij# define EVP_CTRL_GCM_IV_GEN 0x13 395296341Sdelphij# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN 396296341Sdelphij# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG 397296341Sdelphij# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG 398296341Sdelphij# define EVP_CTRL_CCM_SET_L 0x14 399296341Sdelphij# define EVP_CTRL_CCM_SET_MSGLEN 0x15 400296341Sdelphij/* 401296341Sdelphij * AEAD cipher deduces payload length and returns number of bytes required to 402296341Sdelphij * store MAC and eventual padding. Subsequent call to EVP_Cipher even 403296341Sdelphij * appends/verifies MAC. 404238405Sjkim */ 405296341Sdelphij# define EVP_CTRL_AEAD_TLS1_AAD 0x16 406238405Sjkim/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ 407296341Sdelphij# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 408238405Sjkim/* Set the GCM invocation field, decrypt only */ 409296341Sdelphij# define EVP_CTRL_GCM_SET_IV_INV 0x18 41068654Skris 411296341Sdelphij/* RFC 5246 defines additional data to be 13 bytes in length */ 412296341Sdelphij# define EVP_AEAD_TLS1_AAD_LEN 13 413296341Sdelphij 414238405Sjkim/* GCM TLS constants */ 415238405Sjkim/* Length of fixed part of IV derived from PRF */ 416296341Sdelphij# define EVP_GCM_TLS_FIXED_IV_LEN 4 417238405Sjkim/* Length of explicit part of IV part of TLS records */ 418296341Sdelphij# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 419238405Sjkim/* Length of tag for TLS */ 420296341Sdelphij# define EVP_GCM_TLS_TAG_LEN 16 421238405Sjkim 422296341Sdelphijtypedef struct evp_cipher_info_st { 423296341Sdelphij const EVP_CIPHER *cipher; 424296341Sdelphij unsigned char iv[EVP_MAX_IV_LENGTH]; 425296341Sdelphij} EVP_CIPHER_INFO; 42655714Skris 427296341Sdelphijstruct evp_cipher_ctx_st { 428296341Sdelphij const EVP_CIPHER *cipher; 429296341Sdelphij ENGINE *engine; /* functional reference if 'cipher' is 430296341Sdelphij * ENGINE-provided */ 431296341Sdelphij int encrypt; /* encrypt or decrypt */ 432296341Sdelphij int buf_len; /* number we have left */ 433296341Sdelphij unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ 434296341Sdelphij unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ 435296341Sdelphij unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ 436296341Sdelphij int num; /* used by cfb/ofb/ctr mode */ 437296341Sdelphij void *app_data; /* application stuff */ 438296341Sdelphij int key_len; /* May change for variable length cipher */ 439296341Sdelphij unsigned long flags; /* Various flags */ 440296341Sdelphij void *cipher_data; /* per EVP data */ 441296341Sdelphij int final_used; 442296341Sdelphij int block_mask; 443296341Sdelphij unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ 444296341Sdelphij} /* EVP_CIPHER_CTX */ ; 44555714Skris 446296341Sdelphijtypedef struct evp_Encode_Ctx_st { 447296341Sdelphij /* number saved in a partial encode/decode */ 448296341Sdelphij int num; 449296341Sdelphij /* 450296341Sdelphij * The length is either the output line length (in input bytes) or the 451296341Sdelphij * shortest input line length that is ok. Once decoding begins, the 452296341Sdelphij * length is adjusted up each time a longer line is decoded 453296341Sdelphij */ 454296341Sdelphij int length; 455296341Sdelphij /* data to encode */ 456296341Sdelphij unsigned char enc_data[80]; 457296341Sdelphij /* number read on current line */ 458296341Sdelphij int line_num; 459296341Sdelphij int expect_nl; 460296341Sdelphij} EVP_ENCODE_CTX; 46155714Skris 46255714Skris/* Password based encryption function */ 463296341Sdelphijtypedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, 464296341Sdelphij int passlen, ASN1_TYPE *param, 465296341Sdelphij const EVP_CIPHER *cipher, const EVP_MD *md, 466296341Sdelphij int en_de); 46755714Skris 468296341Sdelphij# ifndef OPENSSL_NO_RSA 469296341Sdelphij# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ 470296341Sdelphij (char *)(rsa)) 471296341Sdelphij# endif 47272616Skris 473296341Sdelphij# ifndef OPENSSL_NO_DSA 474296341Sdelphij# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ 475296341Sdelphij (char *)(dsa)) 476296341Sdelphij# endif 47772616Skris 478296341Sdelphij# ifndef OPENSSL_NO_DH 479296341Sdelphij# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ 480296341Sdelphij (char *)(dh)) 481296341Sdelphij# endif 48255714Skris 483296341Sdelphij# ifndef OPENSSL_NO_EC 484296341Sdelphij# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ 485160817Ssimon (char *)(eckey)) 486296341Sdelphij# endif 487160817Ssimon 48855714Skris/* Add some extra combinations */ 489296341Sdelphij# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) 490296341Sdelphij# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) 491296341Sdelphij# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) 492296341Sdelphij# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) 49355714Skris 494167615Ssimonint EVP_MD_type(const EVP_MD *md); 495296341Sdelphij# define EVP_MD_nid(e) EVP_MD_type(e) 496296341Sdelphij# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) 497296341Sdelphijint EVP_MD_pkey_type(const EVP_MD *md); 498167615Ssimonint EVP_MD_size(const EVP_MD *md); 499167615Ssimonint EVP_MD_block_size(const EVP_MD *md); 500238405Sjkimunsigned long EVP_MD_flags(const EVP_MD *md); 50155714Skris 502238405Sjkimconst EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); 503296341Sdelphij# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) 504296341Sdelphij# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) 505296341Sdelphij# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) 50655714Skris 507167615Ssimonint EVP_CIPHER_nid(const EVP_CIPHER *cipher); 508296341Sdelphij# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) 509167615Ssimonint EVP_CIPHER_block_size(const EVP_CIPHER *cipher); 510167615Ssimonint EVP_CIPHER_key_length(const EVP_CIPHER *cipher); 511167615Ssimonint EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); 512167615Ssimonunsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); 513296341Sdelphij# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) 51455714Skris 515296341Sdelphijconst EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); 516167615Ssimonint EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); 517167615Ssimonint EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); 518167615Ssimonint EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); 519167615Ssimonint EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); 520238405Sjkimint EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); 521296341Sdelphijvoid *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); 522167615Ssimonvoid EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); 523296341Sdelphij# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) 524167615Ssimonunsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); 525296341Sdelphij# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) 52655714Skris 527296341Sdelphij# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) 528296341Sdelphij# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) 52955714Skris 530296341Sdelphij# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) 531296341Sdelphij# define EVP_SignInit(a,b) EVP_DigestInit(a,b) 532296341Sdelphij# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 533296341Sdelphij# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) 534296341Sdelphij# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) 535296341Sdelphij# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 536296341Sdelphij# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) 537296341Sdelphij# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) 538296341Sdelphij# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 539296341Sdelphij# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 54055714Skris 541296341Sdelphij# ifdef CONST_STRICT 542296341Sdelphijvoid BIO_set_md(BIO *, const EVP_MD *md); 543296341Sdelphij# else 544296341Sdelphij# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) 545296341Sdelphij# endif 546296341Sdelphij# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) 547296341Sdelphij# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) 548296341Sdelphij# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) 549296341Sdelphij# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) 550296341Sdelphij# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) 55155714Skris 552167615Ssimonint EVP_Cipher(EVP_CIPHER_CTX *c, 553296341Sdelphij unsigned char *out, const unsigned char *in, unsigned int inl); 55455714Skris 555296341Sdelphij# define EVP_add_cipher_alias(n,alias) \ 556296341Sdelphij OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) 557296341Sdelphij# define EVP_add_digest_alias(n,alias) \ 558296341Sdelphij OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) 559296341Sdelphij# define EVP_delete_cipher_alias(alias) \ 560296341Sdelphij OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); 561296341Sdelphij# define EVP_delete_digest_alias(alias) \ 562296341Sdelphij OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); 56355714Skris 564296341Sdelphijvoid EVP_MD_CTX_init(EVP_MD_CTX *ctx); 565296341Sdelphijint EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); 566110007SmarkmEVP_MD_CTX *EVP_MD_CTX_create(void); 567296341Sdelphijvoid EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); 568296341Sdelphijint EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); 569296341Sdelphijvoid EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); 570296341Sdelphijvoid EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); 571296341Sdelphijint EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); 572296341Sdelphijint EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); 573296341Sdelphijint EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); 574296341Sdelphijint EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); 575296341Sdelphijint EVP_Digest(const void *data, size_t count, 576296341Sdelphij unsigned char *md, unsigned int *size, const EVP_MD *type, 577296341Sdelphij ENGINE *impl); 57855714Skris 579296341Sdelphijint EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); 580296341Sdelphijint EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); 581296341Sdelphijint EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); 582110007Smarkm 583296341Sdelphijint EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); 584296341Sdelphijint EVP_read_pw_string_min(char *buf, int minlen, int maxlen, 585296341Sdelphij const char *prompt, int verify); 586296341Sdelphijvoid EVP_set_pw_prompt(const char *prompt); 587296341Sdelphijchar *EVP_get_pw_prompt(void); 58855714Skris 589296341Sdelphijint EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, 590296341Sdelphij const unsigned char *salt, const unsigned char *data, 591296341Sdelphij int datal, int count, unsigned char *key, 592296341Sdelphij unsigned char *iv); 59355714Skris 594296341Sdelphijvoid EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); 595296341Sdelphijvoid EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); 596296341Sdelphijint EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); 597194206Ssimon 598296341Sdelphijint EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 599296341Sdelphij const unsigned char *key, const unsigned char *iv); 600296341Sdelphijint EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 601296341Sdelphij ENGINE *impl, const unsigned char *key, 602296341Sdelphij const unsigned char *iv); 603296341Sdelphijint EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, 604296341Sdelphij const unsigned char *in, int inl); 605296341Sdelphijint EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 606296341Sdelphijint EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 60755714Skris 608296341Sdelphijint EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 609296341Sdelphij const unsigned char *key, const unsigned char *iv); 610296341Sdelphijint EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 611296341Sdelphij ENGINE *impl, const unsigned char *key, 612296341Sdelphij const unsigned char *iv); 613296341Sdelphijint EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, 614296341Sdelphij const unsigned char *in, int inl); 615296341Sdelphijint EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); 616296341Sdelphijint EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); 61755714Skris 618296341Sdelphijint EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 619296341Sdelphij const unsigned char *key, const unsigned char *iv, 620296341Sdelphij int enc); 621296341Sdelphijint EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 622296341Sdelphij ENGINE *impl, const unsigned char *key, 623296341Sdelphij const unsigned char *iv, int enc); 624296341Sdelphijint EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, 625296341Sdelphij const unsigned char *in, int inl); 626296341Sdelphijint EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); 627296341Sdelphijint EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); 62855714Skris 629296341Sdelphijint EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, 630296341Sdelphij EVP_PKEY *pkey); 63155714Skris 632296341Sdelphijint EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, 633296341Sdelphij unsigned int siglen, EVP_PKEY *pkey); 63455714Skris 635296341Sdelphijint EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 636296341Sdelphij const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); 637296341Sdelphijint EVP_DigestSignFinal(EVP_MD_CTX *ctx, 638296341Sdelphij unsigned char *sigret, size_t *siglen); 639238405Sjkim 640296341Sdelphijint EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 641296341Sdelphij const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); 642296341Sdelphijint EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t siglen); 643238405Sjkim 644296341Sdelphijint EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 645296341Sdelphij const unsigned char *ek, int ekl, const unsigned char *iv, 646296341Sdelphij EVP_PKEY *priv); 647296341Sdelphijint EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 64855714Skris 649296341Sdelphijint EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 650296341Sdelphij unsigned char **ek, int *ekl, unsigned char *iv, 651296341Sdelphij EVP_PKEY **pubk, int npubk); 652296341Sdelphijint EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 65355714Skris 654296341Sdelphijvoid EVP_EncodeInit(EVP_ENCODE_CTX *ctx); 655296341Sdelphijvoid EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 656296341Sdelphij const unsigned char *in, int inl); 657296341Sdelphijvoid EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); 658296341Sdelphijint EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); 65955714Skris 660296341Sdelphijvoid EVP_DecodeInit(EVP_ENCODE_CTX *ctx); 661296341Sdelphijint EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 662296341Sdelphij const unsigned char *in, int inl); 663296341Sdelphijint EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned 664296341Sdelphij char *out, int *outl); 665296341Sdelphijint EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); 66655714Skris 66755714Skrisvoid EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); 66868654Skrisint EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); 669160817SsimonEVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); 670160817Ssimonvoid EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); 67168654Skrisint EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); 672110007Smarkmint EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); 67368654Skrisint EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); 674160817Ssimonint EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); 67555714Skris 676296341Sdelphij# ifndef OPENSSL_NO_BIO 67755714SkrisBIO_METHOD *BIO_f_md(void); 67855714SkrisBIO_METHOD *BIO_f_base64(void); 67955714SkrisBIO_METHOD *BIO_f_cipher(void); 68055714SkrisBIO_METHOD *BIO_f_reliable(void); 681296341Sdelphijvoid BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, 682296341Sdelphij const unsigned char *i, int enc); 683296341Sdelphij# endif 68455714Skris 685110007Smarkmconst EVP_MD *EVP_md_null(void); 686296341Sdelphij# ifndef OPENSSL_NO_MD2 687110007Smarkmconst EVP_MD *EVP_md2(void); 688296341Sdelphij# endif 689296341Sdelphij# ifndef OPENSSL_NO_MD4 690110007Smarkmconst EVP_MD *EVP_md4(void); 691296341Sdelphij# endif 692296341Sdelphij# ifndef OPENSSL_NO_MD5 693110007Smarkmconst EVP_MD *EVP_md5(void); 694296341Sdelphij# endif 695296341Sdelphij# ifndef OPENSSL_NO_SHA 696110007Smarkmconst EVP_MD *EVP_sha(void); 697110007Smarkmconst EVP_MD *EVP_sha1(void); 698110007Smarkmconst EVP_MD *EVP_dss(void); 699110007Smarkmconst EVP_MD *EVP_dss1(void); 700160817Ssimonconst EVP_MD *EVP_ecdsa(void); 701296341Sdelphij# endif 702296341Sdelphij# ifndef OPENSSL_NO_SHA256 703160817Ssimonconst EVP_MD *EVP_sha224(void); 704160817Ssimonconst EVP_MD *EVP_sha256(void); 705296341Sdelphij# endif 706296341Sdelphij# ifndef OPENSSL_NO_SHA512 707160817Ssimonconst EVP_MD *EVP_sha384(void); 708160817Ssimonconst EVP_MD *EVP_sha512(void); 709296341Sdelphij# endif 710296341Sdelphij# ifndef OPENSSL_NO_MDC2 711110007Smarkmconst EVP_MD *EVP_mdc2(void); 712296341Sdelphij# endif 713296341Sdelphij# ifndef OPENSSL_NO_RIPEMD 714110007Smarkmconst EVP_MD *EVP_ripemd160(void); 715296341Sdelphij# endif 716296341Sdelphij# ifndef OPENSSL_NO_WHIRLPOOL 717238405Sjkimconst EVP_MD *EVP_whirlpool(void); 718296341Sdelphij# endif 719296341Sdelphijconst EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ 720296341Sdelphij# ifndef OPENSSL_NO_DES 721110007Smarkmconst EVP_CIPHER *EVP_des_ecb(void); 722110007Smarkmconst EVP_CIPHER *EVP_des_ede(void); 723110007Smarkmconst EVP_CIPHER *EVP_des_ede3(void); 724110007Smarkmconst EVP_CIPHER *EVP_des_ede_ecb(void); 725110007Smarkmconst EVP_CIPHER *EVP_des_ede3_ecb(void); 726142428Snectarconst EVP_CIPHER *EVP_des_cfb64(void); 727296341Sdelphij# define EVP_des_cfb EVP_des_cfb64 728142428Snectarconst EVP_CIPHER *EVP_des_cfb1(void); 729142428Snectarconst EVP_CIPHER *EVP_des_cfb8(void); 730142428Snectarconst EVP_CIPHER *EVP_des_ede_cfb64(void); 731296341Sdelphij# define EVP_des_ede_cfb EVP_des_ede_cfb64 732296341Sdelphij# if 0 733142428Snectarconst EVP_CIPHER *EVP_des_ede_cfb1(void); 734142428Snectarconst EVP_CIPHER *EVP_des_ede_cfb8(void); 735296341Sdelphij# endif 736142428Snectarconst EVP_CIPHER *EVP_des_ede3_cfb64(void); 737296341Sdelphij# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 738142428Snectarconst EVP_CIPHER *EVP_des_ede3_cfb1(void); 739142428Snectarconst EVP_CIPHER *EVP_des_ede3_cfb8(void); 740110007Smarkmconst EVP_CIPHER *EVP_des_ofb(void); 741110007Smarkmconst EVP_CIPHER *EVP_des_ede_ofb(void); 742110007Smarkmconst EVP_CIPHER *EVP_des_ede3_ofb(void); 743110007Smarkmconst EVP_CIPHER *EVP_des_cbc(void); 744110007Smarkmconst EVP_CIPHER *EVP_des_ede_cbc(void); 745110007Smarkmconst EVP_CIPHER *EVP_des_ede3_cbc(void); 746110007Smarkmconst EVP_CIPHER *EVP_desx_cbc(void); 747296341Sdelphij/* 748296341Sdelphij * This should now be supported through the dev_crypto ENGINE. But also, why 749296341Sdelphij * are rc4 and md5 declarations made here inside a "NO_DES" precompiler 750296341Sdelphij * branch? 751296341Sdelphij */ 752296341Sdelphij# if 0 753296341Sdelphij# ifdef OPENSSL_OPENBSD_DEV_CRYPTO 754110007Smarkmconst EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); 755110007Smarkmconst EVP_CIPHER *EVP_dev_crypto_rc4(void); 756110007Smarkmconst EVP_MD *EVP_dev_crypto_md5(void); 757296341Sdelphij# endif 758296341Sdelphij# endif 759110007Smarkm# endif 760296341Sdelphij# ifndef OPENSSL_NO_RC4 761110007Smarkmconst EVP_CIPHER *EVP_rc4(void); 762110007Smarkmconst EVP_CIPHER *EVP_rc4_40(void); 763296341Sdelphij# ifndef OPENSSL_NO_MD5 764238405Sjkimconst EVP_CIPHER *EVP_rc4_hmac_md5(void); 765296341Sdelphij# endif 766296341Sdelphij# endif 767296341Sdelphij# ifndef OPENSSL_NO_IDEA 768110007Smarkmconst EVP_CIPHER *EVP_idea_ecb(void); 769142428Snectarconst EVP_CIPHER *EVP_idea_cfb64(void); 770296341Sdelphij# define EVP_idea_cfb EVP_idea_cfb64 771110007Smarkmconst EVP_CIPHER *EVP_idea_ofb(void); 772110007Smarkmconst EVP_CIPHER *EVP_idea_cbc(void); 773296341Sdelphij# endif 774296341Sdelphij# ifndef OPENSSL_NO_RC2 775110007Smarkmconst EVP_CIPHER *EVP_rc2_ecb(void); 776110007Smarkmconst EVP_CIPHER *EVP_rc2_cbc(void); 777110007Smarkmconst EVP_CIPHER *EVP_rc2_40_cbc(void); 778110007Smarkmconst EVP_CIPHER *EVP_rc2_64_cbc(void); 779142428Snectarconst EVP_CIPHER *EVP_rc2_cfb64(void); 780296341Sdelphij# define EVP_rc2_cfb EVP_rc2_cfb64 781110007Smarkmconst EVP_CIPHER *EVP_rc2_ofb(void); 782296341Sdelphij# endif 783296341Sdelphij# ifndef OPENSSL_NO_BF 784110007Smarkmconst EVP_CIPHER *EVP_bf_ecb(void); 785110007Smarkmconst EVP_CIPHER *EVP_bf_cbc(void); 786142428Snectarconst EVP_CIPHER *EVP_bf_cfb64(void); 787296341Sdelphij# define EVP_bf_cfb EVP_bf_cfb64 788110007Smarkmconst EVP_CIPHER *EVP_bf_ofb(void); 789296341Sdelphij# endif 790296341Sdelphij# ifndef OPENSSL_NO_CAST 791110007Smarkmconst EVP_CIPHER *EVP_cast5_ecb(void); 792110007Smarkmconst EVP_CIPHER *EVP_cast5_cbc(void); 793142428Snectarconst EVP_CIPHER *EVP_cast5_cfb64(void); 794296341Sdelphij# define EVP_cast5_cfb EVP_cast5_cfb64 795110007Smarkmconst EVP_CIPHER *EVP_cast5_ofb(void); 796296341Sdelphij# endif 797296341Sdelphij# ifndef OPENSSL_NO_RC5 798110007Smarkmconst EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); 799110007Smarkmconst EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); 800142428Snectarconst EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); 801296341Sdelphij# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 802110007Smarkmconst EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); 803296341Sdelphij# endif 804296341Sdelphij# ifndef OPENSSL_NO_AES 805110007Smarkmconst EVP_CIPHER *EVP_aes_128_ecb(void); 806110007Smarkmconst EVP_CIPHER *EVP_aes_128_cbc(void); 807142428Snectarconst EVP_CIPHER *EVP_aes_128_cfb1(void); 808142428Snectarconst EVP_CIPHER *EVP_aes_128_cfb8(void); 809142428Snectarconst EVP_CIPHER *EVP_aes_128_cfb128(void); 810296341Sdelphij# define EVP_aes_128_cfb EVP_aes_128_cfb128 811110007Smarkmconst EVP_CIPHER *EVP_aes_128_ofb(void); 812110007Smarkmconst EVP_CIPHER *EVP_aes_128_ctr(void); 813246772Sjkimconst EVP_CIPHER *EVP_aes_128_ccm(void); 814238405Sjkimconst EVP_CIPHER *EVP_aes_128_gcm(void); 815238405Sjkimconst EVP_CIPHER *EVP_aes_128_xts(void); 816110007Smarkmconst EVP_CIPHER *EVP_aes_192_ecb(void); 817110007Smarkmconst EVP_CIPHER *EVP_aes_192_cbc(void); 818142428Snectarconst EVP_CIPHER *EVP_aes_192_cfb1(void); 819142428Snectarconst EVP_CIPHER *EVP_aes_192_cfb8(void); 820142428Snectarconst EVP_CIPHER *EVP_aes_192_cfb128(void); 821296341Sdelphij# define EVP_aes_192_cfb EVP_aes_192_cfb128 822110007Smarkmconst EVP_CIPHER *EVP_aes_192_ofb(void); 823110007Smarkmconst EVP_CIPHER *EVP_aes_192_ctr(void); 824246772Sjkimconst EVP_CIPHER *EVP_aes_192_ccm(void); 825238405Sjkimconst EVP_CIPHER *EVP_aes_192_gcm(void); 826110007Smarkmconst EVP_CIPHER *EVP_aes_256_ecb(void); 827110007Smarkmconst EVP_CIPHER *EVP_aes_256_cbc(void); 828142428Snectarconst EVP_CIPHER *EVP_aes_256_cfb1(void); 829142428Snectarconst EVP_CIPHER *EVP_aes_256_cfb8(void); 830142428Snectarconst EVP_CIPHER *EVP_aes_256_cfb128(void); 831296341Sdelphij# define EVP_aes_256_cfb EVP_aes_256_cfb128 832110007Smarkmconst EVP_CIPHER *EVP_aes_256_ofb(void); 833110007Smarkmconst EVP_CIPHER *EVP_aes_256_ctr(void); 834246772Sjkimconst EVP_CIPHER *EVP_aes_256_ccm(void); 835238405Sjkimconst EVP_CIPHER *EVP_aes_256_gcm(void); 836238405Sjkimconst EVP_CIPHER *EVP_aes_256_xts(void); 837296341Sdelphij# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) 838238405Sjkimconst EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); 839238405Sjkimconst EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); 840296341Sdelphij# endif 841296341Sdelphij# endif 842296341Sdelphij# ifndef OPENSSL_NO_CAMELLIA 843162914Ssimonconst EVP_CIPHER *EVP_camellia_128_ecb(void); 844162914Ssimonconst EVP_CIPHER *EVP_camellia_128_cbc(void); 845162914Ssimonconst EVP_CIPHER *EVP_camellia_128_cfb1(void); 846162914Ssimonconst EVP_CIPHER *EVP_camellia_128_cfb8(void); 847162914Ssimonconst EVP_CIPHER *EVP_camellia_128_cfb128(void); 848296341Sdelphij# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 849162914Ssimonconst EVP_CIPHER *EVP_camellia_128_ofb(void); 850162914Ssimonconst EVP_CIPHER *EVP_camellia_192_ecb(void); 851162914Ssimonconst EVP_CIPHER *EVP_camellia_192_cbc(void); 852162914Ssimonconst EVP_CIPHER *EVP_camellia_192_cfb1(void); 853162914Ssimonconst EVP_CIPHER *EVP_camellia_192_cfb8(void); 854162914Ssimonconst EVP_CIPHER *EVP_camellia_192_cfb128(void); 855296341Sdelphij# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 856162914Ssimonconst EVP_CIPHER *EVP_camellia_192_ofb(void); 857162914Ssimonconst EVP_CIPHER *EVP_camellia_256_ecb(void); 858162914Ssimonconst EVP_CIPHER *EVP_camellia_256_cbc(void); 859162914Ssimonconst EVP_CIPHER *EVP_camellia_256_cfb1(void); 860162914Ssimonconst EVP_CIPHER *EVP_camellia_256_cfb8(void); 861162914Ssimonconst EVP_CIPHER *EVP_camellia_256_cfb128(void); 862296341Sdelphij# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 863162914Ssimonconst EVP_CIPHER *EVP_camellia_256_ofb(void); 864296341Sdelphij# endif 865110007Smarkm 866296341Sdelphij# ifndef OPENSSL_NO_SEED 867194206Ssimonconst EVP_CIPHER *EVP_seed_ecb(void); 868194206Ssimonconst EVP_CIPHER *EVP_seed_cbc(void); 869194206Ssimonconst EVP_CIPHER *EVP_seed_cfb128(void); 870296341Sdelphij# define EVP_seed_cfb EVP_seed_cfb128 871194206Ssimonconst EVP_CIPHER *EVP_seed_ofb(void); 872296341Sdelphij# endif 873194206Ssimon 874110007Smarkmvoid OPENSSL_add_all_algorithms_noconf(void); 875110007Smarkmvoid OPENSSL_add_all_algorithms_conf(void); 876110007Smarkm 877296341Sdelphij# ifdef OPENSSL_LOAD_CONF 878296341Sdelphij# define OpenSSL_add_all_algorithms() \ 879296341Sdelphij OPENSSL_add_all_algorithms_conf() 880296341Sdelphij# else 881296341Sdelphij# define OpenSSL_add_all_algorithms() \ 882296341Sdelphij OPENSSL_add_all_algorithms_noconf() 883296341Sdelphij# endif 884110007Smarkm 88559194Skrisvoid OpenSSL_add_all_ciphers(void); 88659194Skrisvoid OpenSSL_add_all_digests(void); 887296341Sdelphij# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() 888296341Sdelphij# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() 889296341Sdelphij# define SSLeay_add_all_digests() OpenSSL_add_all_digests() 89055714Skris 891110007Smarkmint EVP_add_cipher(const EVP_CIPHER *cipher); 892110007Smarkmint EVP_add_digest(const EVP_MD *digest); 89355714Skris 89455714Skrisconst EVP_CIPHER *EVP_get_cipherbyname(const char *name); 89555714Skrisconst EVP_MD *EVP_get_digestbyname(const char *name); 89655714Skrisvoid EVP_cleanup(void); 89755714Skris 898296341Sdelphijvoid EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, 899296341Sdelphij const char *from, const char *to, void *x), 900296341Sdelphij void *arg); 901296341Sdelphijvoid EVP_CIPHER_do_all_sorted(void (*fn) 902296341Sdelphij (const EVP_CIPHER *ciph, const char *from, 903296341Sdelphij const char *to, void *x), void *arg); 904238405Sjkim 905296341Sdelphijvoid EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, 906296341Sdelphij const char *from, const char *to, void *x), 907296341Sdelphij void *arg); 908296341Sdelphijvoid EVP_MD_do_all_sorted(void (*fn) 909296341Sdelphij (const EVP_MD *ciph, const char *from, 910296341Sdelphij const char *to, void *x), void *arg); 911238405Sjkim 912296341Sdelphijint EVP_PKEY_decrypt_old(unsigned char *dec_key, 913296341Sdelphij const unsigned char *enc_key, int enc_key_len, 914296341Sdelphij EVP_PKEY *private_key); 915296341Sdelphijint EVP_PKEY_encrypt_old(unsigned char *enc_key, 916296341Sdelphij const unsigned char *key, int key_len, 917296341Sdelphij EVP_PKEY *pub_key); 918296341Sdelphijint EVP_PKEY_type(int type); 919296341Sdelphijint EVP_PKEY_id(const EVP_PKEY *pkey); 920296341Sdelphijint EVP_PKEY_base_id(const EVP_PKEY *pkey); 921296341Sdelphijint EVP_PKEY_bits(EVP_PKEY *pkey); 922296341Sdelphijint EVP_PKEY_size(EVP_PKEY *pkey); 923296341Sdelphijint EVP_PKEY_set_type(EVP_PKEY *pkey, int type); 924296341Sdelphijint EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); 925296341Sdelphijint EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); 926296341Sdelphijvoid *EVP_PKEY_get0(EVP_PKEY *pkey); 927110007Smarkm 928296341Sdelphij# ifndef OPENSSL_NO_RSA 929110007Smarkmstruct rsa_st; 930296341Sdelphijint EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); 931110007Smarkmstruct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); 932296341Sdelphij# endif 933296341Sdelphij# ifndef OPENSSL_NO_DSA 934110007Smarkmstruct dsa_st; 935296341Sdelphijint EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); 936110007Smarkmstruct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); 937296341Sdelphij# endif 938296341Sdelphij# ifndef OPENSSL_NO_DH 939110007Smarkmstruct dh_st; 940296341Sdelphijint EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); 941110007Smarkmstruct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); 942296341Sdelphij# endif 943296341Sdelphij# ifndef OPENSSL_NO_EC 944160817Ssimonstruct ec_key_st; 945296341Sdelphijint EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); 946160817Ssimonstruct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); 947296341Sdelphij# endif 948110007Smarkm 949296341SdelphijEVP_PKEY *EVP_PKEY_new(void); 950296341Sdelphijvoid EVP_PKEY_free(EVP_PKEY *pkey); 951160817Ssimon 952296341SdelphijEVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, 953296341Sdelphij long length); 954296341Sdelphijint i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); 95555714Skris 956296341SdelphijEVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, 957296341Sdelphij long length); 958296341SdelphijEVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, 959296341Sdelphij long length); 960296341Sdelphijint i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); 96155714Skris 962160817Ssimonint EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); 963160817Ssimonint EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); 964296341Sdelphijint EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); 965160817Ssimonint EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); 96655714Skris 967160817Ssimonint EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); 968160817Ssimon 969238405Sjkimint EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, 970296341Sdelphij int indent, ASN1_PCTX *pctx); 971238405Sjkimint EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, 972296341Sdelphij int indent, ASN1_PCTX *pctx); 973238405Sjkimint EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, 974296341Sdelphij int indent, ASN1_PCTX *pctx); 975238405Sjkim 976238405Sjkimint EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); 977238405Sjkim 97855714Skrisint EVP_CIPHER_type(const EVP_CIPHER *ctx); 97955714Skris 98055714Skris/* calls methods */ 98155714Skrisint EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 98255714Skrisint EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 98355714Skris 98455714Skris/* These are used by EVP_CIPHER methods */ 985296341Sdelphijint EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 986296341Sdelphijint EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 98755714Skris 98855714Skris/* PKCS5 password based encryption */ 98955714Skrisint PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 990296341Sdelphij ASN1_TYPE *param, const EVP_CIPHER *cipher, 991296341Sdelphij const EVP_MD *md, int en_de); 99255714Skrisint PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, 993296341Sdelphij const unsigned char *salt, int saltlen, int iter, 994296341Sdelphij int keylen, unsigned char *out); 995238405Sjkimint PKCS5_PBKDF2_HMAC(const char *pass, int passlen, 996296341Sdelphij const unsigned char *salt, int saltlen, int iter, 997296341Sdelphij const EVP_MD *digest, int keylen, unsigned char *out); 99855714Skrisint PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 999296341Sdelphij ASN1_TYPE *param, const EVP_CIPHER *cipher, 1000296341Sdelphij const EVP_MD *md, int en_de); 100155714Skris 100255714Skrisvoid PKCS5_PBE_add(void); 100355714Skris 1004296341Sdelphijint EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 1005296341Sdelphij ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); 1006238405Sjkim 1007238405Sjkim/* PBE type */ 1008238405Sjkim 1009238405Sjkim/* Can appear as the outermost AlgorithmIdentifier */ 1010296341Sdelphij# define EVP_PBE_TYPE_OUTER 0x0 1011238405Sjkim/* Is an PRF type OID */ 1012296341Sdelphij# define EVP_PBE_TYPE_PRF 0x1 1013238405Sjkim 1014296341Sdelphijint EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, 1015296341Sdelphij int md_nid, EVP_PBE_KEYGEN *keygen); 1016110007Smarkmint EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, 1017296341Sdelphij EVP_PBE_KEYGEN *keygen); 1018296341Sdelphijint EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, 1019296341Sdelphij EVP_PBE_KEYGEN **pkeygen); 102055714Skrisvoid EVP_PBE_cleanup(void); 102155714Skris 1022296341Sdelphij# define ASN1_PKEY_ALIAS 0x1 1023296341Sdelphij# define ASN1_PKEY_DYNAMIC 0x2 1024296341Sdelphij# define ASN1_PKEY_SIGPARAM_NULL 0x4 1025194206Ssimon 1026296341Sdelphij# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 1027296341Sdelphij# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 1028296341Sdelphij# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 1029296341Sdelphij# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 1030296341Sdelphij# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 1031194206Ssimon 1032238405Sjkimint EVP_PKEY_asn1_get_count(void); 1033238405Sjkimconst EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); 1034238405Sjkimconst EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); 1035238405Sjkimconst EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, 1036296341Sdelphij const char *str, int len); 1037238405Sjkimint EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); 1038238405Sjkimint EVP_PKEY_asn1_add_alias(int to, int from); 1039296341Sdelphijint EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, 1040296341Sdelphij int *ppkey_flags, const char **pinfo, 1041296341Sdelphij const char **ppem_str, 1042296341Sdelphij const EVP_PKEY_ASN1_METHOD *ameth); 1043238405Sjkim 1044296341Sdelphijconst EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); 1045296341SdelphijEVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, 1046296341Sdelphij const char *pem_str, 1047296341Sdelphij const char *info); 1048296341Sdelphijvoid EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, 1049296341Sdelphij const EVP_PKEY_ASN1_METHOD *src); 1050238405Sjkimvoid EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); 1051238405Sjkimvoid EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, 1052296341Sdelphij int (*pub_decode) (EVP_PKEY *pk, 1053296341Sdelphij X509_PUBKEY *pub), 1054296341Sdelphij int (*pub_encode) (X509_PUBKEY *pub, 1055296341Sdelphij const EVP_PKEY *pk), 1056296341Sdelphij int (*pub_cmp) (const EVP_PKEY *a, 1057296341Sdelphij const EVP_PKEY *b), 1058296341Sdelphij int (*pub_print) (BIO *out, 1059296341Sdelphij const EVP_PKEY *pkey, 1060296341Sdelphij int indent, ASN1_PCTX *pctx), 1061296341Sdelphij int (*pkey_size) (const EVP_PKEY *pk), 1062296341Sdelphij int (*pkey_bits) (const EVP_PKEY *pk)); 1063238405Sjkimvoid EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, 1064296341Sdelphij int (*priv_decode) (EVP_PKEY *pk, 1065296341Sdelphij PKCS8_PRIV_KEY_INFO 1066296341Sdelphij *p8inf), 1067296341Sdelphij int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, 1068296341Sdelphij const EVP_PKEY *pk), 1069296341Sdelphij int (*priv_print) (BIO *out, 1070296341Sdelphij const EVP_PKEY *pkey, 1071296341Sdelphij int indent, 1072296341Sdelphij ASN1_PCTX *pctx)); 1073238405Sjkimvoid EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, 1074296341Sdelphij int (*param_decode) (EVP_PKEY *pkey, 1075296341Sdelphij const unsigned char **pder, 1076296341Sdelphij int derlen), 1077296341Sdelphij int (*param_encode) (const EVP_PKEY *pkey, 1078296341Sdelphij unsigned char **pder), 1079296341Sdelphij int (*param_missing) (const EVP_PKEY *pk), 1080296341Sdelphij int (*param_copy) (EVP_PKEY *to, 1081296341Sdelphij const EVP_PKEY *from), 1082296341Sdelphij int (*param_cmp) (const EVP_PKEY *a, 1083296341Sdelphij const EVP_PKEY *b), 1084296341Sdelphij int (*param_print) (BIO *out, 1085296341Sdelphij const EVP_PKEY *pkey, 1086296341Sdelphij int indent, 1087296341Sdelphij ASN1_PCTX *pctx)); 1088238405Sjkim 1089238405Sjkimvoid EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, 1090296341Sdelphij void (*pkey_free) (EVP_PKEY *pkey)); 1091238405Sjkimvoid EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, 1092296341Sdelphij int (*pkey_ctrl) (EVP_PKEY *pkey, int op, 1093296341Sdelphij long arg1, void *arg2)); 1094238405Sjkim 1095296341Sdelphij# define EVP_PKEY_OP_UNDEFINED 0 1096296341Sdelphij# define EVP_PKEY_OP_PARAMGEN (1<<1) 1097296341Sdelphij# define EVP_PKEY_OP_KEYGEN (1<<2) 1098296341Sdelphij# define EVP_PKEY_OP_SIGN (1<<3) 1099296341Sdelphij# define EVP_PKEY_OP_VERIFY (1<<4) 1100296341Sdelphij# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) 1101296341Sdelphij# define EVP_PKEY_OP_SIGNCTX (1<<6) 1102296341Sdelphij# define EVP_PKEY_OP_VERIFYCTX (1<<7) 1103296341Sdelphij# define EVP_PKEY_OP_ENCRYPT (1<<8) 1104296341Sdelphij# define EVP_PKEY_OP_DECRYPT (1<<9) 1105296341Sdelphij# define EVP_PKEY_OP_DERIVE (1<<10) 1106238405Sjkim 1107296341Sdelphij# define EVP_PKEY_OP_TYPE_SIG \ 1108296341Sdelphij (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ 1109296341Sdelphij | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) 1110238405Sjkim 1111296341Sdelphij# define EVP_PKEY_OP_TYPE_CRYPT \ 1112296341Sdelphij (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) 1113238405Sjkim 1114296341Sdelphij# define EVP_PKEY_OP_TYPE_NOGEN \ 1115296341Sdelphij (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) 1116238405Sjkim 1117296341Sdelphij# define EVP_PKEY_OP_TYPE_GEN \ 1118296341Sdelphij (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) 1119238405Sjkim 1120296341Sdelphij# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ 1121296341Sdelphij EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ 1122296341Sdelphij EVP_PKEY_CTRL_MD, 0, (void *)md) 1123238405Sjkim 1124296341Sdelphij# define EVP_PKEY_CTRL_MD 1 1125296341Sdelphij# define EVP_PKEY_CTRL_PEER_KEY 2 1126238405Sjkim 1127296341Sdelphij# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 1128296341Sdelphij# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 1129238405Sjkim 1130296341Sdelphij# define EVP_PKEY_CTRL_PKCS7_SIGN 5 1131238405Sjkim 1132296341Sdelphij# define EVP_PKEY_CTRL_SET_MAC_KEY 6 1133238405Sjkim 1134296341Sdelphij# define EVP_PKEY_CTRL_DIGESTINIT 7 1135238405Sjkim 1136238405Sjkim/* Used by GOST key encryption in TLS */ 1137296341Sdelphij# define EVP_PKEY_CTRL_SET_IV 8 1138238405Sjkim 1139296341Sdelphij# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 1140296341Sdelphij# define EVP_PKEY_CTRL_CMS_DECRYPT 10 1141296341Sdelphij# define EVP_PKEY_CTRL_CMS_SIGN 11 1142238405Sjkim 1143296341Sdelphij# define EVP_PKEY_CTRL_CIPHER 12 1144238405Sjkim 1145296341Sdelphij# define EVP_PKEY_ALG_CTRL 0x1000 1146238405Sjkim 1147296341Sdelphij# define EVP_PKEY_FLAG_AUTOARGLEN 2 1148296341Sdelphij/* 1149296341Sdelphij * Method handles all operations: don't assume any digest related defaults. 1150238405Sjkim */ 1151296341Sdelphij# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 1152238405Sjkim 1153238405Sjkimconst EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); 1154296341SdelphijEVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); 1155238405Sjkimvoid EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, 1156296341Sdelphij const EVP_PKEY_METHOD *meth); 1157238405Sjkimvoid EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); 1158238405Sjkimvoid EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); 1159238405Sjkimint EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); 1160238405Sjkim 1161238405SjkimEVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); 1162238405SjkimEVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); 1163238405SjkimEVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); 1164238405Sjkimvoid EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); 1165238405Sjkim 1166238405Sjkimint EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, 1167296341Sdelphij int cmd, int p1, void *p2); 1168238405Sjkimint EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, 1169296341Sdelphij const char *value); 1170238405Sjkim 1171238405Sjkimint EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); 1172238405Sjkimvoid EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); 1173238405Sjkim 1174238405SjkimEVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, 1175296341Sdelphij const unsigned char *key, int keylen); 1176238405Sjkim 1177238405Sjkimvoid EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); 1178238405Sjkimvoid *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); 1179238405SjkimEVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); 1180238405Sjkim 1181238405SjkimEVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); 1182238405Sjkim 1183238405Sjkimvoid EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); 1184238405Sjkimvoid *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); 1185238405Sjkim 1186238405Sjkimint EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); 1187238405Sjkimint EVP_PKEY_sign(EVP_PKEY_CTX *ctx, 1188296341Sdelphij unsigned char *sig, size_t *siglen, 1189296341Sdelphij const unsigned char *tbs, size_t tbslen); 1190238405Sjkimint EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); 1191238405Sjkimint EVP_PKEY_verify(EVP_PKEY_CTX *ctx, 1192296341Sdelphij const unsigned char *sig, size_t siglen, 1193296341Sdelphij const unsigned char *tbs, size_t tbslen); 1194238405Sjkimint EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); 1195238405Sjkimint EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, 1196296341Sdelphij unsigned char *rout, size_t *routlen, 1197296341Sdelphij const unsigned char *sig, size_t siglen); 1198238405Sjkimint EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); 1199238405Sjkimint EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, 1200296341Sdelphij unsigned char *out, size_t *outlen, 1201296341Sdelphij const unsigned char *in, size_t inlen); 1202238405Sjkimint EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); 1203238405Sjkimint EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, 1204296341Sdelphij unsigned char *out, size_t *outlen, 1205296341Sdelphij const unsigned char *in, size_t inlen); 1206238405Sjkim 1207238405Sjkimint EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); 1208238405Sjkimint EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); 1209238405Sjkimint EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); 1210238405Sjkim 1211296341Sdelphijtypedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); 1212238405Sjkim 1213238405Sjkimint EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); 1214238405Sjkimint EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 1215238405Sjkimint EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); 1216238405Sjkimint EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 1217238405Sjkim 1218238405Sjkimvoid EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); 1219238405SjkimEVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); 1220238405Sjkim 1221238405Sjkimint EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); 1222238405Sjkim 1223238405Sjkimvoid EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, 1224296341Sdelphij int (*init) (EVP_PKEY_CTX *ctx)); 1225238405Sjkim 1226238405Sjkimvoid EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, 1227296341Sdelphij int (*copy) (EVP_PKEY_CTX *dst, 1228296341Sdelphij EVP_PKEY_CTX *src)); 1229238405Sjkim 1230238405Sjkimvoid EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, 1231296341Sdelphij void (*cleanup) (EVP_PKEY_CTX *ctx)); 1232238405Sjkim 1233238405Sjkimvoid EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, 1234296341Sdelphij int (*paramgen_init) (EVP_PKEY_CTX *ctx), 1235296341Sdelphij int (*paramgen) (EVP_PKEY_CTX *ctx, 1236296341Sdelphij EVP_PKEY *pkey)); 1237238405Sjkim 1238238405Sjkimvoid EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, 1239296341Sdelphij int (*keygen_init) (EVP_PKEY_CTX *ctx), 1240296341Sdelphij int (*keygen) (EVP_PKEY_CTX *ctx, 1241296341Sdelphij EVP_PKEY *pkey)); 1242238405Sjkim 1243238405Sjkimvoid EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, 1244296341Sdelphij int (*sign_init) (EVP_PKEY_CTX *ctx), 1245296341Sdelphij int (*sign) (EVP_PKEY_CTX *ctx, 1246296341Sdelphij unsigned char *sig, size_t *siglen, 1247296341Sdelphij const unsigned char *tbs, 1248296341Sdelphij size_t tbslen)); 1249238405Sjkim 1250238405Sjkimvoid EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, 1251296341Sdelphij int (*verify_init) (EVP_PKEY_CTX *ctx), 1252296341Sdelphij int (*verify) (EVP_PKEY_CTX *ctx, 1253296341Sdelphij const unsigned char *sig, 1254296341Sdelphij size_t siglen, 1255296341Sdelphij const unsigned char *tbs, 1256296341Sdelphij size_t tbslen)); 1257238405Sjkim 1258238405Sjkimvoid EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, 1259296341Sdelphij int (*verify_recover_init) (EVP_PKEY_CTX 1260296341Sdelphij *ctx), 1261296341Sdelphij int (*verify_recover) (EVP_PKEY_CTX 1262296341Sdelphij *ctx, 1263296341Sdelphij unsigned char 1264296341Sdelphij *sig, 1265296341Sdelphij size_t *siglen, 1266296341Sdelphij const unsigned 1267296341Sdelphij char *tbs, 1268296341Sdelphij size_t tbslen)); 1269238405Sjkim 1270238405Sjkimvoid EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, 1271296341Sdelphij int (*signctx_init) (EVP_PKEY_CTX *ctx, 1272296341Sdelphij EVP_MD_CTX *mctx), 1273296341Sdelphij int (*signctx) (EVP_PKEY_CTX *ctx, 1274296341Sdelphij unsigned char *sig, 1275296341Sdelphij size_t *siglen, 1276296341Sdelphij EVP_MD_CTX *mctx)); 1277238405Sjkim 1278238405Sjkimvoid EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, 1279296341Sdelphij int (*verifyctx_init) (EVP_PKEY_CTX *ctx, 1280296341Sdelphij EVP_MD_CTX *mctx), 1281296341Sdelphij int (*verifyctx) (EVP_PKEY_CTX *ctx, 1282296341Sdelphij const unsigned char *sig, 1283296341Sdelphij int siglen, 1284296341Sdelphij EVP_MD_CTX *mctx)); 1285238405Sjkim 1286238405Sjkimvoid EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, 1287296341Sdelphij int (*encrypt_init) (EVP_PKEY_CTX *ctx), 1288296341Sdelphij int (*encryptfn) (EVP_PKEY_CTX *ctx, 1289296341Sdelphij unsigned char *out, 1290296341Sdelphij size_t *outlen, 1291296341Sdelphij const unsigned char *in, 1292296341Sdelphij size_t inlen)); 1293238405Sjkim 1294238405Sjkimvoid EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, 1295296341Sdelphij int (*decrypt_init) (EVP_PKEY_CTX *ctx), 1296296341Sdelphij int (*decrypt) (EVP_PKEY_CTX *ctx, 1297296341Sdelphij unsigned char *out, 1298296341Sdelphij size_t *outlen, 1299296341Sdelphij const unsigned char *in, 1300296341Sdelphij size_t inlen)); 1301238405Sjkim 1302238405Sjkimvoid EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, 1303296341Sdelphij int (*derive_init) (EVP_PKEY_CTX *ctx), 1304296341Sdelphij int (*derive) (EVP_PKEY_CTX *ctx, 1305296341Sdelphij unsigned char *key, 1306296341Sdelphij size_t *keylen)); 1307238405Sjkim 1308238405Sjkimvoid EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, 1309296341Sdelphij int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, 1310296341Sdelphij void *p2), 1311296341Sdelphij int (*ctrl_str) (EVP_PKEY_CTX *ctx, 1312296341Sdelphij const char *type, 1313296341Sdelphij const char *value)); 1314238405Sjkim 1315246772Sjkimvoid EVP_add_alg_module(void); 1316246772Sjkim 131755714Skris/* BEGIN ERROR CODES */ 1318296341Sdelphij/* 1319296341Sdelphij * The following lines are auto generated by the script mkerr.pl. Any changes 132055714Skris * made after this point may be overwritten when the script is next run. 132155714Skris */ 132289840Skrisvoid ERR_load_EVP_strings(void); 132355714Skris 132455714Skris/* Error codes for the EVP functions. */ 132555714Skris 132655714Skris/* Function codes. */ 1327296341Sdelphij# define EVP_F_AESNI_INIT_KEY 165 1328296341Sdelphij# define EVP_F_AESNI_XTS_CIPHER 176 1329296341Sdelphij# define EVP_F_AES_INIT_KEY 133 1330296341Sdelphij# define EVP_F_AES_XTS 172 1331296341Sdelphij# define EVP_F_AES_XTS_CIPHER 175 1332296341Sdelphij# define EVP_F_ALG_MODULE_INIT 177 1333296341Sdelphij# define EVP_F_CAMELLIA_INIT_KEY 159 1334296341Sdelphij# define EVP_F_CMAC_INIT 173 1335296341Sdelphij# define EVP_F_D2I_PKEY 100 1336296341Sdelphij# define EVP_F_DO_SIGVER_INIT 161 1337296341Sdelphij# define EVP_F_DSAPKEY2PKCS8 134 1338296341Sdelphij# define EVP_F_DSA_PKEY2PKCS8 135 1339296341Sdelphij# define EVP_F_ECDSA_PKEY2PKCS8 129 1340296341Sdelphij# define EVP_F_ECKEY_PKEY2PKCS8 132 1341296341Sdelphij# define EVP_F_EVP_CIPHERINIT_EX 123 1342296341Sdelphij# define EVP_F_EVP_CIPHER_CTX_COPY 163 1343296341Sdelphij# define EVP_F_EVP_CIPHER_CTX_CTRL 124 1344296341Sdelphij# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 1345296341Sdelphij# define EVP_F_EVP_DECRYPTFINAL_EX 101 1346296341Sdelphij# define EVP_F_EVP_DIGESTINIT_EX 128 1347296341Sdelphij# define EVP_F_EVP_ENCRYPTFINAL_EX 127 1348296341Sdelphij# define EVP_F_EVP_MD_CTX_COPY_EX 110 1349296341Sdelphij# define EVP_F_EVP_MD_SIZE 162 1350296341Sdelphij# define EVP_F_EVP_OPENINIT 102 1351296341Sdelphij# define EVP_F_EVP_PBE_ALG_ADD 115 1352296341Sdelphij# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 1353296341Sdelphij# define EVP_F_EVP_PBE_CIPHERINIT 116 1354296341Sdelphij# define EVP_F_EVP_PKCS82PKEY 111 1355296341Sdelphij# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 1356296341Sdelphij# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 1357296341Sdelphij# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 1358296341Sdelphij# define EVP_F_EVP_PKEY_CTX_CTRL 137 1359296341Sdelphij# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 1360296341Sdelphij# define EVP_F_EVP_PKEY_CTX_DUP 156 1361296341Sdelphij# define EVP_F_EVP_PKEY_DECRYPT 104 1362296341Sdelphij# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 1363296341Sdelphij# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 1364296341Sdelphij# define EVP_F_EVP_PKEY_DERIVE 153 1365296341Sdelphij# define EVP_F_EVP_PKEY_DERIVE_INIT 154 1366296341Sdelphij# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 1367296341Sdelphij# define EVP_F_EVP_PKEY_ENCRYPT 105 1368296341Sdelphij# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 1369296341Sdelphij# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 1370296341Sdelphij# define EVP_F_EVP_PKEY_GET1_DH 119 1371296341Sdelphij# define EVP_F_EVP_PKEY_GET1_DSA 120 1372296341Sdelphij# define EVP_F_EVP_PKEY_GET1_ECDSA 130 1373296341Sdelphij# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 1374296341Sdelphij# define EVP_F_EVP_PKEY_GET1_RSA 121 1375296341Sdelphij# define EVP_F_EVP_PKEY_KEYGEN 146 1376296341Sdelphij# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 1377296341Sdelphij# define EVP_F_EVP_PKEY_NEW 106 1378296341Sdelphij# define EVP_F_EVP_PKEY_PARAMGEN 148 1379296341Sdelphij# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 1380296341Sdelphij# define EVP_F_EVP_PKEY_SIGN 140 1381296341Sdelphij# define EVP_F_EVP_PKEY_SIGN_INIT 141 1382296341Sdelphij# define EVP_F_EVP_PKEY_VERIFY 142 1383296341Sdelphij# define EVP_F_EVP_PKEY_VERIFY_INIT 143 1384296341Sdelphij# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 1385296341Sdelphij# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 1386296341Sdelphij# define EVP_F_EVP_RIJNDAEL 126 1387296341Sdelphij# define EVP_F_EVP_SIGNFINAL 107 1388296341Sdelphij# define EVP_F_EVP_VERIFYFINAL 108 1389296341Sdelphij# define EVP_F_FIPS_CIPHERINIT 166 1390296341Sdelphij# define EVP_F_FIPS_CIPHER_CTX_COPY 170 1391296341Sdelphij# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 1392296341Sdelphij# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 1393296341Sdelphij# define EVP_F_FIPS_DIGESTINIT 168 1394296341Sdelphij# define EVP_F_FIPS_MD_CTX_COPY 169 1395296341Sdelphij# define EVP_F_HMAC_INIT_EX 174 1396296341Sdelphij# define EVP_F_INT_CTX_NEW 157 1397296341Sdelphij# define EVP_F_PKCS5_PBE_KEYIVGEN 117 1398296341Sdelphij# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 1399296341Sdelphij# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 1400296341Sdelphij# define EVP_F_PKCS8_SET_BROKEN 112 1401296341Sdelphij# define EVP_F_PKEY_SET_TYPE 158 1402296341Sdelphij# define EVP_F_RC2_MAGIC_TO_METH 109 1403296341Sdelphij# define EVP_F_RC5_CTRL 125 140455714Skris 140555714Skris/* Reason codes. */ 1406296341Sdelphij# define EVP_R_AES_IV_SETUP_FAILED 162 1407296341Sdelphij# define EVP_R_AES_KEY_SETUP_FAILED 143 1408296341Sdelphij# define EVP_R_ASN1_LIB 140 1409296341Sdelphij# define EVP_R_BAD_BLOCK_LENGTH 136 1410296341Sdelphij# define EVP_R_BAD_DECRYPT 100 1411296341Sdelphij# define EVP_R_BAD_KEY_LENGTH 137 1412296341Sdelphij# define EVP_R_BN_DECODE_ERROR 112 1413296341Sdelphij# define EVP_R_BN_PUBKEY_ERROR 113 1414296341Sdelphij# define EVP_R_BUFFER_TOO_SMALL 155 1415296341Sdelphij# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 1416296341Sdelphij# define EVP_R_CIPHER_PARAMETER_ERROR 122 1417296341Sdelphij# define EVP_R_COMMAND_NOT_SUPPORTED 147 1418296341Sdelphij# define EVP_R_CTRL_NOT_IMPLEMENTED 132 1419296341Sdelphij# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 1420296341Sdelphij# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 1421296341Sdelphij# define EVP_R_DECODE_ERROR 114 1422296341Sdelphij# define EVP_R_DIFFERENT_KEY_TYPES 101 1423296341Sdelphij# define EVP_R_DIFFERENT_PARAMETERS 153 1424296341Sdelphij# define EVP_R_DISABLED_FOR_FIPS 163 1425296341Sdelphij# define EVP_R_ENCODE_ERROR 115 1426296341Sdelphij# define EVP_R_ERROR_LOADING_SECTION 165 1427296341Sdelphij# define EVP_R_ERROR_SETTING_FIPS_MODE 166 1428296341Sdelphij# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 1429296341Sdelphij# define EVP_R_EXPECTING_AN_RSA_KEY 127 1430296341Sdelphij# define EVP_R_EXPECTING_A_DH_KEY 128 1431296341Sdelphij# define EVP_R_EXPECTING_A_DSA_KEY 129 1432296341Sdelphij# define EVP_R_EXPECTING_A_ECDSA_KEY 141 1433296341Sdelphij# define EVP_R_EXPECTING_A_EC_KEY 142 1434296341Sdelphij# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 1435296341Sdelphij# define EVP_R_INITIALIZATION_ERROR 134 1436296341Sdelphij# define EVP_R_INPUT_NOT_INITIALIZED 111 1437296341Sdelphij# define EVP_R_INVALID_DIGEST 152 1438296341Sdelphij# define EVP_R_INVALID_FIPS_MODE 168 1439296341Sdelphij# define EVP_R_INVALID_KEY_LENGTH 130 1440296341Sdelphij# define EVP_R_INVALID_OPERATION 148 1441296341Sdelphij# define EVP_R_IV_TOO_LARGE 102 1442296341Sdelphij# define EVP_R_KEYGEN_FAILURE 120 1443296341Sdelphij# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 1444296341Sdelphij# define EVP_R_METHOD_NOT_SUPPORTED 144 1445296341Sdelphij# define EVP_R_MISSING_PARAMETERS 103 1446296341Sdelphij# define EVP_R_NO_CIPHER_SET 131 1447296341Sdelphij# define EVP_R_NO_DEFAULT_DIGEST 158 1448296341Sdelphij# define EVP_R_NO_DIGEST_SET 139 1449296341Sdelphij# define EVP_R_NO_DSA_PARAMETERS 116 1450296341Sdelphij# define EVP_R_NO_KEY_SET 154 1451296341Sdelphij# define EVP_R_NO_OPERATION_SET 149 1452296341Sdelphij# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 1453296341Sdelphij# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 1454296341Sdelphij# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 1455296341Sdelphij# define EVP_R_OPERATON_NOT_INITIALIZED 151 1456296341Sdelphij# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 1457296341Sdelphij# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 1458296341Sdelphij# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 1459296341Sdelphij# define EVP_R_PUBLIC_KEY_NOT_RSA 106 1460296341Sdelphij# define EVP_R_TOO_LARGE 164 1461296341Sdelphij# define EVP_R_UNKNOWN_CIPHER 160 1462296341Sdelphij# define EVP_R_UNKNOWN_DIGEST 161 1463296341Sdelphij# define EVP_R_UNKNOWN_OPTION 169 1464296341Sdelphij# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 1465296341Sdelphij# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 1466296341Sdelphij# define EVP_R_UNSUPPORTED_ALGORITHM 156 1467296341Sdelphij# define EVP_R_UNSUPPORTED_CIPHER 107 1468296341Sdelphij# define EVP_R_UNSUPPORTED_KEYLENGTH 123 1469296341Sdelphij# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 1470296341Sdelphij# define EVP_R_UNSUPPORTED_KEY_SIZE 108 1471296341Sdelphij# define EVP_R_UNSUPPORTED_PRF 125 1472296341Sdelphij# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 1473296341Sdelphij# define EVP_R_UNSUPPORTED_SALT_TYPE 126 1474296341Sdelphij# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 1475296341Sdelphij# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 147655714Skris 147755714Skris#ifdef __cplusplus 147855714Skris} 147955714Skris#endif 148055714Skris#endif 1481