|
| 1 | +/* |
| 2 | + * Changes to OpenSSL version 1.1.1. copyright Amazon.com, Inc. All Rights Reserved. |
| 3 | + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. |
| 4 | + * |
| 5 | + * Licensed under the Apache License, Version 2.0 (the "License"). |
| 6 | + * You may not use this file except in compliance with the License. |
| 7 | + * A copy of the License is located at |
| 8 | + * |
| 9 | + * http://aws.amazon.com/apache2.0 |
| 10 | + * |
| 11 | + * or in the "license" file accompanying this file. This file is distributed |
| 12 | + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| 13 | + * express or implied. See the License for the specific language governing |
| 14 | + * permissions and limitations under the License. |
| 15 | + */ |
| 16 | + |
| 17 | +#ifndef HEADER_EVP_H |
| 18 | +#define HEADER_EVP_H |
| 19 | + |
| 20 | +#include <stddef.h> |
| 21 | + |
| 22 | +#include <openssl/ec.h> |
| 23 | +#include <openssl/ossl_typ.h> |
| 24 | + |
| 25 | +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ |
| 26 | +#define EVP_PKEY_HKDF 1036 // reference from obj_mac.h |
| 27 | + |
| 28 | +EVP_PKEY *EVP_PKEY_new(void); |
| 29 | +EC_KEY *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); |
| 30 | +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key); |
| 31 | +void EVP_PKEY_free(EVP_PKEY *pkey); |
| 32 | +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); |
| 33 | +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); |
| 34 | +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); |
| 35 | +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); |
| 36 | +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, const unsigned char *tbs, size_t tbslen); |
| 37 | +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); |
| 38 | +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, int cmd, int p1, void *p2); |
| 39 | +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); |
| 40 | +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); |
| 41 | +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); |
| 42 | +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad); |
| 43 | +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); |
| 44 | +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); |
| 45 | +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen); |
| 46 | +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen); |
| 47 | + |
| 48 | +EVP_MD_CTX *EVP_MD_CTX_new(void); |
| 49 | +int EVP_MD_CTX_size(const EVP_MD_CTX *ctx); |
| 50 | +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); |
| 51 | +int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); |
| 52 | +int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); |
| 53 | +int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); |
| 54 | +int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); |
| 55 | +int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); |
| 56 | +int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen); |
| 57 | + |
| 58 | +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); |
| 59 | +int EVP_CipherInit_ex( |
| 60 | + EVP_CIPHER_CTX *ctx, |
| 61 | + const EVP_CIPHER *cipher, |
| 62 | + ENGINE *impl, |
| 63 | + const unsigned char *key, |
| 64 | + const unsigned char *iv, |
| 65 | + int enc); |
| 66 | +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); |
| 67 | +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx); |
| 68 | +int EVP_EncryptInit_ex( |
| 69 | + EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, ENGINE *impl, const unsigned char *key, const unsigned char *iv); |
| 70 | +int EVP_DecryptInit_ex( |
| 71 | + EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, ENGINE *impl, const unsigned char *key, const unsigned char *iv); |
| 72 | +int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); |
| 73 | +int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); |
| 74 | +int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); |
| 75 | +int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); |
| 76 | +int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); |
| 77 | + |
| 78 | +#define EVP_MD_CTX_create() EVP_MD_CTX_new() |
| 79 | +#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) |
| 80 | + |
| 81 | +const EVP_CIPHER *EVP_aes_128_gcm(void); |
| 82 | +const EVP_CIPHER *EVP_aes_192_gcm(void); |
| 83 | +const EVP_CIPHER *EVP_aes_256_gcm(void); |
| 84 | +const EVP_MD *EVP_sha256(void); |
| 85 | +const EVP_MD *EVP_sha384(void); |
| 86 | +const EVP_MD *EVP_sha512(void); |
| 87 | + |
| 88 | +int EVP_MD_size(const EVP_MD *md); |
| 89 | + |
| 90 | +#define EVP_CTRL_INIT 0x0 |
| 91 | +#define EVP_CTRL_SET_KEY_LENGTH 0x1 |
| 92 | +#define EVP_CTRL_GET_RC2_KEY_BITS 0x2 |
| 93 | +#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 |
| 94 | +#define EVP_CTRL_GET_RC5_ROUNDS 0x4 |
| 95 | +#define EVP_CTRL_SET_RC5_ROUNDS 0x5 |
| 96 | +#define EVP_CTRL_RAND_KEY 0x6 |
| 97 | +#define EVP_CTRL_PBE_PRF_NID 0x7 |
| 98 | +#define EVP_CTRL_COPY 0x8 |
| 99 | +#define EVP_CTRL_AEAD_SET_IVLEN 0x9 |
| 100 | +#define EVP_CTRL_AEAD_GET_TAG 0x10 |
| 101 | +#define EVP_CTRL_AEAD_SET_TAG 0x11 |
| 102 | +#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 |
| 103 | +#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN |
| 104 | +#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG |
| 105 | +#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG |
| 106 | +#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED |
| 107 | +#define EVP_CTRL_GCM_IV_GEN 0x13 |
| 108 | +#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN |
| 109 | +#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG |
| 110 | +#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG |
| 111 | +#define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED |
| 112 | +#define EVP_CTRL_CCM_SET_L 0x14 |
| 113 | +#define EVP_CTRL_CCM_SET_MSGLEN 0x15 |
| 114 | + |
| 115 | +#define EVP_PKEY_OP_UNDEFINED 0 |
| 116 | +#define EVP_PKEY_OP_PARAMGEN (1 << 1) |
| 117 | +#define EVP_PKEY_OP_KEYGEN (1 << 2) |
| 118 | +#define EVP_PKEY_OP_SIGN (1 << 3) |
| 119 | +#define EVP_PKEY_OP_VERIFY (1 << 4) |
| 120 | +#define EVP_PKEY_OP_VERIFYRECOVER (1 << 5) |
| 121 | +#define EVP_PKEY_OP_SIGNCTX (1 << 6) |
| 122 | +#define EVP_PKEY_OP_VERIFYCTX (1 << 7) |
| 123 | +#define EVP_PKEY_OP_ENCRYPT (1 << 8) |
| 124 | +#define EVP_PKEY_OP_DECRYPT (1 << 9) |
| 125 | +#define EVP_PKEY_OP_DERIVE (1 << 10) |
| 126 | + |
| 127 | +#define EVP_PKEY_ALG_CTRL 0x1000 |
| 128 | + |
| 129 | +#endif |
0 commit comments