1/* 2 * Copyright (c) 2011 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * Copyright (c) 2005 - 2008 Kungliga Tekniska Högskolan 26 * (Royal Institute of Technology, Stockholm, Sweden). 27 * All rights reserved. 28 * 29 * Redistribution and use in source and binary forms, with or without 30 * modification, are permitted provided that the following conditions 31 * are met: 32 * 33 * 1. Redistributions of source code must retain the above copyright 34 * notice, this list of conditions and the following disclaimer. 35 * 36 * 2. Redistributions in binary form must reproduce the above copyright 37 * notice, this list of conditions and the following disclaimer in the 38 * documentation and/or other materials provided with the distribution. 39 * 40 * 3. Neither the name of the Institute nor the names of its contributors 41 * may be used to endorse or promote products derived from this software 42 * without specific prior written permission. 43 * 44 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 45 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 46 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 47 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 48 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 49 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 50 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 51 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 53 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 54 * SUCH DAMAGE. 55 */ 56 57#ifndef _OSSL_EVP_H_ 58#define _OSSL_EVP_H_ 1 59 60#include <stdlib.h> 61 62#include "ossl-engine.h" 63#include "ossl-objects.h" 64 65/* symbol renaming */ 66#define EVP_CIPHER_CTX_block_size ossl_EVP_CIPHER_CTX_block_size 67#define EVP_CIPHER_CTX_cipher ossl_EVP_CIPHER_CTX_cipher 68#define EVP_CIPHER_CTX_cleanup ossl_EVP_CIPHER_CTX_cleanup 69#define EVP_CIPHER_CTX_flags ossl_EVP_CIPHER_CTX_flags 70#define EVP_CIPHER_CTX_get_app_data ossl_EVP_CIPHER_CTX_get_app_data 71#define EVP_CIPHER_CTX_init ossl_EVP_CIPHER_CTX_init 72#define EVP_CIPHER_CTX_iv_length ossl_EVP_CIPHER_CTX_iv_length 73#define EVP_CIPHER_CTX_key_length ossl_EVP_CIPHER_CTX_key_length 74#define EVP_CIPHER_CTX_mode ossl_EVP_CIPHER_CTX_mode 75#define EVP_CIPHER_CTX_set_app_data ossl_EVP_CIPHER_CTX_set_app_data 76#define EVP_CIPHER_CTX_set_key_length ossl_EVP_CIPHER_CTX_set_key_length 77#define EVP_CIPHER_CTX_set_padding ossl_EVP_CIPHER_CTX_set_padding 78#define EVP_CIPHER_block_size ossl_EVP_CIPHER_block_size 79#define EVP_CIPHER_iv_length ossl_EVP_CIPHER_iv_length 80#define EVP_CIPHER_key_length ossl_EVP_CIPHER_key_length 81#define EVP_CIPHER_nid ossl_EVP_CIPHER_nid 82#define EVP_Cipher ossl_EVP_Cipher 83#define EVP_CipherInit_ex ossl_EVP_CipherInit_ex 84#define EVP_CipherInit ossl_EVP_CipherInit 85#define EVP_CipherUpdate ossl_EVP_CipherUpdate 86#define EVP_CipherFinal_ex ossl_EVP_CipherFinal_ex 87#define EVP_Digest ossl_EVP_Digest 88#define EVP_DigestFinal ossl_EVP_DigestFinal 89#define EVP_DigestFinal_ex ossl_EVP_DigestFinal_ex 90#define EVP_DigestInit ossl_EVP_DigestInit 91#define EVP_DigestInit_ex ossl_EVP_DigestInit_ex 92#define EVP_DigestUpdate ossl_EVP_DigestUpdate 93#define EVP_get_digestbynid ossl_EVP_get_digestbynid 94#define EVP_MD_CTX_block_size ossl_EVP_MD_CTX_block_size 95#define EVP_MD_CTX_cleanup ossl_EVP_MD_CTX_cleanup 96#define EVP_MD_CTX_copy_ex ossl_EVP_MD_CTX_copy_ex 97#define EVP_MD_CTX_create ossl_EVP_MD_CTX_create 98#define EVP_MD_CTX_init ossl_EVP_MD_CTX_init 99#define EVP_MD_CTX_destroy ossl_EVP_MD_CTX_destroy 100#define EVP_MD_CTX_md ossl_EVP_MD_CTX_md 101#define EVP_MD_CTX_size ossl_EVP_MD_CTX_size 102#define EVP_MD_block_size ossl_EVP_MD_block_size 103#define EVP_MD_size ossl_EVP_MD_size 104#define EVP_aes_128_cbc ossl_EVP_aes_128_cbc 105#define EVP_aes_128_ecb ossl_EVP_aes_128_ecb 106#define EVP_aes_192_cbc ossl_EVP_aes_192_cbc 107#define EVP_aes_192_ecb ossl_EVP_aes_192_ecb 108#define EVP_aes_256_cbc ossl_EVP_aes_256_cbc 109#define EVP_aes_256_ecb ossl_EVP_aes_256_ecb 110#define EVP_aes_128_cfb8 ossl_EVP_aes_128_cfb8 111#define EVP_aes_192_cfb8 ossl_EVP_aes_192_cfb8 112#define EVP_aes_256_cfb8 ossl_EVP_aes_256_cfb8 113 114#define EVP_des_cbc ossl_EVP_des_cbc 115#define EVP_des_ecb ossl_EVP_des_ecb 116#define EVP_des_ede3_cbc ossl_EVP_des_ede3_cbc 117#define EVP_des_ede3_ecb ossl_EVP_des_ede3_ecb 118#define EVP_bf_cbc ossl_EVP_bf_cbc 119#define EVP_bf_ecb ossl_EVP_bf_ecb 120#define EVP_cast5_cbc ossl_EVP_cast5_cbc 121#define EVP_cast5_ecb ossl_EVP_cast5_ecb 122#define EVP_enc_null ossl_EVP_enc_null 123#define EVP_md2 ossl_EVP_md2 124#define EVP_md4 ossl_EVP_md4 125#define EVP_md5 ossl_EVP_md5 126#define EVP_md_null ossl_EVP_md_null 127#define EVP_rc2_40_cbc ossl_EVP_rc2_40_cbc 128#define EVP_rc2_64_cbc ossl_EVP_rc2_64_cbc 129#define EVP_rc2_cbc ossl_EVP_rc2_cbc 130#define EVP_rc4 ossl_EVP_rc4 131#define EVP_rc4_40 ossl_EVP_rc4_40 132#define EVP_camellia_128_cbc ossl_EVP_camellia_128_cbc 133#define EVP_camellia_192_cbc ossl_EVP_camellia_192_cbc 134#define EVP_camellia_256_cbc ossl_EVP_camellia_256_cbc 135#define EVP_sha ossl_EVP_sha 136#define EVP_sha1 ossl_EVP_sha1 137#define EVP_sha224 ossl_EVP_sha224 138#define EVP_sha256 ossl_EVP_sha256 139#define EVP_sha384 ossl_EVP_sha384 140#define EVP_sha512 ossl_EVP_sha512 141#define EVP_rmd128 ossl_EVP_rmd128 142#define EVP_rmd160 ossl_EVP_rmd160 143#define EVP_rmd256 ossl_EVP_rmd256 144#define EVP_rmd320 ossl_EVP_rmd320 145#define EVP_ripemd128 ossl_EVP_ripemd128 146#define EVP_ripemd160 ossl_EVP_ripemd160 147#define EVP_ripemd256 ossl_EVP_ripemd256 148#define EVP_ripemd320 ossl_EVP_ripemd320 149#define PKCS5_PBKDF2_HMAC_SHA1 ossl_PKCS5_PBKDF2_HMAC_SHA1 150#define EVP_BytesToKey ossl_EVP_BytesToKey 151#define EVP_get_pw_prompt ossl_EVP_get_pw_prompt 152#define EVP_set_pw_prompt ossl_EVP_set_pw_prompt 153#define EVP_read_pw_string ossl_EVP_read_pw_string 154#define EVP_get_cipherbyname ossl_EVP_get_cipherbyname 155 156/* 157 * #define OpenSSL_add_all_algorithms ossl_OpenSSL_add_all_algorithms 158 * #define OpenSSL_add_all_algorithms_conf ossl_OpenSSL_add_all_algorithms_conf 159 * #define OpenSSL_add_all_algorithms_noconf ossl_OpenSSL_add_all_algorithms_noconf 160 */ 161#define EVP_CIPHER_CTX_ctrl ossl_EVP_CIPHER_CTX_ctrl 162#define EVP_CIPHER_CTX_rand_key ossl_EVP_CIPHER_CTX_rand_key 163 164#define EVP_PKEY_new ossl_EVP_PKEY_new 165#define EVP_PKEY_get1_RSA ossl_EVP_PKEY_get1_RSA 166#define EVP_PKEY_set1_RSA ossl_EVP_PKEY_set1_RSA 167#define EVP_PKEY_get1_DSA ossl_EVP_PKEY_get1_DSA 168#define EVP_PKEY_set1_DSA ossl_EVP_PKEY_set1_DSA 169#define EVP_PKEY_free ossl_EVP_PKEY_free 170#define EVP_PKEY_type ossl_EVP_PKEY_type 171 172#define EVP_DecodeBlock ossl_EVP_DecodeBlock 173#define EVP_DecodeFinal ossl_EVP_DecodeFinal 174#define EVP_DecodeUpdate ossl_EVP_DecodeUpdate 175#define EVP_DecodeInit ossl_EVP_DecodeInit 176#define EVP_EncodeBlock ossl_EVP_EncodeBlock 177#define EVP_EncodeFinal ossl_EVP_EncodeFinal 178#define EVP_EncodeUpdate ossl_EVP_EncodeUpdate 179#define EVP_EncodeInit ossl_EVP_EncodeInit 180 181#define OPENSSL_free free 182#define OPENSSL_malloc malloc 183 184/* 185 * 186 */ 187 188struct ossl_evp_pkey { 189 int type; 190 int save_type; 191 int references; 192 union { 193 char * ptr; 194 RSA * rsa; 195 DSA * dsa; 196 DH * dh; 197 } 198 pkey; 199 int save_parameters; 200}; 201 202typedef struct ossl_EVP_MD_CTX EVP_MD_CTX; 203typedef struct ossl_evp_pkey EVP_PKEY; 204typedef struct ossl_evp_md EVP_MD; 205typedef struct ossl_CIPHER EVP_CIPHER; 206typedef struct ossl_CIPHER_CTX EVP_CIPHER_CTX; 207 208#define EVP_MAX_IV_LENGTH 16 209#define EVP_MAX_BLOCK_LENGTH 32 210#define EVP_MAX_MD_SIZE 64 211 212struct ossl_CIPHER { 213 int nid; 214 int block_size; 215 int key_len; 216 int iv_len; 217 unsigned long flags; 218 219 /* The lowest 3 bits is used as integer field for the mode the 220 * cipher is used in (use EVP_CIPHER.._mode() to extract the 221 * mode). The rest of the flag field is a bitfield. 222 */ 223#define EVP_CIPH_STREAM_CIPHER 0x0 224#define EVP_CIPH_ECB_MODE 0x1 225#define EVP_CIPH_CBC_MODE 0x2 226#define EVP_CIPH_CFB_MODE 0x3 227#define EVP_CIPH_OFB_MODE 0x4 228#define EVP_CIPH_CFB8_MODE 0x5 229#define EVP_CIPH_MODE 0x7 230 231#define EVP_CIPH_VARIABLE_LENGTH 0x008 /* variable key length */ 232#define EVP_CIPH_CUSTOM_IV 0x010 233#define EVP_CIPH_ALWAYS_CALL_INIT 0x020 234#define EVP_CIPH_RAND_KEY 0x200 235 236#define EVP_MAX_KEY_LENGTH 32 237 238 int (*init)(EVP_CIPHER_CTX *, const unsigned char *, const unsigned char *, int); 239 int (*do_cipher)(EVP_CIPHER_CTX *, unsigned char *, 240 const unsigned char *, unsigned int); 241 int (*cleanup)(EVP_CIPHER_CTX *); 242 int ctx_size; 243 void * set_asn1_parameters; 244 void * get_asn1_parameters; 245 int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr); 246#define EVP_CTRL_RAND_KEY 0x6 247 248 void * app_data; 249}; 250 251struct ossl_EVP_MD_CTX { 252 const EVP_MD * md; 253 ENGINE * engine; 254 void * ptr; 255}; 256 257struct ossl_CIPHER_CTX { 258 const EVP_CIPHER * cipher; 259 ENGINE * engine; 260 int encrypt; 261 int buf_len; /* bytes stored in buf for EVP_CipherUpdate */ 262 unsigned char oiv[EVP_MAX_IV_LENGTH]; 263 unsigned char iv[EVP_MAX_IV_LENGTH]; 264 unsigned char buf[EVP_MAX_BLOCK_LENGTH]; 265 int num; 266 void * app_data; 267 int key_len; 268 unsigned long flags; 269 void * cipher_data; 270 int final_used; 271 int block_mask; 272 unsigned char final[EVP_MAX_BLOCK_LENGTH]; 273}; 274 275typedef int (*ossl_evp_md_init)(EVP_MD_CTX *); 276typedef int (*ossl_evp_md_update)(EVP_MD_CTX *, const void *, size_t); 277typedef int (*ossl_evp_md_final)(void *, EVP_MD_CTX *); 278typedef int (*ossl_evp_md_cleanup)(EVP_MD_CTX *); 279 280struct ossl_evp_md { 281 int hash_size; 282 int block_size; 283 int ctx_size; 284 ossl_evp_md_init init; 285 ossl_evp_md_update update; 286 ossl_evp_md_final final; 287 ossl_evp_md_cleanup cleanup; 288}; 289 290typedef struct evp_Encode_Ctx_st { 291 int num; 292 int length; 293 unsigned char enc_data[80]; 294 int line_num; 295 int expect_nl; 296} EVP_ENCODE_CTX; 297 298typedef struct evp_cipher_info_st { 299 const EVP_CIPHER * cipher; 300 unsigned char iv[EVP_MAX_IV_LENGTH]; 301} EVP_CIPHER_INFO; 302 303#if !defined(__GNUC__) && !defined(__attribute__) 304#define __attribute__(x) 305#endif 306 307/* 308 * Avaible crypto algs 309 */ 310 311const EVP_MD *EVP_md_null(void); 312const EVP_MD *EVP_md2(void); 313const EVP_MD *EVP_md4(void); 314const EVP_MD *EVP_md5(void); 315const EVP_MD *EVP_sha(void); 316const EVP_MD *EVP_sha1(void); 317const EVP_MD *EVP_sha224(void); 318const EVP_MD *EVP_sha256(void); 319const EVP_MD *EVP_sha384(void); 320const EVP_MD *EVP_sha512(void); 321const EVP_MD *EVP_rmd128(void); 322const EVP_MD *EVP_rmd160(void); 323const EVP_MD *EVP_rmd256(void); 324const EVP_MD *EVP_rmd320(void); 325const EVP_MD *EVP_ripemd128(void); 326const EVP_MD *EVP_ripemd160(void); 327const EVP_MD *EVP_ripemd256(void); 328const EVP_MD *EVP_ripemd320(void); 329 330const EVP_CIPHER *EVP_aes_128_cbc(void); 331const EVP_CIPHER *EVP_aes_128_ecb(void); 332const EVP_CIPHER *EVP_aes_192_cbc(void); 333const EVP_CIPHER *EVP_aes_192_ecb(void); 334const EVP_CIPHER *EVP_aes_256_cbc(void); 335const EVP_CIPHER *EVP_aes_256_ecb(void); 336const EVP_CIPHER *EVP_aes_128_cfb8(void); 337const EVP_CIPHER *EVP_aes_192_cfb8(void); 338const EVP_CIPHER *EVP_aes_256_cfb8(void); 339const EVP_CIPHER *EVP_bf_cbc(void); 340const EVP_CIPHER *EVP_bf_ecb(void); 341const EVP_CIPHER *EVP_cast5_cbc(void); 342const EVP_CIPHER *EVP_cast5_ecb(void); 343const EVP_CIPHER *EVP_des_cbc(void); 344const EVP_CIPHER *EVP_des_ecb(void); 345const EVP_CIPHER *EVP_des_ede3_cbc(void); 346const EVP_CIPHER *EVP_des_ede3_ecb(void); 347const EVP_CIPHER *EVP_enc_null(void); 348const EVP_CIPHER *EVP_rc2_40_cbc(void); 349const EVP_CIPHER *EVP_rc2_64_cbc(void); 350const EVP_CIPHER *EVP_rc2_cbc(void); 351const EVP_CIPHER *EVP_rc4(void); 352const EVP_CIPHER *EVP_rc4_40(void); 353const EVP_CIPHER *EVP_camellia_128_cbc(void); 354const EVP_CIPHER *EVP_camellia_192_cbc(void); 355const EVP_CIPHER *EVP_camellia_256_cbc(void); 356 357size_t EVP_MD_size(const EVP_MD *); 358size_t EVP_MD_block_size(const EVP_MD *); 359 360const EVP_MD *EVP_MD_CTX_md(EVP_MD_CTX *); 361size_t EVP_MD_CTX_size(EVP_MD_CTX *); 362size_t EVP_MD_CTX_block_size(EVP_MD_CTX *); 363 364EVP_MD_CTX *EVP_MD_CTX_create(void); 365void EVP_MD_CTX_init(EVP_MD_CTX *); 366void EVP_MD_CTX_destroy(EVP_MD_CTX *); 367int EVP_MD_CTX_cleanup(EVP_MD_CTX *); 368int EVP_MD_CTX_copy_ex(EVP_MD_CTX *, const EVP_MD_CTX *); 369 370int EVP_DigestInit(EVP_MD_CTX *, const EVP_MD *); 371int EVP_DigestInit_ex(EVP_MD_CTX *, const EVP_MD *, ENGINE *); 372 373int EVP_DigestUpdate(EVP_MD_CTX *, const void *, size_t); 374int EVP_DigestFinal(EVP_MD_CTX *, void *, unsigned int *); 375int EVP_DigestFinal_ex(EVP_MD_CTX *, void *, unsigned int *); 376 377int EVP_Digest(const void *, size_t, void *, unsigned int *, 378 const EVP_MD *, ENGINE *); 379 380const EVP_MD *EVP_get_digestbynid(int nid); 381 382/* 383 * 384 */ 385 386const EVP_CIPHER *EVP_get_cipherbyname(const char *); 387 388size_t EVP_CIPHER_block_size(const EVP_CIPHER *); 389size_t EVP_CIPHER_key_length(const EVP_CIPHER *); 390size_t EVP_CIPHER_iv_length(const EVP_CIPHER *); 391int EVP_CIPHER_nid(const EVP_CIPHER *); 392 393void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *); 394int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *); 395int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *, int); 396int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *, int); 397unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *); 398int EVP_CIPHER_CTX_mode(const EVP_CIPHER_CTX *); 399 400const EVP_CIPHER *EVP_CIPHER_CTX_cipher(EVP_CIPHER_CTX *); 401size_t EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *); 402size_t EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *); 403size_t EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *); 404void *EVP_CIPHER_CTX_get_app_data(EVP_CIPHER_CTX *); 405void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *, void *); 406 407int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *, int, int, void *); 408int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *, void *); 409 410 411int EVP_CipherInit_ex(EVP_CIPHER_CTX *, const EVP_CIPHER *, ENGINE *, 412 const void *, const void *, int); 413int EVP_CipherInit(EVP_CIPHER_CTX *, const EVP_CIPHER *, const void *, 414 const void *, int); 415 416int EVP_CipherUpdate(EVP_CIPHER_CTX *, void *, int *, void *, size_t); 417int EVP_CipherFinal_ex(EVP_CIPHER_CTX *, void *, int *); 418 419int EVP_Cipher(EVP_CIPHER_CTX *, void *, const void *, size_t); 420 421int PKCS5_PBKDF2_HMAC_SHA1(const void *, size_t, const void *, size_t, 422unsigned long, size_t, void *); 423 424int EVP_BytesToKey(const EVP_CIPHER *, const EVP_MD *, 425const void *, const void *, size_t, 426unsigned int, void *, void *); 427char *EVP_get_pw_prompt(void); 428void EVP_set_pw_prompt(const char *prompt); 429int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify); 430 431 432RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); 433int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key); 434DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); 435int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key); 436EVP_PKEY *EVP_PKEY_new(void); 437void EVP_PKEY_free(EVP_PKEY *key); 438int EVP_PKEY_type(int type); 439 440void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); 441int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 442 const unsigned char *in, int inl); 443int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); 444int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); 445void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); 446void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 447 const unsigned char *in, int inl); 448void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); 449int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int dlen); 450 451 452#define EVP_PKEY_NONE NID_undef 453#define EVP_PKEY_RSA NID_rsaEncryption 454#define EVP_PKEY_RSA2 NID_rsa 455 456#define EVP_PKEY_DSA NID_dsa 457#define EVP_PKEY_DSA1 NID_dsa_2 458#define EVP_PKEY_DSA2 NID_dsaWithSHA 459#define EVP_PKEY_DSA3 NID_dsaWithSHA1 460#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 461#define EVP_PKEY_DH NID_dhKeyAgreement 462 463#endif /* _OSSL_EVP_H_ */ 464