- Timestamp:
- Feb 7, 2019, 8:36:33 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/wolfssl/openssl/evp.h
r352 r372 22 22 23 23 24 /* evp.h defines mini evp openssl compatibility layer 25 * 24 /*! 25 \file wolfssl/openssl/evp.h 26 \brief evp.h defines mini evp openssl compatibility layer 26 27 */ 27 28 … … 36 37 #endif 37 38 39 #ifndef NO_MD4 40 #include <wolfssl/openssl/md4.h> 41 #endif 38 42 #ifndef NO_MD5 39 43 #include <wolfssl/openssl/md5.h> … … 52 56 #include <wolfssl/wolfcrypt/idea.h> 53 57 #endif 58 #include <wolfssl/wolfcrypt/pwdbased.h> 54 59 55 60 #ifdef __cplusplus … … 57 62 #endif 58 63 64 59 65 typedef char WOLFSSL_EVP_CIPHER; 66 #ifndef WOLFSSL_EVP_TYPE_DEFINED /* guard on redeclaration */ 60 67 typedef char WOLFSSL_EVP_MD; 61 68 typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; 69 #define WOLFSSL_EVP_TYPE_DEFINED 70 #endif 71 72 typedef WOLFSSL_EVP_PKEY EVP_PKEY; 73 typedef WOLFSSL_EVP_PKEY PKCS8_PRIV_KEY_INFO; 74 75 #ifndef NO_MD4 76 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md4(void); 77 #endif 62 78 #ifndef NO_MD5 63 79 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void); … … 74 90 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void); 75 91 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cbc(void); 92 #if !defined(NO_AES) && defined(HAVE_AES_CBC) 76 93 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cbc(void); 77 94 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cbc(void); 95 #endif 78 96 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ctr(void); 79 97 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ctr(void); … … 89 107 90 108 typedef union { 109 #ifndef NO_MD4 110 WOLFSSL_MD4_CTX md4; 111 #endif 91 112 #ifndef NO_MD5 92 113 WOLFSSL_MD5_CTX md5; … … 108 129 } WOLFSSL_Hasher; 109 130 131 typedef struct WOLFSSL_EVP_PKEY_CTX WOLFSSL_EVP_PKEY_CTX; 110 132 111 133 typedef struct WOLFSSL_EVP_MD_CTX { … … 115 137 } hash; 116 138 unsigned char macType; 139 WOLFSSL_EVP_PKEY_CTX *pctx; 117 140 } WOLFSSL_EVP_MD_CTX; 118 141 … … 152 175 EVP_PKEY_DSA = 17, 153 176 EVP_PKEY_EC = 18, 177 #ifdef HAVE_IDEA 154 178 IDEA_CBC_TYPE = 19, 179 #endif 155 180 NID_sha1 = 64, 156 NID_md2 = 3, 181 NID_sha224 = 65, 182 NID_md2 = 77, 157 183 NID_md5 = 4, 158 184 NID_hmac = 855, … … 198 224 } WOLFSSL_EVP_CIPHER_CTX; 199 225 200 201 #ifndef WOLFSSL_EVP_PKEY_TYPE_DEFINED /* guard on redeclaration */ 202 typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; 203 #define WOLFSSL_EVP_PKEY_TYPE_DEFINED 204 #endif 205 206 struct WOLFSSL_EVP_PKEY { 207 int type; /* openssh dereference */ 208 int save_type; /* openssh dereference */ 209 int pkey_sz; 210 union { 211 char* ptr; /* der format of key / or raw for NTRU */ 212 } pkey; 213 #ifdef HAVE_ECC 214 int pkey_curve; 215 #endif 226 struct WOLFSSL_EVP_PKEY_CTX { 227 WOLFSSL_EVP_PKEY *pkey; 228 int op; /* operation */ 229 int padding; 216 230 }; 217 231 218 232 typedef int WOLFSSL_ENGINE ; 219 233 typedef WOLFSSL_ENGINE ENGINE; 220 typedef int WOLFSSL_EVP_PKEY_CTX;221 234 typedef WOLFSSL_EVP_PKEY_CTX EVP_PKEY_CTX; 235 236 #define EVP_PKEY_OP_ENCRYPT (1 << 6) 237 #define EVP_PKEY_OP_DECRYPT (1 << 7) 222 238 223 239 WOLFSSL_API void wolfSSL_EVP_init(void); … … 229 245 WOLFSSL_API void wolfSSL_EVP_MD_CTX_init(WOLFSSL_EVP_MD_CTX* ctx); 230 246 WOLFSSL_API int wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx); 247 WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); 248 WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy_ex(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); 249 WOLFSSL_API int wolfSSL_EVP_MD_CTX_type(const WOLFSSL_EVP_MD_CTX *ctx); 231 250 WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_MD_CTX_md(const WOLFSSL_EVP_MD_CTX *ctx); 232 251 WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name); … … 239 258 WOLFSSL_ENGINE *impl); 240 259 WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data, 241 unsigned longsz);260 size_t sz); 242 261 WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md, 243 262 unsigned int* s); … … 255 274 unsigned char *sig, size_t *siglen); 256 275 257 #ifndef NO_MD5 276 WOLFSSL_API int wolfSSL_EVP_DigestVerifyInit(WOLFSSL_EVP_MD_CTX *ctx, 277 WOLFSSL_EVP_PKEY_CTX **pctx, 278 const WOLFSSL_EVP_MD *type, 279 WOLFSSL_ENGINE *e, 280 WOLFSSL_EVP_PKEY *pkey); 281 WOLFSSL_API int wolfSSL_EVP_DigestVerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, 282 const void *d, size_t cnt); 283 WOLFSSL_API int wolfSSL_EVP_DigestVerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, 284 const unsigned char *sig, 285 size_t siglen); 286 287 258 288 WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER*, 259 289 const WOLFSSL_EVP_MD*, const unsigned char*, 260 290 const unsigned char*, int, int, unsigned char*, 261 291 unsigned char*); 262 #endif263 292 264 293 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_init(WOLFSSL_EVP_CIPHER_CTX* ctx); … … 267 296 WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX*); 268 297 WOLFSSL_API int wolfSSL_EVP_CIPHER_iv_length(const WOLFSSL_EVP_CIPHER*); 298 WOLFSSL_API int wolfSSL_EVP_Cipher_key_length(const WOLFSSL_EVP_CIPHER* c); 269 299 270 300 271 301 WOLFSSL_API int wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx, 272 302 const WOLFSSL_EVP_CIPHER* type, 273 unsigned char* key, unsigned char* iv, 303 const unsigned char* key, 304 const unsigned char* iv, 274 305 int enc); 275 306 WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, 276 307 const WOLFSSL_EVP_CIPHER* type, 277 308 WOLFSSL_ENGINE *impl, 278 unsigned char* key, unsigned char* iv, 309 const unsigned char* key, 310 const unsigned char* iv, 279 311 int enc); 280 312 WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, 281 313 const WOLFSSL_EVP_CIPHER* type, 282 unsigned char* key, unsigned char* iv); 314 const unsigned char* key, 315 const unsigned char* iv); 283 316 WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, 284 317 const WOLFSSL_EVP_CIPHER* type, 285 318 WOLFSSL_ENGINE *impl, 286 unsigned char* key, unsigned char* iv); 319 const unsigned char* key, 320 const unsigned char* iv); 287 321 WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, 288 322 const WOLFSSL_EVP_CIPHER* type, 289 unsigned char* key, unsigned char* iv); 323 const unsigned char* key, 324 const unsigned char* iv); 290 325 WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, 291 326 const WOLFSSL_EVP_CIPHER* type, 292 327 WOLFSSL_ENGINE *impl, 293 unsigned char* key, unsigned char* iv); 328 const unsigned char* key, 329 const unsigned char* iv); 294 330 WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, 295 331 unsigned char *out, int *outl, … … 320 356 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int); 321 357 358 WOLFSSL_API int wolfSSL_EVP_PKEY_assign_RSA(WOLFSSL_EVP_PKEY* pkey, 359 WOLFSSL_RSA* key); 360 WOLFSSL_API int wolfSSL_EVP_PKEY_assign_EC_KEY(WOLFSSL_EVP_PKEY* pkey, 361 WOLFSSL_EC_KEY* key); 322 362 WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY*); 323 363 WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY*); 324 364 WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY *key); 365 WOLFSSL_API int wolfSSL_EVP_PKEY_set1_RSA(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_RSA *key); 325 366 326 367 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, ENGINE* e, … … 328 369 WOLFSSL_API const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey, 329 370 size_t* len); 371 WOLFSSL_API int wolfSSL_EVP_PKEY_bits(const WOLFSSL_EVP_PKEY *pkey); 372 WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx); 373 WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_ENGINE *e); 374 WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_padding(WOLFSSL_EVP_PKEY_CTX *ctx, int padding); 375 WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt(WOLFSSL_EVP_PKEY_CTX *ctx, 376 unsigned char *out, size_t *outlen, 377 const unsigned char *in, size_t inlen); 378 WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); 379 WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt(WOLFSSL_EVP_PKEY_CTX *ctx, 380 unsigned char *out, size_t *outlen, 381 const unsigned char *in, size_t inlen); 382 WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); 383 WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_EVP_PKEY_new(void); 384 WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); 385 WOLFSSL_API int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey); 386 WOLFSSL_API int wolfSSL_EVP_PKEY_type(int type); 387 WOLFSSL_API int wolfSSL_EVP_PKEY_id(const EVP_PKEY *pkey); 388 WOLFSSL_API int wolfSSL_EVP_PKEY_base_id(const EVP_PKEY *pkey); 389 WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret, 390 unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey); 391 WOLFSSL_API int wolfSSL_EVP_SignInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); 392 WOLFSSL_API int wolfSSL_EVP_SignUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); 393 WOLFSSL_API int wolfSSL_EVP_VerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, 394 unsigned char* sig, unsigned int sig_len, WOLFSSL_EVP_PKEY *pkey); 395 WOLFSSL_API int wolfSSL_EVP_VerifyInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); 396 WOLFSSL_API int wolfSSL_EVP_VerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); 397 330 398 331 399 /* these next ones don't need real OpenSSL type, for OpenSSH compat only */ … … 347 415 WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher); 348 416 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); 417 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_clear_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); 349 418 WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_CTX_mode(const WOLFSSL_EVP_CIPHER_CTX *ctx); 350 419 WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad); 351 420 WOLFSSL_API int wolfSSL_EVP_add_digest(const WOLFSSL_EVP_MD *digest); 352 421 WOLFSSL_API int wolfSSL_EVP_add_cipher(const WOLFSSL_EVP_CIPHER *cipher); 422 WOLFSSL_API void wolfSSL_EVP_cleanup(void); 423 WOLFSSL_API int wolfSSL_add_all_algorithms(void); 424 WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_noconf(void); 425 426 WOLFSSL_API int wolfSSL_PKCS5_PBKDF2_HMAC_SHA1(const char * pass, int passlen, 427 const unsigned char * salt, 428 int saltlen, int iter, 429 int keylen, unsigned char *out); 353 430 354 431 #define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER … … 371 448 #define WOLFSSL_EVP_CIPH_CCM_MODE 0x7 372 449 #define WOLFSSL_EVP_CIPH_NO_PADDING 0x100 450 #define WOLFSSL_EVP_CIPH_TYPE_INIT 0xff 373 451 374 452 /* end OpenSSH compat */ … … 379 457 typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX; 380 458 459 #ifndef NO_MD4 460 #define EVP_md4 wolfSSL_EVP_md4 461 #endif 381 462 #ifndef NO_MD5 382 463 #define EVP_md5 wolfSSL_EVP_md5 383 464 #endif 384 465 #define EVP_sha1 wolfSSL_EVP_sha1 466 #define EVP_dds1 wolfSSL_EVP_sha1 385 467 #define EVP_sha224 wolfSSL_EVP_sha224 386 468 #define EVP_sha256 wolfSSL_EVP_sha256 … … 414 496 #define EVP_MD_CTX_cleanup wolfSSL_EVP_MD_CTX_cleanup 415 497 #define EVP_MD_CTX_md wolfSSL_EVP_MD_CTX_md 416 #define EVP_MD_CTX_type wolfSSL_EVP_MD_ type498 #define EVP_MD_CTX_type wolfSSL_EVP_MD_CTX_type 417 499 #define EVP_MD_type wolfSSL_EVP_MD_type 418 500 … … 425 507 #define EVP_DigestSignUpdate wolfSSL_EVP_DigestSignUpdate 426 508 #define EVP_DigestSignFinal wolfSSL_EVP_DigestSignFinal 509 #define EVP_DigestVerifyInit wolfSSL_EVP_DigestVerifyInit 510 #define EVP_DigestVerifyUpdate wolfSSL_EVP_DigestVerifyUpdate 511 #define EVP_DigestVerifyFinal wolfSSL_EVP_DigestVerifyFinal 427 512 #define EVP_BytesToKey wolfSSL_EVP_BytesToKey 428 513 … … 438 523 439 524 #define EVP_CIPHER_iv_length wolfSSL_EVP_CIPHER_iv_length 525 #define EVP_CIPHER_key_length wolfSSL_EVP_Cipher_key_length 440 526 441 527 #define EVP_CipherInit wolfSSL_EVP_CipherInit … … 465 551 #define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname 466 552 553 #define EVP_PKEY_asign_RSA wolfSSL_EVP_PKEY_assign_RSA 554 #define EVP_PKEY_asign_EC_KEY wolfSSL_EVP_PKEY_assign_EC_KEY 555 #define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA 467 556 #define EVP_PKEY_get1_RSA wolfSSL_EVP_PKEY_get1_RSA 468 557 #define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA 558 #define EVP_PKEY_set1_RSA wolfSSL_EVP_PKEY_set1_RSA 469 559 #define EVP_PKEY_get1_EC_KEY wolfSSL_EVP_PKEY_get1_EC_KEY 470 560 #define EVP_PKEY_get0_hmac wolfSSL_EVP_PKEY_get0_hmac 471 561 #define EVP_PKEY_new_mac_key wolfSSL_EVP_PKEY_new_mac_key 562 #define EVP_MD_CTX_copy wolfSSL_EVP_MD_CTX_copy 563 #define EVP_MD_CTX_copy_ex wolfSSL_EVP_MD_CTX_copy_ex 564 #define EVP_PKEY_bits wolfSSL_EVP_PKEY_bits 565 #define EVP_PKEY_CTX_free wolfSSL_EVP_PKEY_CTX_free 566 #define EVP_PKEY_CTX_new wolfSSL_EVP_PKEY_CTX_new 567 #define EVP_PKEY_CTX_set_rsa_padding wolfSSL_EVP_PKEY_CTX_set_rsa_padding 568 #define EVP_PKEY_decrypt wolfSSL_EVP_PKEY_decrypt 569 #define EVP_PKEY_decrypt_init wolfSSL_EVP_PKEY_decrypt_init 570 #define EVP_PKEY_encrypt wolfSSL_EVP_PKEY_encrypt 571 #define EVP_PKEY_encrypt_init wolfSSL_EVP_PKEY_encrypt_init 572 #define EVP_PKEY_new wolfSSL_PKEY_new 573 #define EVP_PKEY_free wolfSSL_EVP_PKEY_free 574 #define EVP_PKEY_size wolfSSL_EVP_PKEY_size 575 #define EVP_PKEY_type wolfSSL_EVP_PKEY_type 576 #define EVP_PKEY_base_id wolfSSL_EVP_PKEY_base_id 577 #define EVP_PKEY_id wolfSSL_EVP_PKEY_id 578 #define EVP_SignFinal wolfSSL_EVP_SignFinal 579 #define EVP_SignInit wolfSSL_EVP_SignInit 580 #define EVP_SignUpdate wolfSSL_EVP_SignUpdate 581 #define EVP_VerifyFinal wolfSSL_EVP_VerifyFinal 582 #define EVP_VerifyInit wolfSSL_EVP_VerifyInit 583 #define EVP_VerifyUpdate wolfSSL_EVP_VerifyUpdate 472 584 473 585 #define EVP_CIPHER_CTX_block_size wolfSSL_EVP_CIPHER_CTX_block_size … … 475 587 #define EVP_CIPHER_flags wolfSSL_EVP_CIPHER_flags 476 588 #define EVP_CIPHER_CTX_set_flags wolfSSL_EVP_CIPHER_CTX_set_flags 589 #define EVP_CIPHER_CTX_clear_flags wolfSSL_EVP_CIPHER_CTX_clear_flags 477 590 #define EVP_CIPHER_CTX_set_padding wolfSSL_EVP_CIPHER_CTX_set_padding 478 591 #define EVP_CIPHER_CTX_flags wolfSSL_EVP_CIPHER_CTX_flags 479 592 #define EVP_add_digest wolfSSL_EVP_add_digest 480 593 #define EVP_add_cipher wolfSSL_EVP_add_cipher 594 #define EVP_cleanup wolfSSL_EVP_cleanup 595 596 #define OpenSSL_add_all_digests() wolfCrypt_Init() 597 #define OpenSSL_add_all_ciphers() wolfCrypt_Init() 598 #define OpenSSL_add_all_algorithms wolfSSL_add_all_algorithms 599 #define OpenSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf 600 #define wolfSSL_OPENSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf 601 602 #define PKCS5_PBKDF2_HMAC_SHA1 wolfSSL_PKCS5_PBKDF2_HMAC_SHA1 481 603 482 604 #ifndef EVP_MAX_MD_SIZE … … 489 611 #endif 490 612 613 WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k); 614 491 615 #ifdef __cplusplus 492 616 } /* extern "C" */
Note:
See TracChangeset
for help on using the changeset viewer.