mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-06 16:36:16 +08:00
v2 pre-release
This commit is contained in:
@@ -59,8 +59,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
int base58_decode(const char *b58, size_t b58sz, void *bin, size_t *binszp);
|
||||
int base58_encode(const void *data, size_t binsz, char *b58, size_t *b58sz);
|
||||
int base58_encode(const void *in, size_t inlen, char *out, size_t *outlen);
|
||||
int base58_decode(const char *in, size_t inlen, void *out, size_t *outlen);
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/*
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.] */
|
||||
|
||||
#ifndef OPENSSL_HEADER_DIGEST_H
|
||||
#define OPENSSL_HEADER_DIGEST_H
|
||||
|
||||
#include <openssl/base.h>
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern C */
|
||||
|
||||
#if !defined(BORINGSSL_NO_CXX)
|
||||
extern "C++" {
|
||||
|
||||
namespace bssl {
|
||||
|
||||
BORINGSSL_MAKE_DELETER(EVP_MD_CTX, EVP_MD_CTX_destroy)
|
||||
|
||||
using ScopedEVP_MD_CTX =
|
||||
internal::StackAllocated<EVP_MD_CTX, int, EVP_MD_CTX_init,
|
||||
EVP_MD_CTX_cleanup>;
|
||||
|
||||
} // namespace bssl
|
||||
|
||||
} // extern C++
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#define DIGEST_R_INPUT_NOT_INITIALIZED 100
|
||||
#define DIGEST_R_DECODE_ERROR 101
|
||||
#define DIGEST_R_UNKNOWN_HASH 102
|
||||
|
||||
#endif /* OPENSSL_HEADER_DIGEST_H */
|
||||
@@ -1282,81 +1282,65 @@ void EC_KEY_METHOD_get_verify(EC_KEY_METHOD *meth,
|
||||
# endif
|
||||
# endif
|
||||
|
||||
// 把两者顺序调换一下
|
||||
# ifdef OPENSSL_NO_MACRO
|
||||
int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid);
|
||||
int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc);
|
||||
int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int co_mode);
|
||||
int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
|
||||
int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
|
||||
int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **pmd);
|
||||
int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
|
||||
int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *plen);
|
||||
int EVP_PKEY_CTX_set0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *der, int len);
|
||||
int EVP_PKEY_CTX_get0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **pder);
|
||||
# else
|
||||
# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \
|
||||
# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \
|
||||
EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \
|
||||
# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \
|
||||
EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \
|
||||
# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \
|
||||
# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md)
|
||||
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd)
|
||||
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \
|
||||
# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL)
|
||||
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \
|
||||
# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen)
|
||||
|
||||
# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \
|
||||
# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p)
|
||||
|
||||
# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \
|
||||
# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p)
|
||||
# endif /* OPENSSL_NO_MACRO */
|
||||
|
||||
# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1)
|
||||
# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2)
|
||||
|
||||
@@ -430,71 +430,39 @@ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
|
||||
int en_de);
|
||||
|
||||
# ifndef OPENSSL_NO_RSA
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
|
||||
# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
|
||||
(char *)(rsa))
|
||||
# else
|
||||
int EVP_PKEY_assign_RSA(EVP_PKEY *pkey, RSA *rsa);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_DSA
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
|
||||
# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
|
||||
(char *)(dsa))
|
||||
# else
|
||||
int EVP_PKEY_assign_DSA(EVP_PKEY *pkey, DSA *dsa);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_DH
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
|
||||
# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
|
||||
(char *)(dh))
|
||||
# else
|
||||
int EVP_PKEY_assign_DH(EVP_PKEY *pkey, DH *dh);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_EC
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
|
||||
# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
|
||||
(char *)(eckey))
|
||||
# else
|
||||
int EVP_PKEY_assign_EC_KEY(EVP_PKEY *pkey, EC_KEY *ec_key);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_PAILLIER
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_assign_PAILLIER(pkey,paillier) EVP_PKEY_assign((pkey),EVP_PKEY_PAILLIER,\
|
||||
# define EVP_PKEY_assign_PAILLIER(pkey,paillier) EVP_PKEY_assign((pkey),EVP_PKEY_PAILLIER,\
|
||||
(char *)(paillier))
|
||||
# else
|
||||
int EVP_PKEY_assign_PAILLIER(EVP_PKEY *pkey, PAILLIER *paillier);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* Add some extra combinations */
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
|
||||
# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
|
||||
# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
|
||||
# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
|
||||
# else
|
||||
const EVP_MD *EVP_get_digestbynid(int nid);
|
||||
const EVP_MD *EVP_get_digestbyobj(ASN1_OBJECT *obj);
|
||||
const EVP_CIPHER *EVP_get_cipherbynid(int nid);
|
||||
const EVP_CIPHER *EVP_get_cipherbyobj(ASN1_OBJECT *obj);
|
||||
# endif
|
||||
# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
|
||||
# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
|
||||
# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
|
||||
# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
|
||||
|
||||
int EVP_MD_type(const EVP_MD *md);
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_MD_nid(e) EVP_MD_type(e)
|
||||
# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
|
||||
# else
|
||||
int EVP_MD_nid(const EVP_MD *md);
|
||||
const char *EVP_MD_name(const EVP_MD *md);
|
||||
# endif
|
||||
# define EVP_MD_nid(e) EVP_MD_type(e)
|
||||
# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
|
||||
int EVP_MD_pkey_type(const EVP_MD *md);
|
||||
int EVP_MD_size(const EVP_MD *md);
|
||||
int EVP_MD_block_size(const EVP_MD *md);
|
||||
@@ -506,35 +474,21 @@ int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx,
|
||||
void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx,
|
||||
int (*update) (EVP_MD_CTX *ctx,
|
||||
const void *data, size_t count));
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
|
||||
# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
|
||||
# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
|
||||
# else
|
||||
int EVP_MD_CTX_size(EVP_MD_CTX *ctx);
|
||||
int EVP_MD_CTX_block_size(EVP_MD_CTX *ctx);
|
||||
int EVP_MD_CTX_type(EVP_MD_CTX *ctx);
|
||||
# endif
|
||||
# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
|
||||
# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
|
||||
# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
|
||||
EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx);
|
||||
void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx);
|
||||
void *EVP_MD_CTX_set_md_data(EVP_MD_CTX *ctx, void *md_data);
|
||||
|
||||
int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))
|
||||
# else
|
||||
const char *EVP_CIPHER_name(const EVP_CIPHER *cipher);
|
||||
# endif
|
||||
# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))
|
||||
int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
|
||||
unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher);
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE)
|
||||
# else
|
||||
int EVP_CIPHER_mode(const EVP_CIPHER *cipher);
|
||||
# endif
|
||||
# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE)
|
||||
|
||||
const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
|
||||
int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx);
|
||||
@@ -553,106 +507,57 @@ void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
|
||||
void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
|
||||
void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx);
|
||||
void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data);
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
|
||||
# else
|
||||
int EVP_CIPHER_CTX_type(EVP_CIPHER_CTX *ctx);
|
||||
# endif
|
||||
# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
|
||||
# if OPENSSL_API_COMPAT < 0x10100000L
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c))
|
||||
# else
|
||||
int EVP_CIPHER_CTX_flags(EVP_CIPHER_CTX *ctx);
|
||||
# endif
|
||||
# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c))
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c))
|
||||
# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c))
|
||||
|
||||
# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)
|
||||
# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)
|
||||
# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)
|
||||
# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)
|
||||
|
||||
# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
|
||||
# define EVP_SignInit(a,b) EVP_DigestInit(a,b)
|
||||
# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
|
||||
# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
|
||||
# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
|
||||
# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
|
||||
# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# else
|
||||
int EVP_CIPHER_CTX_mode(EVP_CIPHER_CTX *ctx);
|
||||
long EVP_ENCODE_LENGTH(long l);
|
||||
long EVP_DECODE_LENGTH(long l);
|
||||
__owur int EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
|
||||
ENGINE *impl);
|
||||
__owur int EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
|
||||
__owur int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
|
||||
__owur int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
|
||||
ENGINE *impl);
|
||||
__owur int EVP_VerifyInit(EVP_MD_CTX *ctx, const EVP_MD *type);
|
||||
__owur int EVP_VerifyUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
|
||||
/*__owur*/ int EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||
int *outl, const unsigned char *in, int inl);
|
||||
/*__owur*/ int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
|
||||
int *outl, const unsigned char *in, int inl);
|
||||
__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
|
||||
__owur int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
|
||||
# endif
|
||||
# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
|
||||
# define EVP_SignInit(a,b) EVP_DigestInit(a,b)
|
||||
# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
|
||||
# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
|
||||
# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
|
||||
# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
|
||||
# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
|
||||
|
||||
# ifdef CONST_STRICT
|
||||
void BIO_set_md(BIO *, const EVP_MD *md);
|
||||
# else
|
||||
# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md)
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)
|
||||
# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)
|
||||
# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)
|
||||
# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
|
||||
# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)
|
||||
# else
|
||||
long BIO_get_md(BIO *bio, const EVP_MD **pmd);
|
||||
long BIO_get_md_ctx(BIO *bio, EVP_MD_CTX **pmctx);
|
||||
long BIO_set_md_ctx(BIO *bio, EVP_MD_CTX *mctx);
|
||||
long BIO_get_cipher_status(BIO *bio);
|
||||
long BIO_get_cipher_ctx(BIO *bio, EVP_CIPHER_CTX *pcctx);
|
||||
# endif
|
||||
# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)
|
||||
# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)
|
||||
# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)
|
||||
# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
|
||||
# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)
|
||||
|
||||
/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c,
|
||||
unsigned char *out,
|
||||
const unsigned char *in, unsigned int inl);
|
||||
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_add_cipher_alias(n,alias) \
|
||||
# define EVP_add_cipher_alias(n,alias) \
|
||||
OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))
|
||||
# define EVP_add_digest_alias(n,alias) \
|
||||
# define EVP_add_digest_alias(n,alias) \
|
||||
OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))
|
||||
# define EVP_delete_cipher_alias(alias) \
|
||||
# define EVP_delete_cipher_alias(alias) \
|
||||
OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);
|
||||
# define EVP_delete_digest_alias(alias) \
|
||||
# define EVP_delete_digest_alias(alias) \
|
||||
OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
|
||||
# else
|
||||
int EVP_add_cipher_alias(int type, const char *alias);
|
||||
int EVP_add_digest_alias(int type, const char *alias);
|
||||
int EVP_delete_cipher_alias(const char *alias);
|
||||
int EVP_delete_digest_alias(const char *alias);
|
||||
# endif
|
||||
|
||||
int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
|
||||
EVP_MD_CTX *EVP_MD_CTX_new(void);
|
||||
int EVP_MD_CTX_reset(EVP_MD_CTX *ctx);
|
||||
void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_MD_CTX_create() EVP_MD_CTX_new()
|
||||
# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx))
|
||||
# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx))
|
||||
# else
|
||||
EVP_MD_CTX *EVP_MD_CTX_create(void);
|
||||
int EVP_MD_CTX_init(EVP_MD_CTX *ctx);
|
||||
void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
|
||||
# endif
|
||||
# define EVP_MD_CTX_create() EVP_MD_CTX_new()
|
||||
# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx))
|
||||
# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx))
|
||||
__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
|
||||
void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
|
||||
void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
|
||||
@@ -777,13 +682,8 @@ int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
|
||||
int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
|
||||
|
||||
# if OPENSSL_API_COMPAT < 0x10100000L
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c)
|
||||
# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c)
|
||||
# else
|
||||
int EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx);
|
||||
int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx);
|
||||
# endif
|
||||
# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c)
|
||||
# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c)
|
||||
# endif
|
||||
EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
|
||||
int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
|
||||
@@ -1021,40 +921,31 @@ const EVP_CIPHER *EVP_sms4_wrap_pad(void);
|
||||
# endif
|
||||
|
||||
# if OPENSSL_API_COMPAT < 0x10100000L
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define OPENSSL_add_all_algorithms_conf() \
|
||||
# define OPENSSL_add_all_algorithms_conf() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
|
||||
| OPENSSL_INIT_ADD_ALL_DIGESTS \
|
||||
| OPENSSL_INIT_LOAD_CONFIG, NULL)
|
||||
# define OPENSSL_add_all_algorithms_noconf() \
|
||||
# define OPENSSL_add_all_algorithms_noconf() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
|
||||
| OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
|
||||
|
||||
# ifdef OPENSSL_LOAD_CONF
|
||||
# define OpenSSL_add_all_algorithms() \
|
||||
# ifdef OPENSSL_LOAD_CONF
|
||||
# define OpenSSL_add_all_algorithms() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
|
||||
| OPENSSL_INIT_ADD_ALL_DIGESTS \
|
||||
| OPENSSL_INIT_LOAD_CONFIG, NULL)
|
||||
# else
|
||||
# define OpenSSL_add_all_algorithms() \
|
||||
# else
|
||||
# define OpenSSL_add_all_algorithms() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
|
||||
| OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# define OpenSSL_add_all_ciphers() \
|
||||
# define OpenSSL_add_all_ciphers() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL)
|
||||
# define OpenSSL_add_all_digests() \
|
||||
# define OpenSSL_add_all_digests() \
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
|
||||
|
||||
# define EVP_cleanup() while(0) continue
|
||||
# else
|
||||
int OPENSSL_add_all_algorithms_conf(void);
|
||||
int OPENSSL_add_all_algorithms_noconf(void);
|
||||
int OpenSSL_add_all_algorithms(void);
|
||||
int OpenSSL_add_all_ciphers(void);
|
||||
int OPENSSL_add_all_digests(void);
|
||||
void OPENSSL_cleanup(void);
|
||||
# endif /* OPENSSL_NO_MACRO */
|
||||
# define EVP_cleanup() while(0) continue
|
||||
# endif /* OPENSSL_API_COMPAT < 0x10100000L */
|
||||
|
||||
int EVP_add_cipher(const EVP_CIPHER *cipher);
|
||||
@@ -1342,23 +1233,17 @@ void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth,
|
||||
# define EVP_PKEY_OP_TYPE_GEN \
|
||||
(EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN)
|
||||
|
||||
# ifndef OPENSSL_NO_MACRO
|
||||
# define EVP_PKEY_CTX_set_signature_md(ctx, md) \
|
||||
# define EVP_PKEY_CTX_set_signature_md(ctx, md) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
|
||||
EVP_PKEY_CTRL_MD, 0, (void *)md)
|
||||
|
||||
# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \
|
||||
# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
|
||||
EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd)
|
||||
|
||||
# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \
|
||||
# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \
|
||||
EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)key)
|
||||
# else
|
||||
int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
|
||||
int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **pmd);
|
||||
int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, int keylen);
|
||||
# endif
|
||||
|
||||
# define EVP_PKEY_CTRL_MD 1
|
||||
# define EVP_PKEY_CTRL_PEER_KEY 2
|
||||
|
||||
@@ -132,6 +132,7 @@ int ERR_load_SDF_strings(void);
|
||||
# define SDF_F_SDF_IMPORTKEYWITHISK_ECC 135
|
||||
# define SDF_F_SDF_IMPORTKEYWITHISK_RSA 136
|
||||
# define SDF_F_SDF_IMPORTKEYWITHKEK 137
|
||||
# define SDF_F_SDF_INTERNALDECRYPT_ECC 151
|
||||
# define SDF_F_SDF_INTERNALPRIVATEKEYOPERATION_RSA 138
|
||||
# define SDF_F_SDF_INTERNALPUBLICKEYOPERATION_RSA 147
|
||||
# define SDF_F_SDF_INTERNALSIGN_ECC 139
|
||||
@@ -258,8 +259,8 @@ int ERR_load_SDF_strings(void);
|
||||
# define SDF_R_VERIFICATION_FAILURE 141
|
||||
# define SDF_R_WRITE_FILE_FAILURE 142
|
||||
|
||||
# ifdef __cplusplus
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -50,6 +50,7 @@ extern "C" {
|
||||
EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \
|
||||
EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)info)
|
||||
|
||||
#if 0
|
||||
/*static*/ unsigned char *HKDF(const EVP_MD *evp_md,
|
||||
const unsigned char *salt, size_t salt_len,
|
||||
const unsigned char *key, size_t key_len,
|
||||
@@ -65,6 +66,7 @@ extern "C" {
|
||||
const unsigned char *prk, size_t prk_len,
|
||||
const unsigned char *info, size_t info_len,
|
||||
unsigned char *okm, size_t okm_len);
|
||||
#endif
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/*
|
||||
|
||||
@@ -41,9 +41,9 @@ extern "C" {
|
||||
*/
|
||||
# define OPENSSL_VERSION_NUMBER 0x1010004fL
|
||||
# ifdef OPENSSL_FIPS
|
||||
# define OPENSSL_VERSION_TEXT "GmSSL 2.0 - OpenSSL 1.1.0d-fips 26 Jan 2017"
|
||||
# define OPENSSL_VERSION_TEXT "GmSSL 2.0 - OpenSSL 1.1.0d-fips 07 Dec 2017"
|
||||
# else
|
||||
# define OPENSSL_VERSION_TEXT "GmSSL 2.0 - OpenSSL 1.1.0d 26 Jan 2017"
|
||||
# define OPENSSL_VERSION_TEXT "GmSSL 2.0 - OpenSSL 1.1.0d 07 Dec 2017"
|
||||
# endif
|
||||
|
||||
/*-
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/* Copyright (c) 2014, Google Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
||||
|
||||
#ifndef HEADER_POLY1305_H
|
||||
#define HEADER_POLY1305_H
|
||||
|
||||
#include <string.h>
|
||||
#include <openssl/base.h>
|
||||
#include <openssl/e_os2.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef uint8_t poly1305_state[512];
|
||||
|
||||
void CRYPTO_poly1305_init(poly1305_state* state,
|
||||
const uint8_t key[32]);
|
||||
void CRYPTO_poly1305_update(poly1305_state* state,
|
||||
const uint8_t* in,
|
||||
size_t in_len);
|
||||
void CRYPTO_poly1305_finish(poly1305_state* state,
|
||||
uint8_t mac[16]);
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -75,7 +75,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct /*__attribute__((packed))*/ DeviceInfo_st {
|
||||
typedef struct DeviceInfo_st {
|
||||
unsigned char IssuerName[40];
|
||||
unsigned char DeviceName[16];
|
||||
unsigned char DeviceSerial[16]; /* 8-char date +
|
||||
@@ -92,13 +92,13 @@ typedef struct /*__attribute__((packed))*/ DeviceInfo_st {
|
||||
unsigned int BufferSize;
|
||||
} DEVICEINFO;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ RSArefPublicKey_st {
|
||||
typedef struct RSArefPublicKey_st {
|
||||
unsigned int bits;
|
||||
unsigned char m[RSAref_MAX_LEN];
|
||||
unsigned char e[RSAref_MAX_LEN];
|
||||
} RSArefPublicKey;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ RSArefPrivateKey_st {
|
||||
typedef struct RSArefPrivateKey_st {
|
||||
unsigned int bits;
|
||||
unsigned char m[RSAref_MAX_LEN];
|
||||
unsigned char e[RSAref_MAX_LEN];
|
||||
@@ -108,18 +108,18 @@ typedef struct /*__attribute__((packed))*/ RSArefPrivateKey_st {
|
||||
unsigned char coef[RSAref_MAX_PLEN];
|
||||
} RSArefPrivateKey;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ ECCrefPublicKey_st {
|
||||
typedef struct ECCrefPublicKey_st {
|
||||
unsigned int bits;
|
||||
unsigned char x[ECCref_MAX_LEN];
|
||||
unsigned char y[ECCref_MAX_LEN];
|
||||
} ECCrefPublicKey;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ ECCrefPrivateKey_st {
|
||||
typedef struct ECCrefPrivateKey_st {
|
||||
unsigned int bits;
|
||||
unsigned char K[ECCref_MAX_LEN];
|
||||
} ECCrefPrivateKey;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ ECCCipher_st {
|
||||
typedef struct ECCCipher_st {
|
||||
unsigned char x[ECCref_MAX_LEN];
|
||||
unsigned char y[ECCref_MAX_LEN];
|
||||
unsigned char M[32];
|
||||
@@ -127,12 +127,12 @@ typedef struct /*__attribute__((packed))*/ ECCCipher_st {
|
||||
unsigned char C[1];
|
||||
} ECCCipher;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ ECCSignature_st {
|
||||
typedef struct ECCSignature_st {
|
||||
unsigned char r[ECCref_MAX_LEN];
|
||||
unsigned char s[ECCref_MAX_LEN];
|
||||
} ECCSignature;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ SDF_ENVELOPEDKEYBLOB {
|
||||
typedef struct SDF_ENVELOPEDKEYBLOB {
|
||||
unsigned long Version;
|
||||
unsigned long ulSymmAlgID;
|
||||
ECCCipher ECCCipehrBlob;
|
||||
@@ -375,6 +375,14 @@ int SDF_ExternalEncrypt_ECC(
|
||||
unsigned int uiDataLength,
|
||||
ECCCipher *pucEncData);
|
||||
|
||||
int SDF_InternalDecrypt_ECC(
|
||||
void *hSessionHandle,
|
||||
unsigned int uiISKIndex,
|
||||
unsigned int uiAlgID,
|
||||
ECCCipher *pucEncData,
|
||||
unsigned char *pucData,
|
||||
unsigned int *uiDataLength);
|
||||
|
||||
int SDF_Encrypt(
|
||||
void *hSessionHandle,
|
||||
void *hKeyHandle,
|
||||
|
||||
@@ -107,11 +107,10 @@ typedef struct {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* C code */
|
||||
void serpent_set_encrypt_key(serpent_key_t *key, const unsigned char *user_key);
|
||||
void serpent_set_decrypt_key(serpent_key_t *key, const unsigned char *user_key);
|
||||
void serpent_encrypt(const void *in, void *out, serpent_key_t *key);
|
||||
void serpent_decrypt(const void *in, void *out, serpent_key_t *key);
|
||||
void serpent_set_encrypt_key(serpent_key_t *key, const unsigned char *user_key);
|
||||
void serpent_set_decrypt_key(serpent_key_t *key, const unsigned char *user_key);
|
||||
void serpent_encrypt(const void *in, void *out, serpent_key_t *key);
|
||||
void serpent_decrypt(const void *in, void *out, serpent_key_t *key);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -406,13 +406,13 @@ typedef HANDLE HCONTAINER;
|
||||
|
||||
/* SDF */
|
||||
|
||||
#define RSAref_MAX_BITS 2048
|
||||
#define RSAref_MAX_LEN ((RSAref_MAX_BITS + 7) / 8)
|
||||
#define RSAref_MAX_PBITS ((RSAref_MAX_BITS + 1) / 2)
|
||||
#define RSAref_MAX_PLEN ((RSAref_MAX_PBITS + 7)/ 8)
|
||||
#define RSAref_MAX_BITS 2048
|
||||
#define RSAref_MAX_LEN ((RSAref_MAX_BITS + 7) / 8)
|
||||
#define RSAref_MAX_PBITS ((RSAref_MAX_BITS + 1) / 2)
|
||||
#define RSAref_MAX_PLEN ((RSAref_MAX_PBITS + 7)/ 8)
|
||||
|
||||
#define ECCref_MAX_BITS 512
|
||||
#define ECCref_MAX_LEN ((ECCref_MAX_BITS+7) / 8)
|
||||
#define ECCref_MAX_BITS 512
|
||||
#define ECCref_MAX_LEN ((ECCref_MAX_BITS+7) / 8)
|
||||
|
||||
|
||||
/* SAF */
|
||||
|
||||
@@ -63,12 +63,12 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct /*__attribute__((packed))*/ Struct_Version{
|
||||
typedef struct Struct_Version{
|
||||
BYTE major;
|
||||
BYTE minor;
|
||||
} VERSION;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_DEVINFO {
|
||||
typedef struct Struct_DEVINFO {
|
||||
VERSION Version;
|
||||
CHAR Manufacturer[64];
|
||||
CHAR Issuer[64];
|
||||
@@ -87,14 +87,14 @@ typedef struct /*__attribute__((packed))*/ Struct_DEVINFO {
|
||||
BYTE Reserved[64];
|
||||
} DEVINFO, *PDEVINFO;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_RSAPUBLICKEYBLOB {
|
||||
typedef struct Struct_RSAPUBLICKEYBLOB {
|
||||
ULONG AlgID;
|
||||
ULONG BitLen;
|
||||
BYTE Modulus[MAX_RSA_MODULUS_LEN];
|
||||
BYTE PublicExponent[MAX_RSA_EXPONENT_LEN];
|
||||
} RSAPUBLICKEYBLOB, *PRSAPUBLICKEYBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_RSAPRIVATEKEYBLOB {
|
||||
typedef struct Struct_RSAPRIVATEKEYBLOB {
|
||||
ULONG AlgID;
|
||||
ULONG BitLen;
|
||||
BYTE Modulus[MAX_RSA_MODULUS_LEN];
|
||||
@@ -107,18 +107,18 @@ typedef struct /*__attribute__((packed))*/ Struct_RSAPRIVATEKEYBLOB {
|
||||
BYTE Coefficient[MAX_RSA_MODULUS_LEN/2];
|
||||
} RSAPRIVATEKEYBLOB, *PRSAPRIVATEKEYBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_ECCPUBLICKEYBLOB {
|
||||
typedef struct Struct_ECCPUBLICKEYBLOB {
|
||||
ULONG BitLen;
|
||||
BYTE XCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
|
||||
BYTE YCoordinate[ECC_MAX_YCOORDINATE_BITS_LEN/8];
|
||||
} ECCPUBLICKEYBLOB, *PECCPUBLICKEYBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_ECCPRIVATEKEYBLOB {
|
||||
typedef struct Struct_ECCPRIVATEKEYBLOB {
|
||||
ULONG BitLen;
|
||||
BYTE PrivateKey[ECC_MAX_MODULUS_BITS_LEN/8];
|
||||
} ECCPRIVATEKEYBLOB, *PECCPRIVATEKEYBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_ECCCIPHERBLOB {
|
||||
typedef struct Struct_ECCCIPHERBLOB {
|
||||
BYTE XCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
|
||||
BYTE YCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
|
||||
BYTE HASH[32];
|
||||
@@ -126,19 +126,19 @@ typedef struct /*__attribute__((packed))*/ Struct_ECCCIPHERBLOB {
|
||||
BYTE Cipher[1];
|
||||
} ECCCIPHERBLOB, *PECCCIPHERBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_ECCSIGNATUREBLOB {
|
||||
typedef struct Struct_ECCSIGNATUREBLOB {
|
||||
BYTE r[ECC_MAX_XCOORDINATE_BITS_LEN/8];
|
||||
BYTE s[ECC_MAX_XCOORDINATE_BITS_LEN/8];
|
||||
} ECCSIGNATUREBLOB, *PECCSIGNATUREBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_BLOCKCIPHERPARAM {
|
||||
typedef struct Struct_BLOCKCIPHERPARAM {
|
||||
BYTE IV[MAX_IV_LEN];
|
||||
ULONG IVLen;
|
||||
ULONG PaddingType;
|
||||
ULONG FeedBitLen;
|
||||
} BLOCKCIPHERPARAM, *PBLOCKCIPHERPARAM;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ SKF_ENVELOPEDKEYBLOB {
|
||||
typedef struct SKF_ENVELOPEDKEYBLOB {
|
||||
ULONG Version;
|
||||
ULONG ulSymmAlgID;
|
||||
ULONG ulBits;
|
||||
@@ -147,7 +147,7 @@ typedef struct /*__attribute__((packed))*/ SKF_ENVELOPEDKEYBLOB {
|
||||
ECCCIPHERBLOB ECCCipherBlob;
|
||||
} ENVELOPEDKEYBLOB, *PENVELOPEDKEYBLOB;
|
||||
|
||||
typedef struct /*__attribute__((packed))*/ Struct_FILEATTRIBUTE {
|
||||
typedef struct Struct_FILEATTRIBUTE {
|
||||
CHAR FileName[MAX_FILE_NAME_SIZE];
|
||||
ULONG FileSize;
|
||||
ULONG ReadRights;
|
||||
|
||||
@@ -142,9 +142,6 @@ int SM2_compute_share_key(unsigned char *out, size_t *outlen,
|
||||
|
||||
typedef struct sm2_kap_ctx_st SM2_KAP_CTX;
|
||||
|
||||
int SM2_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
|
||||
const EC_KEY *ec_key, void *(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen));
|
||||
|
||||
int SM2_KAP_CTX_init(SM2_KAP_CTX *ctx,
|
||||
EC_KEY *ec_key, const char *id, size_t idlen,
|
||||
EC_KEY *remote_pubkey, const char *rid, size_t ridlen,
|
||||
@@ -197,7 +194,6 @@ void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
#define EVP_PKEY_CTRL_GET_SIGNER_ZID (EVP_PKEY_ALG_CTRL + 14)
|
||||
#define EVP_PKEY_CTRL_EC_ENCRYPT_PARAM (EVP_PKEY_ALG_CTRL + 15)
|
||||
|
||||
#ifndef OPENSSL_NO_MACRO
|
||||
#define EVP_PKEY_CTX_set_ec_scheme(ctx, scheme) \
|
||||
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \
|
||||
EVP_PKEY_OP_SIGN|EVP_PKEY_OP_SIGNCTX| \
|
||||
@@ -245,16 +241,6 @@ void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
EVP_PKEY_OP_ENCRYPT|EVP_PKEY_OP_DECRYPT, \
|
||||
EVP_PKEY_CTRL_EC_ENCRYPT_PARAM, -2, NULL)
|
||||
|
||||
#else
|
||||
int EVP_PKEY_CTX_set_ec_scheme(EVP_PKEY_CTX *ctx, int scheme);
|
||||
int EVP_PKEY_CTX_get_ec_scheme(EVP_PKEY_CTX *ctx, int scheme);
|
||||
int EVP_PKEY_CTX_set_signer_id(EVP_PKEY_CTX *ctx, const char *id);
|
||||
int EVP_PKEY_CTX_get_signer_id(EVP_PKEY_CTX *ctx, char **pid);
|
||||
int EVP_PKEY_CTX_get_signer_zid(EVP_PKEY_CTX *ctx, unsigned char **pzid);
|
||||
int EVP_PKEY_CTX_set_ec_encrypt_param(EVP_PKEY_CTX *ctx, int param);
|
||||
int EVP_PKEY_CTX_get_ec_encrypt_param(EVP_PKEY_CTX *ctx);
|
||||
#endif
|
||||
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
/*
|
||||
|
||||
@@ -1440,9 +1440,6 @@ void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,
|
||||
size_t *len);
|
||||
__owur int SSL_copy_session_id(SSL *to, const SSL *from);
|
||||
__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
|
||||
#ifndef OPENSSL_NO_GMTLS_METHOD
|
||||
__owur X509 *SSL_SESSION_get0_peer_extra(SSL_SESSION *s);
|
||||
#endif
|
||||
__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx,
|
||||
unsigned int sid_ctx_len);
|
||||
__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.] */
|
||||
|
||||
#ifndef OPENSSL_HEADER_THREAD_H
|
||||
#define OPENSSL_HEADER_THREAD_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <openssl/base.h>
|
||||
#include <openssl/e_os2.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(OPENSSL_NO_THREADS)
|
||||
typedef struct crypto_mutex_st {
|
||||
char padding; /* Empty structs have different sizes in C and C++. */
|
||||
} CRYPTO_MUTEX;
|
||||
#elif defined(OPENSSL_WINDOWS)
|
||||
/* CRYPTO_MUTEX can appear in public header files so we really don't want to
|
||||
* pull in windows.h. It's statically asserted that this structure is large
|
||||
* enough to contain a Windows SRWLOCK by thread_win.c. */
|
||||
typedef union crypto_mutex_st {
|
||||
void *handle;
|
||||
} CRYPTO_MUTEX;
|
||||
#elif defined(__MACH__) && defined(__APPLE__)
|
||||
typedef pthread_rwlock_t CRYPTO_MUTEX;
|
||||
#else
|
||||
/* It is reasonable to include pthread.h on non-Windows systems, however the
|
||||
* |pthread_rwlock_t| that we need is hidden under feature flags, and we can't
|
||||
* ensure that we'll be able to get it. It's statically asserted that this
|
||||
* structure is large enough to contain a |pthread_rwlock_t| by
|
||||
* thread_pthread.c. */
|
||||
typedef union crypto_mutex_st {
|
||||
double alignment;
|
||||
uint8_t padding[3*sizeof(int) + 5*sizeof(unsigned) + 16 + 8];
|
||||
} CRYPTO_MUTEX;
|
||||
#endif
|
||||
|
||||
/* CRYPTO_refcount_t is the type of a reference count.
|
||||
*
|
||||
* Since some platforms use C11 atomics to access this, it should have the
|
||||
* _Atomic qualifier. However, this header is included by C++ programs as well
|
||||
* as C code that might not set -std=c11. So, in practice, it's not possible to
|
||||
* do that. Instead we statically assert that the size and native alignment of
|
||||
* a plain uint32_t and an _Atomic uint32_t are equal in refcount_c11.c. */
|
||||
typedef uint32_t CRYPTO_refcount_t;
|
||||
|
||||
|
||||
/* Deprecated functions.
|
||||
*
|
||||
* Historically, OpenSSL required callers to provide locking callbacks.
|
||||
* BoringSSL is thread-safe by default, but some old code calls these functions
|
||||
* and so no-op implementations are provided. */
|
||||
|
||||
/* These defines do nothing but are provided to make old code easier to
|
||||
* compile. */
|
||||
#define CRYPTO_LOCK 1
|
||||
#define CRYPTO_UNLOCK 2
|
||||
#define CRYPTO_READ 4
|
||||
#define CRYPTO_WRITE 8
|
||||
|
||||
/* CRYPTO_num_locks returns one. (This is non-zero that callers who allocate
|
||||
* sizeof(lock) times this value don't get zero and then fail because malloc(0)
|
||||
* returned NULL.) */
|
||||
//OPENSSL_EXPORT int CRYPTO_num_locks(void);
|
||||
|
||||
#if 0
|
||||
/* CRYPTO_set_locking_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_locking_callback(
|
||||
void (*func)(int mode, int lock_num, const char *file, int line));
|
||||
|
||||
/* CRYPTO_set_add_lock_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_add_lock_callback(int (*func)(
|
||||
int *num, int amount, int lock_num, const char *file, int line));
|
||||
|
||||
/* CRYPTO_get_locking_callback returns NULL. */
|
||||
OPENSSL_EXPORT void (*CRYPTO_get_locking_callback(void))(int mode, int lock_num,
|
||||
const char *file,
|
||||
int line);
|
||||
|
||||
/* CRYPTO_get_lock_name returns a fixed, dummy string. */
|
||||
OPENSSL_EXPORT const char *CRYPTO_get_lock_name(int lock_num);
|
||||
|
||||
/* CRYPTO_THREADID_set_callback returns one. */
|
||||
OPENSSL_EXPORT int CRYPTO_THREADID_set_callback(
|
||||
void (*threadid_func)(CRYPTO_THREADID *threadid));
|
||||
|
||||
/* CRYPTO_THREADID_set_numeric does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id,
|
||||
unsigned long val);
|
||||
|
||||
/* CRYPTO_THREADID_set_pointer does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
|
||||
|
||||
/* CRYPTO_THREADID_current does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
|
||||
|
||||
/* CRYPTO_set_id_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_id_callback(unsigned long (*func)(void));
|
||||
|
||||
typedef struct {
|
||||
int references;
|
||||
struct CRYPTO_dynlock_value *data;
|
||||
} CRYPTO_dynlock;
|
||||
|
||||
/* CRYPTO_set_dynlock_create_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_dynlock_create_callback(
|
||||
struct CRYPTO_dynlock_value *(*dyn_create_function)(const char *file,
|
||||
int line));
|
||||
|
||||
/* CRYPTO_set_dynlock_lock_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)(
|
||||
int mode, struct CRYPTO_dynlock_value *l, const char *file, int line));
|
||||
|
||||
/* CRYPTO_set_dynlock_destroy_callback does nothing. */
|
||||
OPENSSL_EXPORT void CRYPTO_set_dynlock_destroy_callback(
|
||||
void (*dyn_destroy_function)(struct CRYPTO_dynlock_value *l,
|
||||
const char *file, int line));
|
||||
|
||||
/* CRYPTO_get_dynlock_create_callback returns NULL. */
|
||||
OPENSSL_EXPORT struct CRYPTO_dynlock_value *(
|
||||
*CRYPTO_get_dynlock_create_callback(void))(const char *file, int line);
|
||||
|
||||
/* CRYPTO_get_dynlock_lock_callback returns NULL. */
|
||||
OPENSSL_EXPORT void (*CRYPTO_get_dynlock_lock_callback(void))(
|
||||
int mode, struct CRYPTO_dynlock_value *l, const char *file, int line);
|
||||
|
||||
/* CRYPTO_get_dynlock_destroy_callback returns NULL. */
|
||||
OPENSSL_EXPORT void (*CRYPTO_get_dynlock_destroy_callback(void))(
|
||||
struct CRYPTO_dynlock_value *l, const char *file, int line);
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern C */
|
||||
#endif
|
||||
|
||||
#endif /* OPENSSL_HEADER_THREAD_H */
|
||||
Reference in New Issue
Block a user