Merge pull request #3 from guanzhi/master

upgrade
This commit is contained in:
Gorachya
2019-02-02 13:56:32 +08:00
committed by GitHub
31 changed files with 7612 additions and 6510 deletions

View File

@@ -910,7 +910,7 @@ sub vms_info {
# systems are perfectly capable of executing binaries targeting
# Froyo. Keep in mind that in the nutshell Android builds are
# about JNI, i.e. shared libraries, not applications.
cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
cflags => add(picker(default => "-fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
bin_cflags => "-pie",
},
"android-x86" => {
@@ -950,7 +950,7 @@ sub vms_info {
"android64" => {
inherit_from => [ "linux-generic64" ],
cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
cflags => add(picker(default => "-fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
bin_cflags => "-pie",
},
"android64-aarch64" => {

View File

@@ -11,7 +11,7 @@ IF[{- !$disabled{apps} -}]
s_client.c s_server.c s_time.c sess_id.c smime.c speed.c spkac.c \
srp.c ts.c verify.c version.c x509.c rehash.c \
apps.c opt.c s_cb.c s_socket.c \
app_rand.c cpk.c otp.c fpe.c \
app_rand.c cpk.c otp.c fpe.c paiutl.c \
sm2.c sm2utl.c sdf.c skf.c \
sm9param.c gensm9.c sm9.c sm9utl.c \
{- $target{apps_aux_src} -}

277
apps/paiutl.c Normal file
View File

@@ -0,0 +1,277 @@
/* ====================================================================
* Copyright (c) 2014 - 2019 The GmSSL Project. All rights reserved.
*
* 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 above 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 acknowledgment:
* "This product includes software developed by the GmSSL Project.
* (http://gmssl.org/)"
*
* 4. The name "GmSSL Project" must not be used to endorse or promote
* products derived from this software without prior written
* permission. For written permission, please contact
* guanzhi1980@gmail.com.
*
* 5. Products derived from this software may not be called "GmSSL"
* nor may "GmSSL" appear in their names without prior written
* permission of the GmSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the GmSSL Project
* (http://gmssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE GmSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED 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 GmSSL PROJECT OR
* ITS 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.
* ====================================================================
*/
#include <openssl/opensslconf.h>
#ifdef OPENSSL_NO_PAILLIER
NON_EMPTY_TRANSLATION_UNIT
#else
# include <ctype.h>
# include <stdio.h>
# include <string.h>
# include <openssl/bio.h>
# include <openssl/err.h>
# include <openssl/evp.h>
# include <openssl/paillier.h>
# include "apps.h"
#define KEY_NONE 0
#define KEY_PRIVKEY 1
#define KEY_PUBKEY 2
#define KEY_CERT 3
typedef enum OPTION_choice {
OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
OPT_IN, OPT_OUT, OPT_ADD, OPT_SCALAR_MUL,
OPT_PUBIN, OPT_INKEY, OPT_KEYFORM, OPT_PASSIN,
} OPTION_CHOICE;
OPTIONS paiutl_options[] = {
{"help", OPT_HELP, '-', "Display this summary"},
{"in", OPT_IN, '<', "Input file - default stdin"},
{"out", OPT_OUT, '>', "Output file - default stdout"},
{"add", OPT_ADD, '-', "Add ciphertexts"},
{"scalar_mul", OPT_SCALAR_MUL, 's', "Scalar multiply"},
{"pubin", OPT_PUBIN, '-', "Input is a public key"},
{"inkey", OPT_INKEY, 's', "Input private key file"},
{"keyform", OPT_KEYFORM, 'E', "Private key format - default PEM"},
{"passin", OPT_PASSIN, 's', "Input file pass phrase source"},
{NULL}
};
int paiutl_main(int argc, char **argv)
{
int ret = 1;
OPTION_CHOICE o;
char *prog;
char *infile = NULL;
char *outfile = NULL;
BIO *in = NULL;
BIO *out = NULL;
int op = PAILLIER_OP_UNDEF;
int scalar = 1;
char *keyfile = NULL;
int key_type = KEY_PRIVKEY;
int keyform = FORMAT_PEM;
char *passinarg = NULL;
char *passin = NULL;
EVP_PKEY *pkey = NULL;
PAILLIER *key;
ASN1_INTEGER *ai = NULL;
BIGNUM *a = NULL;
BIGNUM *r = NULL;
prog = opt_init(argc, argv, paiutl_options);
while ((o = opt_next()) != OPT_EOF) {
switch (o) {
case OPT_EOF:
case OPT_ERR:
opthelp:
BIO_printf(bio_err, "%s: Use -help for summary.\n", prog);
goto end;
case OPT_HELP:
opt_help(paiutl_options);
ret = 0;
goto end;
case OPT_IN:
infile = opt_arg();
break;
case OPT_OUT:
outfile = opt_arg();
break;
case OPT_ADD:
op = PAILLIER_OP_ADD;
break;
case OPT_SCALAR_MUL:
op = PAILLIER_OP_SCALAR_MUL;
scalar = atoi(opt_arg());
break;
case OPT_INKEY:
keyfile = opt_arg();
break;
case OPT_PUBIN:
key_type = KEY_PUBKEY;
break;
case OPT_KEYFORM:
if (!opt_format(opt_arg(), OPT_FMT_PDE, &keyform))
goto opthelp;
break;
case OPT_PASSIN:
passinarg = opt_arg();
break;
}
}
argc = opt_num_rest();
if (argc != 0)
goto opthelp;
app_RAND_load_file(NULL, 0);
if (!(in = bio_open_default(infile, 'r', FORMAT_BINARY))) {
BIO_printf(bio_err, "Error reading input file\n");
goto end;
}
if (!(out = bio_open_default(outfile, 'w', FORMAT_BINARY))) {
BIO_printf(bio_err, "Error writting output file\n");
goto end;
}
if (key_type == KEY_PRIVKEY) {
if (!app_passwd(passinarg, NULL, &passin, NULL)) {
BIO_printf(bio_err, "Error getting password\n");
goto end;
}
if (!(pkey = load_key(keyfile, keyform, 0, passin, NULL, "Private Key"))) {
BIO_printf(bio_err, "Error reading private key\n");
goto end;
}
} else {
if (!(pkey = load_pubkey(keyfile, keyform, 0, NULL, NULL, "Public Key"))) {
BIO_printf(bio_err, "Error reading public key\n");
goto end;
}
}
if (!(key = EVP_PKEY_get0_PAILLIER(pkey))) {
BIO_printf(bio_err, "Error key type\n");
goto end;
}
/* get the first oprand */
if (!(ai = ASN1_item_d2i_bio(ASN1_ITEM_rptr(ASN1_INTEGER), in, NULL))) {
ERR_print_errors(bio_err);
goto end;
}
if (!(r = ASN1_INTEGER_to_BN(ai, NULL))) {
ERR_print_errors(bio_err);
goto end;
}
if (!(a = BN_new())) {
goto end;
}
if (op == PAILLIER_OP_ADD) {
/* add the second oprand */
if (!ASN1_item_d2i_bio(ASN1_ITEM_rptr(ASN1_INTEGER), in, &ai)) {
ERR_print_errors(bio_err);
goto end;
}
if (!ASN1_INTEGER_to_BN(ai, a)) {
ERR_print_errors(bio_err);
goto end;
}
if (!PAILLIER_ciphertext_add(r, r, a, key)) {
ERR_print_errors(bio_err);
goto end;
}
/* (optional) continue */
while (ASN1_item_d2i_bio(ASN1_ITEM_rptr(ASN1_INTEGER), in, &ai)) {
if (!ASN1_INTEGER_to_BN(ai, a)) {
ERR_print_errors(bio_err);
goto end;
}
if (!PAILLIER_ciphertext_add(r, r, a, key)) {
ERR_print_errors(bio_err);
goto end;
}
}
/* output sum */
if (!BN_to_ASN1_INTEGER(r, ai)
|| !ASN1_item_i2d_bio(ASN1_ITEM_rptr(ASN1_INTEGER), out, ai)) {
ERR_print_errors(bio_err);
goto end;
}
} else if (op == PAILLIER_OP_SCALAR_MUL) {
/* scalar mul the first ciphertext */
if (!BN_set_word(a, scalar)) {
ERR_print_errors(bio_err);
goto end;
}
if (!PAILLIER_ciphertext_scalar_mul(r, a, r, key)) {
ERR_print_errors(bio_err);
goto end;
}
if (!BN_to_ASN1_INTEGER(r, ai)
|| !ASN1_item_i2d_bio(ASN1_ITEM_rptr(ASN1_INTEGER), out, ai)) {
ERR_print_errors(bio_err);
goto end;
}
/* (optional) do more, do not decrypt the output with `pkeyutl` */
while (ASN1_item_d2i_bio(ASN1_ITEM_rptr(ASN1_INTEGER), in, &ai)) {
if (!ASN1_INTEGER_to_BN(ai, r)
|| !PAILLIER_ciphertext_scalar_mul(r, r, a, key)
|| !BN_to_ASN1_INTEGER(r, ai)
|| !ASN1_item_i2d_bio(ASN1_ITEM_rptr(ASN1_INTEGER), out, ai)) {
ERR_print_errors(bio_err);
goto end;
}
}
} else {
BIO_printf(bio_err, "No operation assigned\n");
goto end;
}
ret = 0;
end:
OPENSSL_free(passin);
ASN1_INTEGER_free(ai);
BN_free(a);
BN_free(r);
return ret;
}
#endif

View File

@@ -501,6 +501,6 @@ static int do_keyop(EVP_PKEY_CTX *ctx, int pkey_op,
break;
}
if (!rv) ERR_print_errors_fp(stderr);
if (!rv) ERR_print_errors_fp(stderr);
return rv;
}

View File

@@ -51,6 +51,7 @@ extern int list_main(int argc, char *argv[]);
extern int nseq_main(int argc, char *argv[]);
extern int ocsp_main(int argc, char *argv[]);
extern int otp_main(int argc, char *argv[]);
extern int paiutl_main(int argc, char *argv[]);
extern int passwd_main(int argc, char *argv[]);
extern int pkcs12_main(int argc, char *argv[]);
extern int pkcs7_main(int argc, char *argv[]);
@@ -111,6 +112,7 @@ extern OPTIONS list_options[];
extern OPTIONS nseq_options[];
extern OPTIONS ocsp_options[];
extern OPTIONS otp_options[];
extern OPTIONS paiutl_options[];
extern OPTIONS passwd_options[];
extern OPTIONS pkcs12_options[];
extern OPTIONS pkcs7_options[];
@@ -201,6 +203,7 @@ static FUNCTION functions[] = {
#ifndef OPENSSL_NO_OTP
{ FT_general, "otp", otp_main, otp_options },
#endif
{ FT_general, "paiutl", paiutl_main, paiutl_options },
{ FT_general, "passwd", passwd_main, passwd_options },
#ifndef OPENSSL_NO_DES
{ FT_general, "pkcs12", pkcs12_main, pkcs12_options },

View File

@@ -846,6 +846,9 @@ static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int multirdn,
if ((tmp != NULL) && strcmp(tmp, "no") == 0)
no_prompt = 1;
#if !defined(OPENSSL_NO_SKF) || !defined(OPENSSL_NO_SDF)
if (!subj) {
#endif
dn_sect = NCONF_get_string(req_conf, SECTION, DISTINGUISHED_NAME);
if (dn_sect == NULL) {
BIO_printf(bio_err, "unable to find '%s' in config\n",
@@ -857,6 +860,9 @@ static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int multirdn,
BIO_printf(bio_err, "unable to get '%s' section\n", dn_sect);
goto err;
}
#if !defined(OPENSSL_NO_SKF) || !defined(OPENSSL_NO_SDF)
}
#endif
attr_sect = NCONF_get_string(req_conf, SECTION, ATTRIBUTES);
if (attr_sect == NULL) {

View File

@@ -653,6 +653,9 @@ static char *srtp_profiles = NULL;
typedef enum OPTION_choice {
OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, OPT_ENGINE,
#ifndef OPENSSL_NO_SKF
OPT_CONFIG,
#endif
OPT_4, OPT_6, OPT_ACCEPT, OPT_PORT, OPT_UNIX, OPT_UNLINK, OPT_NACCEPT,
OPT_VERIFY, OPT_UPPER_V_VERIFY, OPT_CONTEXT, OPT_CERT, OPT_CRL,
OPT_CRL_DOWNLOAD, OPT_SERVERINFO, OPT_CERTFORM, OPT_KEY, OPT_KEYFORM,
@@ -866,6 +869,9 @@ OPTIONS s_server_options[] = {
"Set the advertised protocols for the ALPN extension (comma-separated list)"},
#ifndef OPENSSL_NO_ENGINE
{"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"},
# ifndef OPENSSL_NO_SKF
{"config", OPT_CONFIG, 's', "Engine config file"},
# endif
#endif
{NULL, OPT_EOF, 0, NULL}
};
@@ -943,6 +949,10 @@ int s_server_main(int argc, char *argv[])
int no_resume_ephemeral = 0;
unsigned int split_send_fragment = 0, max_pipelines = 0;
const char *s_serverinfo_file = NULL;
#ifndef OPENSSL_NO_SKF
CONF *conf = NULL;
char *configfile = default_config_file;
#endif
/* Init of few remaining global variables */
local_argc = argc;
@@ -1388,6 +1398,11 @@ int s_server_main(int argc, char *argv[])
case OPT_ENGINE:
engine = setup_engine(opt_arg(), 1);
break;
#ifndef OPENSSL_NO_SKF
case OPT_CONFIG:
configfile = opt_arg();
break;
#endif
case OPT_RAND:
inrand = opt_arg();
break;
@@ -1447,6 +1462,16 @@ int s_server_main(int argc, char *argv[])
argc = opt_num_rest();
argv = opt_rest();
#ifndef OPENSSL_NO_SKF
if (engine)
BIO_printf(bio_err, "Using configuration from %s\n", configfile);
if ((conf = app_load_config(configfile)) == NULL)
goto end;
if (configfile != default_config_file && !app_load_modules(conf))
goto end;
#endif
#ifndef OPENSSL_NO_DTLS
if (www && socket_type == SOCK_DGRAM) {
BIO_printf(bio_err, "Can't use -HTTP, -www or -WWW with DTLS\n");
@@ -1981,6 +2006,9 @@ int s_server_main(int argc, char *argv[])
bio_s_msg = NULL;
#ifdef CHARSET_EBCDIC
BIO_meth_free(methods_ebcdic);
#endif
#ifndef OPENSSL_NO_SKF
NCONF_free(conf);
#endif
return (ret);
}

1197
apps/skf.c

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ LIBS=../../libcrypto
SOURCE[../../libcrypto]=\
ec_lib.c ecp_smpl.c ecp_mont.c ecp_nist.c ec_cvt.c ec_mult.c \
ec_err.c ec_curve.c ec_check.c ec_print.c ec_asn1.c ec_key.c \
ec2_smpl.c ec2_mult.c ec_ameth.c ec_pmeth.c eck_prn.c \
ec2_smpl.c ec2_mult.c ec_ameth.c ec_pmeth.c eck_prn.c ecp_sm2p256.c \
ecp_nistp224.c ecp_nistp256.c ecp_nistp521.c ecp_nistputil.c \
ecp_oct.c ec2_oct.c ec_oct.c ec_kmeth.c ecdh_ossl.c ecdh_kdf.c \
ecdsa_ossl.c ecdsa_sign.c ecdsa_vrf.c curve25519.c ecx_meth.c \

View File

@@ -3129,7 +3129,7 @@ static const ec_list_element curve_list[] = {
"RFC 5639 curve over a 512 bit prime field"},
#ifndef OPENSSL_NO_SM2
{NID_sm2p256v1, &_EC_SM2_PRIME_256V1.h,
# if defined(ECP_NISTZ256_ASM) && BN_BITS2 == 64
# if defined(ECP_NISTZ256_ASM) && BN_BITS2 == 64 && !defined(GMSSL_NO_TURBO)
EC_GFp_sm2z256_method,
# elif !defined(OPENSSL_NO_EC_NISTP_64_GCC_128)
EC_GFp_sm2p256_method,

View File

@@ -20,8 +20,13 @@
static const EC_KEY_METHOD openssl_ec_key_method = {
"OpenSSL EC_KEY method",
0,
0,0,0,0,0,0,
0, /* flags */
0, /* init */
0, /* finish */
0, /* copy */
0, /* set_group */
0, /* set_private */
0, /* set_public */
ossl_ec_key_gen,
ossl_ecdh_compute_key,
ossl_ecdsa_sign,

View File

@@ -241,7 +241,7 @@ struct ec_group_st {
enum {
PCT_none,
PCT_nistp224, PCT_nistp256, PCT_nistp521, PCT_nistz256,
//PCT_sm2p256,
PCT_sm2p256,
PCT_sm2z256,
PCT_ec
} pre_comp_type;
@@ -575,7 +575,12 @@ int ec_group_simple_order_bits(const EC_GROUP *group);
* \return EC_METHOD object
*/
const EC_METHOD *EC_GFp_nistz256_method(void);
#endif
#ifndef OPENSSL_NO_SM2
# if defined(ECP_NISTZ256_ASM) && BN_BITS2 == 64 && !defined(GMSSL_NO_TURBO)
const EC_METHOD *EC_GFp_sm2z256_method(void);
# endif
#endif
size_t ec_key_simple_priv2oct(const EC_KEY *eckey,

View File

@@ -420,10 +420,6 @@ int SM2CiphertextValue_get_ECCCipher(const SM2CiphertextValue *cv,
goto end;
}
if (ASN1_STRING_length(cv->hash) != 32) {
goto end;
}
/* SM2CiphertextValue ==> ECCCipher */
memset(ref, 0, sizeof(*ref));

View File

@@ -206,7 +206,7 @@ RSA *RSA_new_from_RSArefPrivateKey(const RSArefPrivateKey *ref)
rsa = NULL;
end:
RSA_free(ret);
RSA_free(rsa);
return ret;
}
@@ -244,7 +244,7 @@ int RSA_set_RSArefPrivateKey(RSA *rsa, const RSArefPrivateKey *ref)
|| !(p = BN_bin2bn(ref->prime[0], sizeof(ref->prime[0]), NULL))
|| !(q = BN_bin2bn(ref->prime[1], sizeof(ref->prime[1]), NULL))
|| !(dmp1 = BN_bin2bn(ref->pexp[0], sizeof(ref->pexp[0]), NULL))
|| !(dmq1 = BN_bin2bn(ref->pexp[0], sizeof(ref->pexp[1]), NULL))
|| !(dmq1 = BN_bin2bn(ref->pexp[1], sizeof(ref->pexp[1]), NULL))
|| !(iqmp = BN_bin2bn(ref->coef, sizeof(ref->coef), NULL))) {
GMAPIerr(GMAPI_F_RSA_SET_RSAREFPRIVATEKEY, ERR_R_BN_LIB);
goto end;

View File

@@ -107,15 +107,21 @@ static int do_paillier_print(BIO *bp, const PAILLIER *x, int off, int priv)
{
char *str;
int ret = 0;
int bits;
if (!BIO_indent(bp, off, 128))
goto end;
bits = x->bits;
if (bits == 0)
bits = BN_num_bytes(x->n) * 8;
if (priv && x->lambda) {
if (BIO_printf(bp, "Private-Key: (%d bit)\n", x->bits) <= 0)
if (BIO_printf(bp, "Private-Key: (%d bit)\n", bits) <= 0)
goto end;
str = "modulus";
} else {
if (BIO_printf(bp, "Public-Key: (%d bit)\n", x->bits) <= 0)
if (BIO_printf(bp, "Public-Key: (%d bit)\n", bits) <= 0)
goto end;
str = "Modulus";
}
@@ -125,7 +131,7 @@ static int do_paillier_print(BIO *bp, const PAILLIER *x, int off, int priv)
if (priv) {
if (!ASN1_bn_print(bp, "lambda:", x->lambda, NULL, off))
goto end;
if (!ASN1_bn_print(bp, "x:", x->x, NULL, off))
if (x->x && !ASN1_bn_print(bp, "x:", x->x, NULL, off))
goto end;
}
ret = 1;
@@ -158,6 +164,7 @@ static int paillier_priv_decode(EVP_PKEY *pkey, const PKCS8_PRIV_KEY_INFO *p8)
PAILLIERerr(PAILLIER_F_PAILLIER_PRIV_DECODE, ERR_R_PAILLIER_LIB);
return 0;
}
paillier->bits = BN_num_bytes(paillier->n) * 8;
EVP_PKEY_assign_PAILLIER(pkey, paillier);
return 1;
}

View File

@@ -1,6 +1,6 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -29,9 +29,11 @@ static ERR_STRING_DATA PAILLIER_str_functs[] = {
{ERR_FUNC(PAILLIER_F_PAILLIER_ENCRYPT), "PAILLIER_encrypt"},
{ERR_FUNC(PAILLIER_F_PAILLIER_GENERATE_KEY), "PAILLIER_generate_key"},
{ERR_FUNC(PAILLIER_F_PAILLIER_NEW), "PAILLIER_new"},
{ERR_FUNC(PAILLIER_F_PAILLIER_PLAINTEXT_SIZE), "paillier_plaintext_size"},
{ERR_FUNC(PAILLIER_F_PAILLIER_PRIV_DECODE), "paillier_priv_decode"},
{ERR_FUNC(PAILLIER_F_PAILLIER_PRIV_ENCODE), "paillier_priv_encode"},
{ERR_FUNC(PAILLIER_F_PAILLIER_PUB_DECODE), "paillier_pub_decode"},
{ERR_FUNC(PAILLIER_F_PAILLIER_SIZE), "PAILLIER_size"},
{ERR_FUNC(PAILLIER_F_PKEY_PAILLIER_CTRL), "pkey_paillier_ctrl"},
{ERR_FUNC(PAILLIER_F_PKEY_PAILLIER_CTRL_STR), "pkey_paillier_ctrl_str"},
{ERR_FUNC(PAILLIER_F_PKEY_PAILLIER_DECRYPT), "pkey_paillier_decrypt"},

View File

@@ -81,7 +81,20 @@ void PAILLIER_free(PAILLIER *key)
int PAILLIER_size(const PAILLIER *key)
{
return (BN_num_bits(key->n) * 2)/8;
ASN1_INTEGER a;
unsigned char buf[4] = {0xff};
int i;
if (!(i = BN_num_bytes(key->n))) {
PAILLIERerr(PAILLIER_F_PAILLIER_SIZE, ERR_R_BN_LIB);
return 0;
}
a.length = i * 2;
a.data = buf;
a.type = V_ASN1_INTEGER;
return i2d_ASN1_INTEGER(&a, NULL);
}
int PAILLIER_security_bits(const PAILLIER *key)
@@ -142,13 +155,11 @@ int PAILLIER_generate_key(PAILLIER *key, int bits)
/* n_plusone = n + 1 */
|| !BN_copy(key->n_plusone, key->n)
|| !BN_add_word(key->n_plusone, 1)
#if 0
/* x = (((g^lambda mod n^2) - 1)/n)^-1 mod n */
|| !BN_mod_exp(key->x, key->n_plusone, key->lambda, key->n_squared, bn_ctx)
|| !BN_sub_word(key->x, 1)
|| !BN_div(key->x, key->x, key->n)
|| !BN_div(key->x, NULL, key->x, key->n, bn_ctx)
|| !BN_mod_inverse(key->x, key->x, key->n, bn_ctx)
#endif
) {
PAILLIERerr(PAILLIER_F_PAILLIER_GENERATE_KEY, ERR_R_BN_LIB);
goto end;
@@ -176,9 +187,6 @@ int PAILLIER_encrypt(BIGNUM *c, const BIGNUM *m, PAILLIER *pub_key)
BIGNUM *r = NULL;
BN_CTX *bn_ctx = NULL;
fprintf(stderr, "%s %d: m = %s\n", __FILE__, __LINE__, BN_bn2hex(m));
if (BN_cmp(m, pub_key->n) >= 0) {
PAILLIERerr(PAILLIER_F_PAILLIER_ENCRYPT, PAILLIER_R_INVALID_PLAINTEXT);
goto end;
@@ -256,13 +264,6 @@ int PAILLIER_decrypt(BIGNUM *m, const BIGNUM *c, PAILLIER *key)
goto end;
}
/*
printf("m = %s\n", BN_bn2hex(m));
printf("c = %s\n", BN_bn2hex(c));
printf("lambda = %s\n", BN_bn2hex(key->lambda));
printf("n^2 = %s\n", BN_bn2hex(key->n_squared));
*/
if (!key->n_squared) {
if (!(key->n_squared = BN_new())) {
PAILLIERerr(PAILLIER_F_PAILLIER_DECRYPT, ERR_R_MALLOC_FAILURE);
@@ -274,35 +275,26 @@ printf("n^2 = %s\n", BN_bn2hex(key->n_squared));
}
}
fprintf(stderr, "%s %d: m = %s\n", __FILE__, __LINE__, BN_bn2hex(m));
if (!BN_mod_exp(m, c, key->lambda, key->n_squared, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_DECRYPT, ERR_R_BN_LIB);
goto end;
}
fprintf(stderr, "%s %d: m = %s\n", __FILE__, __LINE__, BN_bn2hex(m));
if (!BN_sub_word(m, 1)) {
PAILLIERerr(PAILLIER_F_PAILLIER_DECRYPT, ERR_R_BN_LIB);
goto end;
}
fprintf(stderr, "%s %d: m = %s\n", __FILE__, __LINE__, BN_bn2hex(m));
if (!BN_div(m, NULL, m, key->n, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_DECRYPT, ERR_R_BN_LIB);
goto end;
}
fprintf(stderr, "%s %d: m = %s\n", __FILE__, __LINE__, BN_bn2hex(m));
if (!BN_mod_mul(m, m, key->x, key->n, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_DECRYPT, ERR_R_BN_LIB);
goto end;
}
printf("m = %s\n", BN_bn2hex(m));
ret = 1;
end:
BN_CTX_free(bn_ctx);
@@ -329,6 +321,17 @@ int PAILLIER_ciphertext_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, PAILLIE
}
} while (BN_is_zero(k));
if (!key->n_squared) {
if (!(key->n_squared = BN_new())) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_ADD, ERR_R_MALLOC_FAILURE);
goto end;
}
if (!BN_sqr(key->n_squared, key->n, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_ADD, ERR_R_BN_LIB);
goto end;
}
}
if (!BN_mod_exp(k, k, key->n, key->n_squared, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_ADD, ERR_R_BN_LIB);
goto end;
@@ -371,6 +374,17 @@ int PAILLIER_ciphertext_scalar_mul(BIGNUM *r, const BIGNUM *scalar, const BIGNUM
}
} while (BN_is_zero(k));
if (!key->n_squared) {
if (!(key->n_squared = BN_new())) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_SCALAR_MUL, ERR_R_MALLOC_FAILURE);
goto end;
}
if (!BN_sqr(key->n_squared, key->n, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_SCALAR_MUL, ERR_R_BN_LIB);
goto end;
}
}
if (!BN_mod_exp(k, k, key->n, key->n_squared, bn_ctx)) {
PAILLIERerr(PAILLIER_F_PAILLIER_CIPHERTEXT_SCALAR_MUL, ERR_R_BN_LIB);
goto end;
@@ -390,7 +404,7 @@ int PAILLIER_ciphertext_scalar_mul(BIGNUM *r, const BIGNUM *scalar, const BIGNUM
end:
BN_clear_free(k);
BN_CTX_free(bn_ctx);
return 0;
return ret;
}
int PAILLIER_up_ref(PAILLIER *r)

View File

@@ -116,8 +116,11 @@ static int pkey_paillier_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *
{
int ret = 0;
PAILLIER *key = EVP_PKEY_get0_PAILLIER(EVP_PKEY_CTX_get0_pkey(ctx));
char *buf = NULL;
BIGNUM *m = NULL;
BIGNUM *c = NULL;
ASN1_INTEGER *ai = NULL;
int len;
if (!out) {
*outlen = PAILLIER_size(key);
@@ -127,26 +130,66 @@ static int pkey_paillier_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *
return 0;
}
if (!(m = BN_new()) || !(c = BN_new())) {
/* parse plaintext in decimal string format */
if (!(buf = OPENSSL_malloc(inlen + 1))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_MALLOC_FAILURE);
return 0;
}
memcpy(buf, in, inlen);
buf[inlen] = 0;
if (!BN_dec2bn(&m, buf)) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, PAILLIER_R_INVALID_PLAINTEXT);
goto end;
}
if (!BN_bin2bn(in, (int)inlen, m)) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_BN_LIB);
/* encrypt and encode in asn1 integer format */
if (!(c = BN_new())) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_MALLOC_FAILURE);
goto end;
}
if (!PAILLIER_encrypt(c, m, key)) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_PAILLIER_LIB);
goto end;
}
/* the ciphertext has no prefix zeros */
*outlen = BN_bn2bin(c, out);
if (!(ai = BN_to_ASN1_INTEGER(c, NULL))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_ASN1_LIB);
goto end;
}
if ((len = i2d_ASN1_INTEGER(ai, &out)) <= 0) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_ENCRYPT, ERR_R_ASN1_LIB);
goto end;
}
*outlen = len;
ret = 1;
end:
OPENSSL_clear_free(buf, inlen);
BN_clear_free(m);
BN_free(c);
ASN1_INTEGER_free(ai);
return ret;
}
static size_t paillier_plaintext_size(PAILLIER *key)
{
size_t ret = 0;
BIGNUM *m = NULL;
char *dec = NULL;
int i;
if (!(i = BN_num_bits(key->n))
|| !(m = BN_new())
|| !BN_one(m)
|| !BN_lshift(m, m, i * 2)
|| !(dec = BN_bn2dec(m))) {
PAILLIERerr(PAILLIER_F_PAILLIER_PLAINTEXT_SIZE, ERR_R_BN_LIB);
goto end;
}
ret = strlen(dec) + 1;
end:
BN_free(m);
OPENSSL_free(dec);
return ret;
}
@@ -155,34 +198,57 @@ static int pkey_paillier_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *
{
int ret = 0;
PAILLIER *key = EVP_PKEY_get0_PAILLIER(EVP_PKEY_CTX_get0_pkey(ctx));
const unsigned char *p = in;
ASN1_INTEGER *ai = NULL;
BIGNUM *m = NULL;
BIGNUM *c = NULL;
char *str = NULL;
size_t maxlen;
if (!(maxlen = paillier_plaintext_size(key))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_PAILLIER_LIB);
return 0;
}
if (!out) {
*outlen = PAILLIER_size(key);
*outlen = maxlen;
return 1;
} else if (*outlen < (size_t)PAILLIER_size(key)) {
} else if (*outlen < maxlen) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, PAILLIER_R_BUFFER_TOO_SMALL);
return 0;
}
if (!(m = BN_new()) || !(c = BN_new())) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_MALLOC_FAILURE);
/* decode ciphertext from asn1 integer */
if (!(ai = d2i_ASN1_INTEGER(NULL, &p, inlen))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_ASN1_LIB);
return 0;
}
if (!(c = ASN1_INTEGER_to_BN(ai, NULL))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_ASN1_LIB);
goto end;
}
if (!BN_bin2bn(in, (int)inlen, c)) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_BN_LIB);
/* decrypt and convert to decimal string */
if (!(m = BN_new())) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_MALLOC_FAILURE);
goto end;
}
if (!PAILLIER_decrypt(m, c, key)) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_PAILLIER_LIB);
goto end;
}
if (!(str = BN_bn2dec(m))) {
PAILLIERerr(PAILLIER_F_PKEY_PAILLIER_DECRYPT, ERR_R_BN_LIB);
goto end;
}
/* the plaintext has no prefix zeros */
*outlen = BN_bn2bin(m, out);
strcpy((char *)out, str);
*outlen = strlen(str) + 1;
ret = 1;
end:
ASN1_INTEGER_free(ai);
OPENSSL_free(str);
BN_free(m);
BN_free(c);
return ret;

View File

@@ -1,2 +1,2 @@
LIBS=../../libcrypto
SOURCE[../../libcrypto]=skf_err.c skf_lib.c skf_meth.c skf_ext.c skf_wisec.c
SOURCE[../../libcrypto]=skf_err.c skf_lib.c skf_meth.c skf_ext.c skf_prn.c skf_wisec.c

View File

@@ -1,6 +1,6 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -25,6 +25,7 @@ static ERR_STRING_DATA SKF_str_functs[] = {
{ERR_FUNC(SKF_F_SKF_CLEARSECURESTATE), "SKF_ClearSecureState"},
{ERR_FUNC(SKF_F_SKF_CLOSEAPPLICATION), "SKF_CloseApplication"},
{ERR_FUNC(SKF_F_SKF_CLOSECONTAINER), "SKF_CloseContainer"},
{ERR_FUNC(SKF_F_SKF_CLOSEDEVICE), "SKF_CloseDevice"},
{ERR_FUNC(SKF_F_SKF_CLOSEHANDLE), "SKF_CloseHandle"},
{ERR_FUNC(SKF_F_SKF_CONNECTDEV), "SKF_ConnectDev"},
{ERR_FUNC(SKF_F_SKF_CREATEAPPLICATION), "SKF_CreateApplication"},
@@ -56,7 +57,11 @@ static ERR_STRING_DATA SKF_str_functs[] = {
{ERR_FUNC(SKF_F_SKF_ENUMDEV), "SKF_EnumDev"},
{ERR_FUNC(SKF_F_SKF_ENUMFILES), "SKF_EnumFiles"},
{ERR_FUNC(SKF_F_SKF_EXPORTCERTIFICATE), "SKF_ExportCertificate"},
{ERR_FUNC(SKF_F_SKF_EXPORTECCPUBLICKEY), "SKF_ExportECCPublicKey"},
{ERR_FUNC(SKF_F_SKF_EXPORTEVPPUBLICKEY), "SKF_ExportEVPPublicKey"},
{ERR_FUNC(SKF_F_SKF_EXPORTPUBLICKEY), "SKF_ExportPublicKey"},
{ERR_FUNC(SKF_F_SKF_EXPORTRSAPUBLICKEY), "SKF_ExportRSAPublicKey"},
{ERR_FUNC(SKF_F_SKF_EXPORTX509CERTIFICATE), "SKF_ExportX509Certificate"},
{ERR_FUNC(SKF_F_SKF_EXTECCDECRYPT), "SKF_ExtECCDecrypt"},
{ERR_FUNC(SKF_F_SKF_EXTECCENCRYPT), "SKF_ExtECCEncrypt"},
{ERR_FUNC(SKF_F_SKF_EXTECCSIGN), "SKF_ExtECCSign"},
@@ -80,8 +85,12 @@ static ERR_STRING_DATA SKF_str_functs[] = {
{ERR_FUNC(SKF_F_SKF_IMPORTCERTIFICATE), "SKF_ImportCertificate"},
{ERR_FUNC(SKF_F_SKF_IMPORTECCKEYPAIR), "SKF_ImportECCKeyPair"},
{ERR_FUNC(SKF_F_SKF_IMPORTECCPRIVATEKEY), "SKF_ImportECCPrivateKey"},
{ERR_FUNC(SKF_F_SKF_IMPORTPRIVATEKEY), "SKF_ImportPrivateKey"},
{ERR_FUNC(SKF_F_SKF_IMPORTRSAKEYPAIR), "SKF_ImportRSAKeyPair"},
{ERR_FUNC(SKF_F_SKF_IMPORTRSAPRIVATEKEY), "SKF_ImportRSAPrivateKey"},
{ERR_FUNC(SKF_F_SKF_IMPORTSESSIONKEY), "SKF_ImportSessionKey"},
{ERR_FUNC(SKF_F_SKF_IMPORTX509CERTIFICATEBYKEYUSAGE),
"SKF_ImportX509CertificateByKeyUsage"},
{ERR_FUNC(SKF_F_SKF_LOADLIBRARY), "SKF_LoadLibrary"},
{ERR_FUNC(SKF_F_SKF_LOCKDEV), "SKF_LockDev"},
{ERR_FUNC(SKF_F_SKF_MAC), "SKF_Mac"},
@@ -93,6 +102,7 @@ static ERR_STRING_DATA SKF_str_functs[] = {
{ERR_FUNC(SKF_F_SKF_NEWENVELOPEDKEY), "SKF_NewEnvelopedKey"},
{ERR_FUNC(SKF_F_SKF_OPENAPPLICATION), "SKF_OpenApplication"},
{ERR_FUNC(SKF_F_SKF_OPENCONTAINER), "SKF_OpenContainer"},
{ERR_FUNC(SKF_F_SKF_OPENDEVICE), "SKF_OpenDevice"},
{ERR_FUNC(SKF_F_SKF_READFILE), "SKF_ReadFile"},
{ERR_FUNC(SKF_F_SKF_RSAEXPORTSESSIONKEY), "SKF_RSAExportSessionKey"},
{ERR_FUNC(SKF_F_SKF_RSASIGNDATA), "SKF_RSASignData"},
@@ -103,7 +113,6 @@ static ERR_STRING_DATA SKF_str_functs[] = {
{ERR_FUNC(SKF_F_SKF_UNBLOCKPIN), "SKF_UnblockPIN"},
{ERR_FUNC(SKF_F_SKF_UNLOCKDEV), "SKF_UnlockDev"},
{ERR_FUNC(SKF_F_SKF_VERIFYPIN), "SKF_VerifyPIN"},
{ERR_FUNC(SKF_F_SKF_W), "SKF_WaitForDevEvent"},
{ERR_FUNC(SKF_F_SKF_WAITFORDEVEVENT), "SKF_WaitForDevEvent"},
{ERR_FUNC(SKF_F_SKF_WRITEFILE), "SKF_WriteFile"},
{0, NULL}
@@ -112,18 +121,16 @@ static ERR_STRING_DATA SKF_str_functs[] = {
static ERR_STRING_DATA SKF_str_reasons[] = {
{ERR_REASON(SKF_R_APPLICATION_ALREADY_EXIST),
"application already exist"},
{ERR_REASON(SKF_R_APPLICATION_NOT_EXISAT), "application not exisat"},
{ERR_REASON(SKF_R_APPLICATION_NOT_EXIST), "application not exist"},
{ERR_REASON(SKF_R_BUFFER_TOO_SMALL), "buffer too small"},
{ERR_REASON(SKF_R_CERTIFICATE_NOT_FOUND), "certificate not found"},
{ERR_REASON(SKF_R_CONTAINER_TYPE_NOT_MATCH), "container type not match"},
{ERR_REASON(SKF_R_CSP_IMPORT_PUBLIC_KEY_ERROR),
"csp import public key error"},
{ERR_REASON(SKF_R_DECRYPT_INVALID_PADDING), "decrypt invalid padding"},
{ERR_REASON(SKF_R_DEVICE_REMOVED), "device removed"},
{ERR_REASON(SKF_R_DIGEST_ERROR), "digest error"},
{ERR_REASON(SKF_R_DSO_LOAD_FAILURE), "dso load failure"},
{ERR_REASON(SKF_R_ENVELOPE_PRVATE_KEY_FAILURE),
"envelope prvate key failure"},
{ERR_REASON(SKF_R_EXPORT_FAILED), "export failed"},
{ERR_REASON(SKF_R_FAILURE), "failure"},
{ERR_REASON(SKF_R_FILE_ALREADY_EXIST), "file already exist"},
@@ -131,11 +138,10 @@ static ERR_STRING_DATA SKF_str_reasons[] = {
{ERR_REASON(SKF_R_FILE_NOT_EXIST), "file not exist"},
{ERR_REASON(SKF_R_FUNCTION_NOT_SUPPORTED), "function not supported"},
{ERR_REASON(SKF_R_HASH_NOT_EQUAL), "hash not equal"},
{ERR_REASON(SKF_R_IMPORT_ENVELOPED_ECC_PRIVATE_KEY_FAILURE),
"import enveloped ecc private key failure"},
{ERR_REASON(SKF_R_INVALID_APPLICATION_NAME), "invalid application name"},
{ERR_REASON(SKF_R_INVALID_CONTAINER_TYPE), "invalid container type"},
{ERR_REASON(SKF_R_INVALID_DIGEST_HANDLE), "invalid digest handle"},
{ERR_REASON(SKF_R_INVALID_ECC_PUBLIC_KEY), "invalid ecc public key"},
{ERR_REASON(SKF_R_INVALID_HANDLE), "invalid handle"},
{ERR_REASON(SKF_R_INVALID_INPUT_LENGTH), "invalid input length"},
{ERR_REASON(SKF_R_INVALID_INPUT_VALUE), "invalid input value"},
@@ -150,6 +156,7 @@ static ERR_STRING_DATA SKF_str_reasons[] = {
{ERR_REASON(SKF_R_INVALID_PIN_LENGTH), "invalid pin length"},
{ERR_REASON(SKF_R_INVALID_RSA_MODULUS_LENGTH),
"invalid rsa modulus length"},
{ERR_REASON(SKF_R_INVALID_RSA_PUBLIC_KEY), "invalid rsa public key"},
{ERR_REASON(SKF_R_INVALID_USER_TYPE), "invalid user type"},
{ERR_REASON(SKF_R_KEY_NOT_FOUND), "key not found"},
{ERR_REASON(SKF_R_LOAD_LIBRARY_FAILURE), "load library failure"},
@@ -162,8 +169,9 @@ static ERR_STRING_DATA SKF_str_reasons[] = {
{ERR_REASON(SKF_R_NOT_SUPPORTED_PKEY_ALGOR), "not supported pkey algor"},
{ERR_REASON(SKF_R_NO_EVENT), "no event"},
{ERR_REASON(SKF_R_NO_SPACE), "no space"},
{ERR_REASON(SKF_R_NULL_ARGUMENT), "null argument"},
{ERR_REASON(SKF_R_OPERATION_NOT_SUPPORTED), "operation not supported"},
{ERR_REASON(SKF_R_PARSE_CERTIFICATE_FAILURE),
"parse certificate failure"},
{ERR_REASON(SKF_R_PIN_INCORRECT), "pin incorrect"},
{ERR_REASON(SKF_R_PIN_LOCKED), "pin locked"},
{ERR_REASON(SKF_R_RANDOM_GENERATION_FAILED), "random generation failed"},
@@ -176,8 +184,12 @@ static ERR_STRING_DATA SKF_str_reasons[] = {
"skf method not initialized"},
{ERR_REASON(SKF_R_SUCCESS), "success"},
{ERR_REASON(SKF_R_TIMEOUT), "timeout"},
{ERR_REASON(SKF_R_UNKNOWN_CERTIFICATE_KEYUSAGE),
"unknown certificate keyusage"},
{ERR_REASON(SKF_R_UNKNOWN_ERROR), "unknown error"},
{ERR_REASON(SKF_R_UNKNOWN_VENDOR), "unknown vendor"},
{ERR_REASON(SKF_R_UNSUPPORTED_PRIVATE_KEY_TYPE),
"unsupported private key type"},
{ERR_REASON(SKF_R_USER_ALREADY_LOGGED_IN), "user already logged in"},
{ERR_REASON(SKF_R_USER_NOT_LOGGED_IN), "user not logged in"},
{ERR_REASON(SKF_R_USER_PIN_NOT_INITIALIZED), "user pin not initialized"},

View File

@@ -1,5 +1,5 @@
/* ====================================================================
* Copyright (c) 2014 - 2017 The GmSSL Project. All rights reserved.
* Copyright (c) 2014 - 2019 The GmSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -52,308 +52,14 @@
#include <string.h>
#include <limits.h>
#include <openssl/err.h>
#include <openssl/rand.h>
#include <openssl/gmskf.h>
#include <openssl/gmapi.h>
#include <openssl/x509v3.h>
#include "internal/skf_int.h"
#include "../../e_os.h"
static char *skf_algor_name(ULONG ulAlgID)
{
switch (ulAlgID) {
case SGD_SM1_ECB: return "sm1-ecb";
case SGD_SM1_CBC: return "sm1-cbc";
case SGD_SM1_CFB: return "sm1-cfb";
case SGD_SM1_OFB: return "sm1-ofb128";
case SGD_SM1_MAC: return "sm1-mac";
case SGD_SM4_ECB: return "sms4-ecb";
case SGD_SM4_CBC: return "sms4-cbc";
case SGD_SM4_CFB: return "sms4-cfb";
case SGD_SM4_OFB: return "sms4-ofb128";
case SGD_SM4_MAC: return "sms4-mac";
case SGD_SSF33_ECB: return "ssf33-ecb";
case SGD_SSF33_CBC: return "ssf33-cbc";
case SGD_SSF33_CFB: return "ssf33-cfb";
case SGD_SSF33_OFB: return "ssf33-ofb128";
case SGD_SSF33_MAC: return "ssf33-mac";
case SGD_RSA: return "rsa";
case SGD_SM2_1: return "sm2sign";
case SGD_SM2_2: return "sm2encrypt";
case SGD_SM2_3: return "sm2keyagreement";
case SGD_SM3: return "sm3";
case SGD_SHA1: return "sha1";
case SGD_SHA256: return "sha256";
}
return NULL;
}
ULONG SKF_GetDevStateName(ULONG ulDevState, LPSTR *szDevStateName)
{
if (!szDevStateName) {
return SAR_INDATALENERR;
}
switch (ulDevState) {
case SKF_DEV_STATE_ABSENT:
*szDevStateName = (LPSTR)"Absent";
break;
case SKF_DEV_STATE_PRESENT:
*szDevStateName = (LPSTR)"Present";
break;
case SKF_DEV_STATE_UNKNOW:
*szDevStateName = (LPSTR)"Unknown";
break;
default:
*szDevStateName = (LPSTR)"(Error)";
return SAR_INDATALENERR;
}
return SAR_OK;
}
ULONG SKF_GetContainerTypeName(ULONG ulContainerType, LPSTR *szName)
{
switch (ulContainerType) {
case SKF_CONTAINER_TYPE_UNDEF:
*szName = (LPSTR)"(undef)";
break;
case SKF_CONTAINER_TYPE_RSA:
*szName = (LPSTR)"RSA";
break;
case SKF_CONTAINER_TYPE_ECC:
*szName = (LPSTR)"EC";
break;
default:
*szName = (LPSTR)"(unknown)";
}
/* always success for help functions */
return SAR_OK;
}
typedef struct {
ULONG id;
char *name;
} table_item_t;
static table_item_t skf_cipher_caps[] = {
{ SGD_SM1_ECB, "sm1-ecb" },
{ SGD_SM1_CBC, "sm1-cbc" },
{ SGD_SM1_CFB, "sm1-cfb" },
{ SGD_SM1_OFB, "sm1-ofb128" },
{ SGD_SM1_MAC, "cbcmac-sm1" },
{ SGD_SSF33_ECB, "ssf33-ecb" },
{ SGD_SSF33_CBC, "ssf33-cbc" },
{ SGD_SSF33_CFB, "ssf33-cfb" },
{ SGD_SSF33_OFB, "ssf33-ofb128" },
{ SGD_SSF33_MAC, "cbcmac-ssf33" },
{ SGD_SM4_ECB, "sms4-ecb" },
{ SGD_SM4_CBC, "sms4-cbc" },
{ SGD_SM4_CFB, "sms4-cfb" },
{ SGD_SM4_OFB, "sms4-ofb128" },
{ SGD_SM4_MAC, "cbcmac-sms4" },
{ SGD_ZUC_EEA3, "zuc_128eea3" },
{ SGD_ZUC_EIA3, "zuc_128eia3" }
};
static table_item_t skf_digest_caps[] = {
{ SGD_SM3, "sm3" },
{ SGD_SHA1, "sha1" },
{ SGD_SHA256, "sha256" },
};
static table_item_t skf_pkey_caps[] = {
{ SGD_RSA_SIGN, "rsa" },
{ SGD_RSA_ENC, "rsaEncryption" },
{ SGD_SM2_1, "sm2sign" },
{ SGD_SM2_2, "sm2exchange" },
{ SGD_SM2_3, "sm2encrypt" }
};
ULONG SKF_PrintDevInfo(BIO *out, DEVINFO *devInfo)
{
size_t i, n;
char *serial = OPENSSL_buf2hexstr(devInfo->SerialNumber, strlen((char *)devInfo->SerialNumber));
BIO_printf(out, " %-16s : %d.%d\n", "Version", devInfo->Version.major, devInfo->Version.minor);
BIO_printf(out, " %-16s : %s\n", "Manufacturer", devInfo->Manufacturer);
BIO_printf(out, " %-16s : %s\n", "Issuer", devInfo->Issuer);
BIO_printf(out, " %-16s : %s\n", "Label", devInfo->Label);
BIO_printf(out, " %-16s : %s\n", "Serial Number", serial);
BIO_printf(out, " %-16s : %d.%d\n", "Firmware Version", devInfo->HWVersion.major, devInfo->HWVersion.minor);
BIO_printf(out, " %-16s : ", "Ciphers");
for (i = n = 0; i < OSSL_NELEM(skf_cipher_caps); i++) {
if ((devInfo->AlgSymCap & skf_cipher_caps[i].id) ==
skf_cipher_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_cipher_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Public Keys");
for (i = n = 0; i < OSSL_NELEM(skf_pkey_caps); i++) {
if ((devInfo->AlgAsymCap & skf_pkey_caps[i].id) ==
skf_pkey_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_pkey_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Digests");
for (i = n = 0; i < OSSL_NELEM(skf_digest_caps); i++) {
if ((devInfo->AlgHashCap & skf_digest_caps[i].id) ==
skf_digest_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_digest_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Auth Cipher");
for (i = 0; i < OSSL_NELEM(skf_cipher_caps); i++) {
if (devInfo->DevAuthAlgId == skf_cipher_caps[i].id) {
BIO_printf(out, "%s\n", skf_cipher_caps[i].name);
break;
}
}
if (i == OSSL_NELEM(skf_cipher_caps)) {
BIO_puts(out, "(unknown)\n");
}
if (devInfo->TotalSpace == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "Total Sapce", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "Total Sapce", devInfo->TotalSpace);
if (devInfo->FreeSpace == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "Free Space", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "Free Space", devInfo->FreeSpace);
if (devInfo->MaxECCBufferSize == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "MAX ECC Input", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "MAX ECC Input", devInfo->MaxECCBufferSize);
if (devInfo->MaxBufferSize == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "MAX Cipher Input", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "MAX Cipher Input", devInfo->MaxBufferSize);
OPENSSL_free(serial);
return SAR_OK;
}
ULONG SKF_PrintRSAPublicKey(BIO *out, RSAPUBLICKEYBLOB *blob)
{
BIO_printf(out, "AlgID : %s\n", skf_algor_name(blob->AlgID));
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "Modulus:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Modulus, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PublicExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PublicExponent, MAX_RSA_EXPONENT_LEN);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintRSAPrivateKey(BIO *out, RSAPRIVATEKEYBLOB *blob)
{
BIO_printf(out, "AlgID : %s\n", skf_algor_name(blob->AlgID));
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "Modulus:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Modulus, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PublicExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PublicExponent, MAX_RSA_EXPONENT_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PrivateExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PrivateExponent, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "Prime1:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime1, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Prime2:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime2, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Prime1Exponent:\n");
BIO_hex_string(out, 4, 16, blob->Prime1Exponent, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, " ");
BIO_puts(out, "Prime2Exponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime2Exponent, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Coefficient:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Coefficient, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCPublicKey(BIO *out, ECCPUBLICKEYBLOB *blob)
{
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "XCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->XCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "YCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->YCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCPrivateKey(BIO *out, ECCPRIVATEKEYBLOB *blob)
{
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "PrivateKey:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PrivateKey, ECC_MAX_MODULUS_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCCipher(BIO *out, ECCCIPHERBLOB *blob)
{
BIO_puts(out, "XCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->XCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "YCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->YCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "HASH:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->HASH, 32);
BIO_puts(out, "\n");
BIO_printf(out, "CipherLen: %u\n", blob->CipherLen);
BIO_puts(out, "Cipher:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Cipher, blob->CipherLen);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCSignature(BIO *out, ECCSIGNATUREBLOB *blob)
{
BIO_puts(out, "r:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->r, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "s:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->s, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG DEVAPI SKF_NewECCCipher(ULONG ulCipherLen, ECCCIPHERBLOB **cipherBlob)
{
ECCCIPHERBLOB *ret = NULL;
@@ -382,15 +88,519 @@ ULONG DEVAPI SKF_NewEnvelopedKey(ULONG ulCipherLen, ENVELOPEDKEYBLOB **enveloped
return SAR_OK;
}
ULONG DEVAPI SKF_PrintErrorString(BIO *out, ULONG ulError)
ULONG DEVAPI SKF_OpenDevice(LPSTR devName, BYTE authKey[16], DEVINFO *devInfo, DEVHANDLE *phDev)
{
LPSTR str = NULL;
SKF_GetErrorString(ulError, &str);
BIO_printf(out, "SKF Error: %s\n", (char *)str);
ULONG rv;
DEVHANDLE hDev = NULL;
HANDLE hKey = NULL;
ULONG ulTimeOut = 0xffffffff;
BYTE authRand[16] = {0};
BYTE authData[16] = {0};
ULONG authRandLen = SKF_AUTHRAND_LENGTH;
ULONG authDataLen = sizeof(authData);
BLOCKCIPHERPARAM encParam = {{0}, 0, 0, 0};
if ((rv = SKF_ConnectDev((LPSTR)devName, &hDev)) != SAR_OK
|| (rv = SKF_GetDevInfo(hDev, devInfo)) != SAR_OK
|| (rv = SKF_LockDev(hDev, ulTimeOut)) != SAR_OK
|| (rv = SKF_GenRandom(hDev, authRand, authRandLen)) != SAR_OK
|| (rv = SKF_SetSymmKey(hDev, authKey, devInfo->DevAuthAlgId, &hKey)) != SAR_OK
|| (rv = SKF_EncryptInit(hKey, encParam)) != SAR_OK
|| (rv = SKF_Encrypt(hKey, authRand, sizeof(authRand), authData, &authDataLen)) != SAR_OK
|| (rv =SKF_DevAuth(hDev, authData, authDataLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_OPENDEVICE, ERR_R_SKF_LIB);
goto end;
}
*phDev = hDev;
hDev = NULL;
end:
OPENSSL_cleanse(authRand, sizeof(authRand));
OPENSSL_cleanse(authData, sizeof(authData));
if (hKey && (rv = SKF_CloseHandle(hKey)) != SAR_OK) {
SKFerr(SKF_F_SKF_OPENDEVICE, ERR_R_SKF_LIB);
}
if (hDev && (rv = SKF_DisConnectDev(hDev)) != SAR_OK) {
SKFerr(SKF_F_SKF_OPENDEVICE, ERR_R_SKF_LIB);
}
return rv;
}
ULONG DEVAPI SKF_CloseDevice(DEVHANDLE hDev)
{
ULONG rv;
if ((rv = SKF_UnlockDev(hDev)) != SAR_OK) {
SKFerr(SKF_F_SKF_CLOSEDEVICE, ERR_R_SKF_LIB);
}
if ((rv = SKF_DisConnectDev(hDev)) != SAR_OK) {
SKFerr(SKF_F_SKF_CLOSEDEVICE, ERR_R_SKF_LIB);
}
return rv;
}
ULONG DEVAPI SKF_ImportECCPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer,
EC_KEY *ec_key, ULONG symmAlgId)
{
int ret = 0;
ULONG rv;
ULONG containerType;
ECCPRIVATEKEYBLOB eccPriKeyBlob;
BYTE symmKey[16];
HANDLE hSymmKey = NULL;
BLOCKCIPHERPARAM encParam;
ULONG encedPriKeyLen;
SKF_PUBLICKEYBLOB signPubKeyBlob;
ULONG signPubKeyLen = sizeof(signPubKeyBlob);
ENVELOPEDKEYBLOB envelopedKeyBlob;
/* check container type */
if ((rv = SKF_GetContainerType(hContainer, &containerType)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
return rv;
}
if (containerType != SKF_CONTAINER_TYPE_ECC) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, SKF_R_CONTAINER_TYPE_NOT_MATCH);
return SAR_FAIL;
}
/* get private key and public key */
if (!EC_KEY_get_ECCPRIVATEKEYBLOB(ec_key, &eccPriKeyBlob)
|| !EC_KEY_get_ECCPUBLICKEYBLOB(ec_key, &(envelopedKeyBlob.PubKey))) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_GMAPI_LIB);
rv = SAR_FAIL;
goto end;
}
/* set Version, ulSymmAlgID, ulBits */
envelopedKeyBlob.Version = SKF_ENVELOPEDKEYBLOB_VERSION;
envelopedKeyBlob.ulSymmAlgID = symmAlgId;
envelopedKeyBlob.ulBits = eccPriKeyBlob.BitLen;
/* encrypt private key with random generated symmkey */
if (!RAND_bytes(symmKey, sizeof(symmKey))) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
rv = SAR_FAIL;
goto end;
}
if ((rv = SKF_SetSymmKey(hDev, symmKey, symmAlgId, &hSymmKey)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
encParam.IVLen = 0;
encParam.PaddingType = SKF_NO_PADDING;
if ((rv = SKF_EncryptInit(hSymmKey, encParam)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
encedPriKeyLen = sizeof(envelopedKeyBlob.cbEncryptedPriKey);
if ((rv = SKF_Encrypt(hSymmKey,
eccPriKeyBlob.PrivateKey, sizeof(eccPriKeyBlob.PrivateKey),
(BYTE *)&(envelopedKeyBlob.cbEncryptedPriKey), &encedPriKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
if (encedPriKeyLen != sizeof(eccPriKeyBlob.PrivateKey)) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
rv = SAR_FAIL;
goto end;
}
/* encrypt symmKey */
if ((rv = SKF_ExportPublicKey(hContainer, TRUE,
(BYTE *)&signPubKeyBlob, &signPubKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
if (signPubKeyLen != sizeof(ECCPUBLICKEYBLOB)) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
rv = SAR_FAIL;
goto end;
}
if ((rv = SKF_ExtECCEncrypt(hDev, (ECCPUBLICKEYBLOB *)&signPubKeyBlob,
symmKey, sizeof(symmKey), &(envelopedKeyBlob.ECCCipherBlob))) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
ret = 1;
end:
OPENSSL_cleanse(&eccPriKeyBlob, sizeof(eccPriKeyBlob));
OPENSSL_cleanse(symmKey, sizeof(symmKey));
if (hSymmKey && SKF_CloseHandle(hSymmKey) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTECCPRIVATEKEY, ERR_R_SKF_LIB);
ret = 0;
}
return ret;
}
ULONG DEVAPI SKF_ImportRSAPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer,
RSA *rsa, ULONG symmAlgId)
{
ULONG rv;
ULONG containerType;
RSAPRIVATEKEYBLOB rsaPriKeyBlob;
unsigned char symmKey[16];
RSAPUBLICKEYBLOB rsaPubKeyBlob;
ULONG rsaPubKeyLen = sizeof(rsaPubKeyBlob);
BYTE wrappedKey[MAX_RSA_MODULUS_LEN];
ULONG wrappedKeyLen = sizeof(wrappedKey);
EVP_CIPHER_CTX *cctx = NULL;
unsigned char *p;
int len;
BYTE encedPriKey[sizeof(RSAPRIVATEKEYBLOB) + 16*2];
ULONG encedPriKeyLen = sizeof(encedPriKey);
if ((rv = SKF_GetContainerType(hContainer, &containerType)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
return rv;
}
if (containerType != SKF_CONTAINER_TYPE_RSA) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
return SAR_FAIL;
}
if (!RSA_get_RSAPRIVATEKEYBLOB(rsa, &rsaPriKeyBlob)) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
/* generate symmkey */
/* wrap symmkey with signing public key */
if (!RAND_bytes(symmKey, sizeof(symmKey))) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
if ((rv = SKF_ExportPublicKey(hContainer, SGD_TRUE,
(BYTE *)&rsaPubKeyBlob, &rsaPubKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
if (!(rsa = RSA_new_from_RSAPUBLICKEYBLOB(&rsaPubKeyBlob))) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
if ((len = RSA_public_encrypt(sizeof(symmKey), symmKey, wrappedKey,
rsa, RSA_PKCS1_PADDING)) != rsaPriKeyBlob.BitLen / 8) {
goto end;
}
wrappedKeyLen = (ULONG)len;
/* encrypt private key with symmkey in ECB mode */
if (!(cctx = EVP_CIPHER_CTX_new())) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_MALLOC_FAILURE);
goto end;
}
if (!EVP_EncryptInit_ex(cctx, EVP_sms4_ecb(), NULL, symmKey, NULL)) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_EVP_LIB);
goto end;
}
p = encedPriKey;
if (!EVP_EncryptUpdate(cctx, p, &len, (unsigned char *)&rsaPriKeyBlob,
sizeof(RSAPRIVATEKEYBLOB))) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_EVP_LIB);
goto end;
}
p += len;
if (!EVP_EncryptFinal_ex(cctx, p, &len)) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_EVP_LIB);
goto end;
}
p += len;
encedPriKeyLen = p - encedPriKey;
/* import */
if ((rv = SKF_ImportRSAKeyPair(hContainer, symmAlgId, wrappedKey, wrappedKeyLen,
encedPriKey, encedPriKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTRSAPRIVATEKEY, ERR_R_SKF_LIB);
goto end;
}
end:
OPENSSL_cleanse(&rsaPriKeyBlob, sizeof(rsaPriKeyBlob));
OPENSSL_cleanse(symmKey, sizeof(symmKey));
OPENSSL_cleanse(wrappedKey, sizeof(wrappedKey));
EVP_CIPHER_CTX_free(cctx);
return rv;
}
ULONG DEVAPI SKF_ImportPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer,
EVP_PKEY *pkey, ULONG symmAlgId)
{
ULONG rv;
switch (EVP_PKEY_id(pkey)) {
case EVP_PKEY_EC:
if ((rv = SKF_ImportECCPrivateKey(hDev, hContainer,
EVP_PKEY_get0_EC_KEY(pkey), symmAlgId)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTPRIVATEKEY, ERR_R_SKF_LIB);
return rv;
}
break;
case EVP_PKEY_RSA:
if ((rv = SKF_ImportRSAPrivateKey(hDev, hContainer,
EVP_PKEY_get0_RSA(pkey), symmAlgId)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTPRIVATEKEY, ERR_R_SKF_LIB);
return rv;
}
break;
default:
SKFerr(SKF_F_SKF_IMPORTPRIVATEKEY,
SKF_R_UNSUPPORTED_PRIVATE_KEY_TYPE);
return SAR_FAIL;
}
return SAR_OK;
}
ULONG DEVAPI SKF_GetAlgorName(ULONG ulAlgID, LPSTR *szName)
ULONG DEVAPI SKF_ExportECCPublicKey(HCONTAINER hContainer, BOOL bSign, EC_KEY **ec_key)
{
ULONG rv;
ULONG containerType;
BYTE pubKeyBlob[sizeof(SKF_PUBLICKEYBLOB)];
ECCPUBLICKEYBLOB *pubKey = (ECCPUBLICKEYBLOB *)pubKeyBlob;
ULONG pubKeyLen = sizeof(SKF_PUBLICKEYBLOB);
if ((rv = SKF_GetContainerType(hContainer, &containerType)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTECCPUBLICKEY, ERR_R_SKF_LIB);
return rv;
}
if (containerType != SKF_CONTAINER_TYPE_ECC) {
SKFerr(SKF_F_SKF_EXPORTECCPUBLICKEY, SKF_R_CONTAINER_TYPE_NOT_MATCH);
return SAR_FAIL;
}
if ((rv = SKF_ExportPublicKey(hContainer, bSign,
pubKeyBlob, &pubKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTECCPUBLICKEY, ERR_R_SKF_LIB);
return rv;
}
if (pubKeyLen != sizeof(ECCPUBLICKEYBLOB)) {
SKFerr(SKF_F_SKF_EXPORTECCPUBLICKEY, ERR_R_SKF_LIB);
return SAR_FAIL;
}
if (!(*ec_key = EC_KEY_new_from_ECCPUBLICKEYBLOB(pubKey))) {
SKFerr(SKF_F_SKF_EXPORTECCPUBLICKEY, SKF_R_INVALID_ECC_PUBLIC_KEY);
return SAR_FAIL;
}
return SAR_OK;
}
ULONG DEVAPI SKF_ExportRSAPublicKey(HCONTAINER hContainer, BOOL bSign, RSA **rsa)
{
ULONG rv;
ULONG containerType;
BYTE pubKeyBlob[sizeof(SKF_PUBLICKEYBLOB)];
RSAPUBLICKEYBLOB *pubKey = (RSAPUBLICKEYBLOB *)pubKeyBlob;
ULONG pubKeyLen = sizeof(SKF_PUBLICKEYBLOB);
if ((rv = SKF_GetContainerType(hContainer, &containerType)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTRSAPUBLICKEY, ERR_R_SKF_LIB);
return rv;
}
if (containerType != SKF_CONTAINER_TYPE_RSA) {
SKFerr(SKF_F_SKF_EXPORTRSAPUBLICKEY, SKF_R_CONTAINER_TYPE_NOT_MATCH);
return SAR_FAIL;
}
if ((rv = SKF_ExportPublicKey(hContainer, bSign,
pubKeyBlob, &pubKeyLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTRSAPUBLICKEY, ERR_R_SKF_LIB);
return rv;
}
if (pubKeyLen != sizeof(RSAPUBLICKEYBLOB)) {
SKFerr(SKF_F_SKF_EXPORTRSAPUBLICKEY, ERR_R_SKF_LIB);
return SAR_FAIL;
}
if (!(*rsa = RSA_new_from_RSAPUBLICKEYBLOB(pubKey))) {
SKFerr(SKF_F_SKF_EXPORTRSAPUBLICKEY, SKF_R_INVALID_RSA_PUBLIC_KEY);
return SAR_FAIL;
}
return SAR_OK;
}
ULONG DEVAPI SKF_ExportEVPPublicKey(HCONTAINER hContainer, BOOL bSign, EVP_PKEY **pp)
{
ULONG rv;
ULONG containerType;
EVP_PKEY *pkey = NULL;
if ((rv = SKF_GetContainerType(hContainer, &containerType)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTEVPPUBLICKEY, ERR_R_SKF_LIB);
return rv;
}
if (!(pkey = EVP_PKEY_new())) {
SKFerr(SKF_F_SKF_EXPORTEVPPUBLICKEY, ERR_R_MALLOC_FAILURE);
return SAR_MEMORYERR;
}
if (containerType == SKF_CONTAINER_TYPE_ECC) {
EC_KEY *ec_key = NULL;
if ((rv = SKF_ExportECCPublicKey(hContainer, bSign,
&ec_key)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTEVPPUBLICKEY, ERR_R_SKF_LIB);
goto end;
}
if (!EVP_PKEY_assign_EC_KEY(pkey, ec_key)) {
EC_KEY_free(ec_key);
rv = SAR_FAIL;
goto end;
}
} else if (containerType == SKF_CONTAINER_TYPE_RSA) {
RSA *rsa = NULL;
if ((rv = SKF_ExportRSAPublicKey(hContainer, bSign,
&rsa)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTEVPPUBLICKEY, ERR_R_SKF_LIB);
goto end;
}
if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
RSA_free(rsa);
rv = SAR_FAIL;
goto end;
}
} else {
SKFerr(SKF_F_SKF_EXPORTEVPPUBLICKEY, SKF_R_INVALID_CONTAINER_TYPE);
rv = SAR_FAIL;
goto end;
}
*pp = pkey;
pkey = NULL;
rv = SAR_OK;
end:
EVP_PKEY_free(pkey);
return rv;
}
ULONG DEVAPI SKF_ImportX509Certificate(HCONTAINER hContainer, BOOL bSign, X509 *x509)
{
int ret = 0;
ULONG containerType;
unsigned char *cert = NULL;
unsigned char *p;
int len;
if (SKF_GetContainerType(hContainer, &containerType) != SAR_OK) {
return 0;
}
if (containerType == SKF_CONTAINER_TYPE_UNDEF) {
return 0;
}
switch (EVP_PKEY_id(X509_get0_pubkey(x509))) {
case EVP_PKEY_EC:
if (containerType != SKF_CONTAINER_TYPE_ECC) {
goto end;
}
if (!EC_KEY_is_sm2p256v1(EVP_PKEY_get0_EC_KEY(X509_get0_pubkey(x509)))) {
goto end;
}
break;
case EVP_PKEY_RSA:
if (containerType != SKF_CONTAINER_TYPE_RSA) {
goto end;
}
break;
default:
goto end;
}
if (X509_get_key_usage(x509) & (KU_DIGITAL_SIGNATURE|
KU_NON_REPUDIATION|KU_KEY_CERT_SIGN|KU_CRL_SIGN)) {
bSign = SGD_TRUE;
} else if (X509_get_key_usage(x509) & (KU_KEY_ENCIPHERMENT|
KU_DATA_ENCIPHERMENT|KU_KEY_AGREEMENT|KU_ENCIPHER_ONLY)) {
bSign = SGD_FALSE;
} else {
goto end;
}
if ((len = i2d_X509(x509, NULL)) <= 0
|| !(p = cert = OPENSSL_malloc(len))
|| (len = i2d_X509(x509, &p)) <= 0) {
goto end;
}
if (SKF_ImportCertificate(hContainer, bSign, cert, (ULONG)len) != SAR_OK) {
goto end;
}
ret = 1;
end:
X509_free(x509);
OPENSSL_free(cert);
return ret;
}
ULONG DEVAPI SKF_ImportX509CertificateByKeyUsage(HCONTAINER hContainer, X509 *x509)
{
ULONG rv;
BOOL bSign;
if (X509_get_key_usage(x509) & (KU_DIGITAL_SIGNATURE|
KU_NON_REPUDIATION|KU_KEY_CERT_SIGN|KU_CRL_SIGN)) {
bSign = SGD_TRUE;
} else if (X509_get_key_usage(x509) & (KU_KEY_ENCIPHERMENT|
KU_DATA_ENCIPHERMENT|KU_KEY_AGREEMENT|KU_ENCIPHER_ONLY)) {
bSign = SGD_FALSE;
} else {
SKFerr(SKF_F_SKF_IMPORTX509CERTIFICATEBYKEYUSAGE,
SKF_R_UNKNOWN_CERTIFICATE_KEYUSAGE);
return SAR_FAIL;
}
if ((rv = SKF_ImportX509Certificate(hContainer, bSign, x509)) != SAR_OK) {
SKFerr(SKF_F_SKF_IMPORTX509CERTIFICATEBYKEYUSAGE, ERR_R_SKF_LIB);
return rv;
}
return SAR_OK;
}
ULONG DEVAPI SKF_ExportX509Certificate(HCONTAINER hContainer, BOOL bSign, X509 **px509)
{
ULONG rv = SAR_FAIL;
BYTE *pbCert = NULL;
ULONG ulCertLen;
const unsigned char *p;
X509 *x509 = NULL;
ulCertLen = SKF_MAX_CERTIFICATE_SIZE;
if (!(pbCert = OPENSSL_zalloc(ulCertLen))) {
SKFerr(SKF_F_SKF_EXPORTX509CERTIFICATE, ERR_R_MALLOC_FAILURE);
rv = SAR_MEMORYERR;
goto end;
}
if ((rv = SKF_ExportCertificate(hContainer, bSign,
pbCert, &ulCertLen)) != SAR_OK) {
SKFerr(SKF_F_SKF_EXPORTX509CERTIFICATE, ERR_R_SKF_LIB);
goto end;
}
p = pbCert;
if (!(x509 = d2i_X509(NULL, &p, (long)ulCertLen))) {
SKFerr(SKF_F_SKF_EXPORTX509CERTIFICATE,
SKF_R_PARSE_CERTIFICATE_FAILURE);
goto end;
}
if (p - pbCert != ulCertLen) {
SKFerr(SKF_F_SKF_EXPORTX509CERTIFICATE,
SKF_R_PARSE_CERTIFICATE_FAILURE);
goto end;
}
*px509 = x509;
x509 = NULL;
rv = SAR_OK;
end:
OPENSSL_free(pbCert);
X509_free(x509);
return rv;
}

View File

@@ -152,9 +152,7 @@ SKF_METHOD *SKF_METHOD_load_library(const char *so_path)
SKF_METHOD_BIND_FUNCTION(MacUpdate);
SKF_METHOD_BIND_FUNCTION(MacFinal);
SKF_METHOD_BIND_FUNCTION(CloseHandle);
#ifdef SKF_SUPPORT_ECCDECRYPT
/* wisectech usb-key support ECCDecrypt */
#ifdef SKF_HAS_ECCDECRYPT
SKF_METHOD_BIND_FUNCTION(ECCDecrypt);
#endif

368
crypto/skf/skf_prn.c Normal file
View File

@@ -0,0 +1,368 @@
/* ====================================================================
* Copyright (c) 2014 - 2019 The GmSSL Project. All rights reserved.
*
* 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 above 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 acknowledgment:
* "This product includes software developed by the GmSSL Project.
* (http://gmssl.org/)"
*
* 4. The name "GmSSL Project" must not be used to endorse or promote
* products derived from this software without prior written
* permission. For written permission, please contact
* guanzhi1980@gmail.com.
*
* 5. Products derived from this software may not be called "GmSSL"
* nor may "GmSSL" appear in their names without prior written
* permission of the GmSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the GmSSL Project
* (http://gmssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE GmSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED 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 GmSSL PROJECT OR
* ITS 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.
* ====================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <openssl/err.h>
#include <openssl/gmskf.h>
#include "internal/skf_int.h"
#include "../../e_os.h"
static char *skf_algor_name(ULONG ulAlgID)
{
switch (ulAlgID) {
case SGD_SM1_ECB: return "sm1-ecb";
case SGD_SM1_CBC: return "sm1-cbc";
case SGD_SM1_CFB: return "sm1-cfb";
case SGD_SM1_OFB: return "sm1-ofb128";
case SGD_SM1_MAC: return "sm1-mac";
case SGD_SM4_ECB: return "sms4-ecb";
case SGD_SM4_CBC: return "sms4-cbc";
case SGD_SM4_CFB: return "sms4-cfb";
case SGD_SM4_OFB: return "sms4-ofb128";
case SGD_SM4_MAC: return "sms4-mac";
case SGD_SSF33_ECB: return "ssf33-ecb";
case SGD_SSF33_CBC: return "ssf33-cbc";
case SGD_SSF33_CFB: return "ssf33-cfb";
case SGD_SSF33_OFB: return "ssf33-ofb128";
case SGD_SSF33_MAC: return "ssf33-mac";
case SGD_RSA: return "rsa";
case SGD_SM2_1: return "sm2sign";
case SGD_SM2_2: return "sm2encrypt";
case SGD_SM2_3: return "sm2keyagreement";
case SGD_SM3: return "sm3";
case SGD_SHA1: return "sha1";
case SGD_SHA256: return "sha256";
}
return NULL;
}
ULONG SKF_GetDevStateName(ULONG ulDevState, LPSTR *szDevStateName)
{
if (!szDevStateName) {
return SAR_INDATALENERR;
}
switch (ulDevState) {
case SKF_DEV_STATE_ABSENT:
*szDevStateName = (LPSTR)"Absent";
break;
case SKF_DEV_STATE_PRESENT:
*szDevStateName = (LPSTR)"Present";
break;
case SKF_DEV_STATE_UNKNOW:
*szDevStateName = (LPSTR)"Unknown";
break;
default:
*szDevStateName = (LPSTR)"(Error)";
return SAR_INDATALENERR;
}
return SAR_OK;
}
ULONG SKF_GetContainerTypeName(ULONG ulContainerType, LPSTR *szName)
{
switch (ulContainerType) {
case SKF_CONTAINER_TYPE_UNDEF:
*szName = (LPSTR)"(undef)";
break;
case SKF_CONTAINER_TYPE_RSA:
*szName = (LPSTR)"RSA";
break;
case SKF_CONTAINER_TYPE_ECC:
*szName = (LPSTR)"EC";
break;
default:
*szName = (LPSTR)"(unknown)";
}
/* always success for help functions */
return SAR_OK;
}
typedef struct {
ULONG id;
char *name;
} table_item_t;
static table_item_t skf_cipher_caps[] = {
{ SGD_SM1_ECB, "sm1-ecb" },
{ SGD_SM1_CBC, "sm1-cbc" },
{ SGD_SM1_CFB, "sm1-cfb" },
{ SGD_SM1_OFB, "sm1-ofb128" },
{ SGD_SM1_MAC, "cbcmac-sm1" },
{ SGD_SSF33_ECB, "ssf33-ecb" },
{ SGD_SSF33_CBC, "ssf33-cbc" },
{ SGD_SSF33_CFB, "ssf33-cfb" },
{ SGD_SSF33_OFB, "ssf33-ofb128" },
{ SGD_SSF33_MAC, "cbcmac-ssf33" },
{ SGD_SM4_ECB, "sms4-ecb" },
{ SGD_SM4_CBC, "sms4-cbc" },
{ SGD_SM4_CFB, "sms4-cfb" },
{ SGD_SM4_OFB, "sms4-ofb128" },
{ SGD_SM4_MAC, "cbcmac-sms4" },
{ SGD_ZUC_EEA3, "zuc_128eea3" },
{ SGD_ZUC_EIA3, "zuc_128eia3" }
};
static table_item_t skf_digest_caps[] = {
{ SGD_SM3, "sm3" },
{ SGD_SHA1, "sha1" },
{ SGD_SHA256, "sha256" },
};
static table_item_t skf_pkey_caps[] = {
{ SGD_RSA_SIGN, "rsa" },
{ SGD_RSA_ENC, "rsaEncryption" },
{ SGD_SM2_1, "sm2sign" },
{ SGD_SM2_2, "sm2exchange" },
{ SGD_SM2_3, "sm2encrypt" }
};
ULONG SKF_PrintDevInfo(BIO *out, DEVINFO *devInfo)
{
size_t i, n;
char *serial = OPENSSL_buf2hexstr(devInfo->SerialNumber, strlen((char *)devInfo->SerialNumber));
BIO_printf(out, " %-16s : %d.%d\n", "Version", devInfo->Version.major, devInfo->Version.minor);
BIO_printf(out, " %-16s : %s\n", "Manufacturer", devInfo->Manufacturer);
BIO_printf(out, " %-16s : %s\n", "Issuer", devInfo->Issuer);
BIO_printf(out, " %-16s : %s\n", "Label", devInfo->Label);
BIO_printf(out, " %-16s : %s\n", "Serial Number", serial);
BIO_printf(out, " %-16s : %d.%d\n", "Firmware Version", devInfo->HWVersion.major, devInfo->HWVersion.minor);
BIO_printf(out, " %-16s : ", "Ciphers");
for (i = n = 0; i < OSSL_NELEM(skf_cipher_caps); i++) {
if ((devInfo->AlgSymCap & skf_cipher_caps[i].id) ==
skf_cipher_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_cipher_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Public Keys");
for (i = n = 0; i < OSSL_NELEM(skf_pkey_caps); i++) {
if ((devInfo->AlgAsymCap & skf_pkey_caps[i].id) ==
skf_pkey_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_pkey_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Digests");
for (i = n = 0; i < OSSL_NELEM(skf_digest_caps); i++) {
if ((devInfo->AlgHashCap & skf_digest_caps[i].id) ==
skf_digest_caps[i].id) {
BIO_printf(out, "%s%s", n ? "," : "", skf_digest_caps[i].name);
n++;
}
}
BIO_puts(out, "\n");
BIO_printf(out, " %-16s : ", "Auth Cipher");
for (i = 0; i < OSSL_NELEM(skf_cipher_caps); i++) {
if (devInfo->DevAuthAlgId == skf_cipher_caps[i].id) {
BIO_printf(out, "%s\n", skf_cipher_caps[i].name);
break;
}
}
if (i == OSSL_NELEM(skf_cipher_caps)) {
BIO_puts(out, "(unknown)\n");
}
if (devInfo->TotalSpace == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "Total Sapce", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "Total Sapce", devInfo->TotalSpace);
if (devInfo->FreeSpace == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "Free Space", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "Free Space", devInfo->FreeSpace);
if (devInfo->MaxECCBufferSize == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "MAX ECC Input", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "MAX ECC Input", devInfo->MaxECCBufferSize);
if (devInfo->MaxBufferSize == UINT_MAX)
BIO_printf(out, " %-16s : %s\n", "MAX Cipher Input", "(unlimited)");
else BIO_printf(out, " %-16s : %u\n", "MAX Cipher Input", devInfo->MaxBufferSize);
OPENSSL_free(serial);
return SAR_OK;
}
ULONG SKF_PrintRSAPublicKey(BIO *out, RSAPUBLICKEYBLOB *blob)
{
BIO_printf(out, "AlgID : %s\n", skf_algor_name(blob->AlgID));
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "Modulus:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Modulus, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PublicExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PublicExponent, MAX_RSA_EXPONENT_LEN);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintRSAPrivateKey(BIO *out, RSAPRIVATEKEYBLOB *blob)
{
BIO_printf(out, "AlgID : %s\n", skf_algor_name(blob->AlgID));
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "Modulus:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Modulus, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PublicExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PublicExponent, MAX_RSA_EXPONENT_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "PrivateExponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PrivateExponent, MAX_RSA_MODULUS_LEN);
BIO_puts(out, "\n");
BIO_puts(out, "Prime1:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime1, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Prime2:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime2, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Prime1Exponent:\n");
BIO_hex_string(out, 4, 16, blob->Prime1Exponent, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, " ");
BIO_puts(out, "Prime2Exponent:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Prime2Exponent, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
BIO_puts(out, "Coefficient:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Coefficient, MAX_RSA_MODULUS_LEN/2);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCPublicKey(BIO *out, ECCPUBLICKEYBLOB *blob)
{
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "XCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->XCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "YCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->YCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCPrivateKey(BIO *out, ECCPRIVATEKEYBLOB *blob)
{
BIO_printf(out, "BitLen : %u\n", blob->BitLen);
BIO_puts(out, "PrivateKey:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->PrivateKey, ECC_MAX_MODULUS_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCCipher(BIO *out, ECCCIPHERBLOB *blob)
{
BIO_puts(out, "XCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->XCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "YCoordinate:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->YCoordinate, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "HASH:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->HASH, 32);
BIO_puts(out, "\n");
BIO_printf(out, "CipherLen: %u\n", blob->CipherLen);
BIO_puts(out, "Cipher:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->Cipher, blob->CipherLen);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG SKF_PrintECCSignature(BIO *out, ECCSIGNATUREBLOB *blob)
{
BIO_puts(out, "r:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->r, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
BIO_puts(out, "s:\n");
BIO_puts(out, " ");
BIO_hex_string(out, 4, 16, blob->s, ECC_MAX_XCOORDINATE_BITS_LEN/8);
BIO_puts(out, "\n");
return SAR_OK;
}
ULONG DEVAPI SKF_GetAlgorName(ULONG ulAlgID, LPSTR *szName)
{
return SAR_OK;
}
ULONG DEVAPI SKF_PrintErrorString(BIO *out, ULONG ulError)
{
LPSTR str = NULL;
SKF_GetErrorString(ulError, &str);
BIO_printf(out, "SKF Error: %s\n", (char *)str);
return SAR_OK;
}

View File

@@ -455,12 +455,18 @@ int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
# ifndef OPENSSL_NO_SM2
int BN_sm2_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
# endif
const BIGNUM *BN_get0_nist_prime_192(void);
const BIGNUM *BN_get0_nist_prime_224(void);
const BIGNUM *BN_get0_nist_prime_256(void);
const BIGNUM *BN_get0_nist_prime_384(void);
const BIGNUM *BN_get0_nist_prime_521(void);
# ifndef OPENSSL_NO_SM2
const BIGNUM *BN_get0_sm2_prime_256(void);
# endif
int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a,
const BIGNUM *field, BN_CTX *ctx);

View File

@@ -75,6 +75,10 @@
#define SKF_MAX_FILE_SIZE (256*1024)
#define SKF_MAX_CERTIFICATE_SIZE (8*1024)
#define SKF_DEFAULT_ADMIN_PIN_RETRY_COUNT 6
#define SKF_DEFAULT_USER_PIN_RETRY_COUNT 6
#ifdef __cplusplus
extern "C" {
#endif
@@ -94,8 +98,11 @@ typedef struct {
int length;
} SKF_FILE_OP_PARAMS;
ULONG DEVAPI SKF_LoadLibrary(LPSTR so_path, LPSTR vendor);
ULONG DEVAPI SKF_UnloadLibrary(void);
ULONG DEVAPI SKF_OpenDevice(LPSTR devName, BYTE authKey[16], DEVINFO *devInfo, DEVHANDLE *phDev);
ULONG DEVAPI SKF_CloseDevice(DEVHANDLE hDev);
ULONG DEVAPI SKF_GetDevStateName(ULONG ulDevState, LPSTR *szName);
ULONG DEVAPI SKF_GetContainerTypeName(ULONG ulContainerType, LPSTR *szName);
ULONG DEVAPI SKF_GetAlgorName(ULONG ulAlgID, LPSTR *szName);
@@ -109,6 +116,16 @@ ULONG DEVAPI SKF_PrintECCSignature(BIO *out, ECCSIGNATUREBLOB *blob);
ULONG DEVAPI SKF_GetErrorString(ULONG ulError, LPSTR *szErrorStr);
ULONG DEVAPI SKF_NewECCCipher(ULONG ulCipherLen, ECCCIPHERBLOB **cipherBlob);
ULONG DEVAPI SKF_NewEnvelopedKey(ULONG ulCipherLen, ENVELOPEDKEYBLOB **envelopedKeyBlob);
ULONG DEVAPI SKF_ImportECCPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer, EC_KEY *ec_key, ULONG symmAlgId);
ULONG DEVAPI SKF_ImportRSAPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer, RSA *rsa, ULONG symmAlgId);
ULONG DEVAPI SKF_ImportPrivateKey(DEVHANDLE hDev, HCONTAINER hContainer, EVP_PKEY *pkey, ULONG symmAlgId);
ULONG DEVAPI SKF_ExportECCPublicKey(HCONTAINER hContainer, BOOL bSign, EC_KEY **pp);
ULONG DEVAPI SKF_ExportRSAPublicKey(HCONTAINER hContainer, BOOL bSign, RSA **pp);
ULONG DEVAPI SKF_ExportEVPPublicKey(HCONTAINER hContainer, BOOL bSign, EVP_PKEY **pp);
ULONG DEVAPI SKF_ImportX509CertificateByKeyUsage(HCONTAINER hContainer, X509 *x509);
ULONG DEVAPI SKF_ImportX509Certificate(HCONTAINER hContainer, BOOL bSign, X509 *x509);
ULONG DEVAPI SKF_ExportX509Certificate(HCONTAINER hContainer, BOOL bSign, X509 **px509);
/* BEGIN ERROR CODES */
/*
@@ -121,168 +138,178 @@ int ERR_load_SKF_strings(void);
/* Error codes for the SKF functions. */
/* Function codes. */
# define SKF_F_SKF_CANCELWAITFORDEVEVENT 108
# define SKF_F_SKF_CHANGEDEVAUTHKEY 109
# define SKF_F_SKF_CHANGEPIN 110
# define SKF_F_SKF_CLEARSECURESTATE 111
# define SKF_F_SKF_CLOSEAPPLICATION 112
# define SKF_F_SKF_CLOSECONTAINER 113
# define SKF_F_SKF_CLOSEHANDLE 114
# define SKF_F_SKF_CONNECTDEV 115
# define SKF_F_SKF_CREATEAPPLICATION 116
# define SKF_F_SKF_CREATECONTAINER 117
# define SKF_F_SKF_CREATEFILE 118
# define SKF_F_SKF_DECRYPT 119
# define SKF_F_SKF_DECRYPTFINAL 120
# define SKF_F_SKF_DECRYPTINIT 121
# define SKF_F_SKF_DECRYPTUPDATE 122
# define SKF_F_SKF_DELETEAPPLICATION 123
# define SKF_F_SKF_DELETECONTAINER 124
# define SKF_F_SKF_DELETEFILE 125
# define SKF_F_SKF_DEVAUTH 126
# define SKF_F_SKF_DIGEST 127
# define SKF_F_SKF_DIGESTFINAL 128
# define SKF_F_SKF_DIGESTINIT 129
# define SKF_F_SKF_DIGESTUPDATE 130
# define SKF_F_SKF_DISCONNECTDEV 131
# define SKF_F_SKF_ECCDECRYPT 184
# define SKF_F_SKF_ECCEXPORTSESSIONKEY 132
# define SKF_F_SKF_ECCSIGNDATA 133
# define SKF_F_SKF_ECCVERIFY 134
# define SKF_F_SKF_ENCRYPT 135
# define SKF_F_SKF_ENCRYPTFINAL 136
# define SKF_F_SKF_ENCRYPTINIT 137
# define SKF_F_SKF_ENCRYPTUPDATE 138
# define SKF_F_SKF_ENUMAPPLICATION 139
# define SKF_F_SKF_ENUMCONTAINER 140
# define SKF_F_SKF_ENUMDEV 141
# define SKF_F_SKF_ENUMFILES 142
# define SKF_F_SKF_EXPORTCERTIFICATE 143
# define SKF_F_SKF_EXPORTPUBLICKEY 144
# define SKF_F_SKF_EXTECCDECRYPT 145
# define SKF_F_SKF_EXTECCENCRYPT 146
# define SKF_F_SKF_EXTECCSIGN 147
# define SKF_F_SKF_EXTECCVERIFY 148
# define SKF_F_SKF_EXTRSAPRIKEYOPERATION 149
# define SKF_F_SKF_EXTRSAPUBKEYOPERATION 150
# define SKF_F_SKF_GENECCKEYPAIR 151
# define SKF_F_SKF_GENERATEAGREEMENTDATAANDKEYWITHECC 152
# define SKF_F_SKF_GENERATEAGREEMENTDATAWITHECC 153
# define SKF_F_SKF_GENERATEKEYWITHECC 154
# define SKF_F_SKF_GENEXTRSAKEY 155
# define SKF_F_SKF_GENRANDOM 156
# define SKF_F_SKF_GENRSAKEYPAIR 157
# define SKF_F_SKF_GETCONTAINERTYPE 158
# define SKF_F_SKF_GETDEVINFO 100
# define SKF_F_SKF_GETDEVSTATE 159
# define SKF_F_SKF_GETFILEINFO 160
# define SKF_F_SKF_GETPININFO 161
# define SKF_F_SKF_IMPORTCERTIFICATE 162
# define SKF_F_SKF_IMPORTECCKEYPAIR 163
# define SKF_F_SKF_IMPORTECCPRIVATEKEY 103
# define SKF_F_SKF_IMPORTRSAKEYPAIR 164
# define SKF_F_SKF_IMPORTSESSIONKEY 165
# define SKF_F_SKF_LOADLIBRARY 101
# define SKF_F_SKF_LOCKDEV 166
# define SKF_F_SKF_MAC 107
# define SKF_F_SKF_MACFINAL 167
# define SKF_F_SKF_MACINIT 168
# define SKF_F_SKF_MACUPDATE 169
# define SKF_F_SKF_METHOD_LOAD_LIBRARY 104
# define SKF_F_SKF_NEWECCCIPHER 102
# define SKF_F_SKF_NEWENVELOPEDKEY 183
# define SKF_F_SKF_OPENAPPLICATION 170
# define SKF_F_SKF_OPENCONTAINER 171
# define SKF_F_SKF_READFILE 172
# define SKF_F_SKF_RSAEXPORTSESSIONKEY 173
# define SKF_F_SKF_RSASIGNDATA 174
# define SKF_F_SKF_RSAVERIFY 175
# define SKF_F_SKF_SETLABEL 176
# define SKF_F_SKF_SETSYMMKEY 177
# define SKF_F_SKF_TRANSMIT 178
# define SKF_F_SKF_UNBLOCKPIN 179
# define SKF_F_SKF_UNLOCKDEV 180
# define SKF_F_SKF_VERIFYPIN 181
# define SKF_F_SKF_W 105
# define SKF_F_SKF_WAITFORDEVEVENT 106
# define SKF_F_SKF_WRITEFILE 182
# define SKF_F_SKF_CANCELWAITFORDEVEVENT 100
# define SKF_F_SKF_CHANGEDEVAUTHKEY 101
# define SKF_F_SKF_CHANGEPIN 102
# define SKF_F_SKF_CLEARSECURESTATE 103
# define SKF_F_SKF_CLOSEAPPLICATION 104
# define SKF_F_SKF_CLOSECONTAINER 105
# define SKF_F_SKF_CLOSEDEVICE 106
# define SKF_F_SKF_CLOSEHANDLE 107
# define SKF_F_SKF_CONNECTDEV 108
# define SKF_F_SKF_CREATEAPPLICATION 109
# define SKF_F_SKF_CREATECONTAINER 110
# define SKF_F_SKF_CREATEFILE 111
# define SKF_F_SKF_DECRYPT 112
# define SKF_F_SKF_DECRYPTFINAL 113
# define SKF_F_SKF_DECRYPTINIT 114
# define SKF_F_SKF_DECRYPTUPDATE 115
# define SKF_F_SKF_DELETEAPPLICATION 116
# define SKF_F_SKF_DELETECONTAINER 117
# define SKF_F_SKF_DELETEFILE 118
# define SKF_F_SKF_DEVAUTH 119
# define SKF_F_SKF_DIGEST 120
# define SKF_F_SKF_DIGESTFINAL 121
# define SKF_F_SKF_DIGESTINIT 122
# define SKF_F_SKF_DIGESTUPDATE 123
# define SKF_F_SKF_DISCONNECTDEV 124
# define SKF_F_SKF_ECCDECRYPT 125
# define SKF_F_SKF_ECCEXPORTSESSIONKEY 126
# define SKF_F_SKF_ECCSIGNDATA 127
# define SKF_F_SKF_ECCVERIFY 128
# define SKF_F_SKF_ENCRYPT 129
# define SKF_F_SKF_ENCRYPTFINAL 130
# define SKF_F_SKF_ENCRYPTINIT 131
# define SKF_F_SKF_ENCRYPTUPDATE 132
# define SKF_F_SKF_ENUMAPPLICATION 133
# define SKF_F_SKF_ENUMCONTAINER 134
# define SKF_F_SKF_ENUMDEV 135
# define SKF_F_SKF_ENUMFILES 136
# define SKF_F_SKF_EXPORTCERTIFICATE 137
# define SKF_F_SKF_EXPORTECCPUBLICKEY 138
# define SKF_F_SKF_EXPORTEVPPUBLICKEY 139
# define SKF_F_SKF_EXPORTPUBLICKEY 140
# define SKF_F_SKF_EXPORTRSAPUBLICKEY 141
# define SKF_F_SKF_EXPORTX509CERTIFICATE 142
# define SKF_F_SKF_EXTECCDECRYPT 143
# define SKF_F_SKF_EXTECCENCRYPT 144
# define SKF_F_SKF_EXTECCSIGN 145
# define SKF_F_SKF_EXTECCVERIFY 146
# define SKF_F_SKF_EXTRSAPRIKEYOPERATION 147
# define SKF_F_SKF_EXTRSAPUBKEYOPERATION 148
# define SKF_F_SKF_GENECCKEYPAIR 149
# define SKF_F_SKF_GENERATEAGREEMENTDATAANDKEYWITHECC 150
# define SKF_F_SKF_GENERATEAGREEMENTDATAWITHECC 151
# define SKF_F_SKF_GENERATEKEYWITHECC 152
# define SKF_F_SKF_GENEXTRSAKEY 153
# define SKF_F_SKF_GENRANDOM 154
# define SKF_F_SKF_GENRSAKEYPAIR 155
# define SKF_F_SKF_GETCONTAINERTYPE 156
# define SKF_F_SKF_GETDEVINFO 157
# define SKF_F_SKF_GETDEVSTATE 158
# define SKF_F_SKF_GETFILEINFO 159
# define SKF_F_SKF_GETPININFO 160
# define SKF_F_SKF_IMPORTCERTIFICATE 161
# define SKF_F_SKF_IMPORTECCKEYPAIR 162
# define SKF_F_SKF_IMPORTECCPRIVATEKEY 163
# define SKF_F_SKF_IMPORTPRIVATEKEY 164
# define SKF_F_SKF_IMPORTRSAKEYPAIR 165
# define SKF_F_SKF_IMPORTRSAPRIVATEKEY 166
# define SKF_F_SKF_IMPORTSESSIONKEY 167
# define SKF_F_SKF_IMPORTX509CERTIFICATEBYKEYUSAGE 168
# define SKF_F_SKF_LOADLIBRARY 169
# define SKF_F_SKF_LOCKDEV 170
# define SKF_F_SKF_MAC 171
# define SKF_F_SKF_MACFINAL 172
# define SKF_F_SKF_MACINIT 173
# define SKF_F_SKF_MACUPDATE 174
# define SKF_F_SKF_METHOD_LOAD_LIBRARY 175
# define SKF_F_SKF_NEWECCCIPHER 176
# define SKF_F_SKF_NEWENVELOPEDKEY 177
# define SKF_F_SKF_OPENAPPLICATION 178
# define SKF_F_SKF_OPENCONTAINER 179
# define SKF_F_SKF_OPENDEVICE 180
# define SKF_F_SKF_READFILE 181
# define SKF_F_SKF_RSAEXPORTSESSIONKEY 182
# define SKF_F_SKF_RSASIGNDATA 183
# define SKF_F_SKF_RSAVERIFY 184
# define SKF_F_SKF_SETLABEL 185
# define SKF_F_SKF_SETSYMMKEY 186
# define SKF_F_SKF_TRANSMIT 187
# define SKF_F_SKF_UNBLOCKPIN 188
# define SKF_F_SKF_UNLOCKDEV 189
# define SKF_F_SKF_VERIFYPIN 190
# define SKF_F_SKF_WAITFORDEVEVENT 191
# define SKF_F_SKF_WRITEFILE 192
/* Reason codes. */
# define SKF_R_APPLICATION_ALREADY_EXIST 110
# define SKF_R_APPLICATION_NOT_EXISAT 111
# define SKF_R_APPLICATION_NOT_EXIST 171
# define SKF_R_BUFFER_TOO_SMALL 112
# define SKF_R_CERTIFICATE_NOT_FOUND 113
# define SKF_R_CSP_IMPORT_PUBLIC_KEY_ERROR 114
# define SKF_R_DECRYPT_INVALID_PADDING 115
# define SKF_R_DEVICE_REMOVED 116
# define SKF_R_DIGEST_ERROR 117
# define SKF_R_DSO_LOAD_FAILURE 105
# define SKF_R_ENVELOPE_PRVATE_KEY_FAILURE 104
# define SKF_R_EXPORT_FAILED 118
# define SKF_R_FAILURE 108
# define SKF_R_FILE_ALREADY_EXIST 119
# define SKF_R_FILE_ERROR 120
# define SKF_R_FILE_NOT_EXIST 121
# define SKF_R_FUNCTION_NOT_SUPPORTED 106
# define SKF_R_HASH_NOT_EQUAL 122
# define SKF_R_IMPORT_ENVELOPED_ECC_PRIVATE_KEY_FAILURE 102
# define SKF_R_INVALID_APPLICATION_NAME 123
# define SKF_R_INVALID_CONTAINER_TYPE 103
# define SKF_R_INVALID_DIGEST_HANDLE 124
# define SKF_R_INVALID_HANDLE 125
# define SKF_R_INVALID_INPUT_LENGTH 126
# define SKF_R_INVALID_INPUT_VALUE 127
# define SKF_R_INVALID_KEY_INFO_TYPE 128
# define SKF_R_INVALID_KEY_USAGE 129
# define SKF_R_INVALID_MAC_LENGTH 130
# define SKF_R_INVALID_MODULUS_LENGTH 131
# define SKF_R_INVALID_NAME_LENGTH 132
# define SKF_R_INVALID_OBJECT 133
# define SKF_R_INVALID_PARAMETER 134
# define SKF_R_INVALID_PIN 135
# define SKF_R_INVALID_PIN_LENGTH 136
# define SKF_R_INVALID_RSA_MODULUS_LENGTH 137
# define SKF_R_INVALID_USER_TYPE 138
# define SKF_R_KEY_NOT_FOUND 139
# define SKF_R_LOAD_LIBRARY_FAILURE 101
# define SKF_R_MEMORY_ERROR 140
# define SKF_R_NOT_INITIALIZED 141
# define SKF_R_NOT_SUPPORTED_CIPHER_ALGOR 168
# define SKF_R_NOT_SUPPORTED_DIGEST_ALGOR 169
# define SKF_R_NOT_SUPPORTED_PKEY_ALGOR 170
# define SKF_R_NO_EVENT 142
# define SKF_R_NO_SPACE 143
# define SKF_R_NULL_ARGUMENT 100
# define SKF_R_OPERATION_NOT_SUPPORTED 144
# define SKF_R_PIN_INCORRECT 145
# define SKF_R_PIN_LOCKED 146
# define SKF_R_RANDOM_GENERATION_FAILED 147
# define SKF_R_READ_FILE_FAILURE 148
# define SKF_R_RSA_DECRYPTION_FAILURE 149
# define SKF_R_RSA_ENCRYPTION_FAILURE 150
# define SKF_R_RSA_KEY_GENERATION_FAILURE 151
# define SKF_R_SKF_METHOD_NOT_INITIALIZED 107
# define SKF_R_SUCCESS 152
# define SKF_R_TIMEOUT 153
# define SKF_R_UNKNOWN_ERROR 109
# define SKF_R_UNKNOWN_VENDOR 158
# define SKF_R_USER_ALREADY_LOGGED_IN 154
# define SKF_R_USER_NOT_LOGGED_IN 155
# define SKF_R_USER_PIN_NOT_INITIALIZED 156
# define SKF_R_WISEC_AUTH_BLOCKED 159
# define SKF_R_WISEC_CERTNOUSAGEERR 160
# define SKF_R_WISEC_CERTUSAGEERR 161
# define SKF_R_WISEC_CONTAINER_EXISTS 162
# define SKF_R_WISEC_CONTAINER_NOT_EXISTS 163
# define SKF_R_WISEC_DEVNOAUTH 164
# define SKF_R_WISEC_FILEATTRIBUTEERR 165
# define SKF_R_WISEC_INVALIDCONTAINERERR 166
# define SKF_R_WISEC_KEYNOUSAGEERR 167
# define SKF_R_WRITE_FILE_FAILURE 157
# define SKF_R_APPLICATION_ALREADY_EXIST 100
# define SKF_R_APPLICATION_NOT_EXIST 101
# define SKF_R_BUFFER_TOO_SMALL 102
# define SKF_R_CERTIFICATE_NOT_FOUND 103
# define SKF_R_CONTAINER_TYPE_NOT_MATCH 104
# define SKF_R_CSP_IMPORT_PUBLIC_KEY_ERROR 105
# define SKF_R_DECRYPT_INVALID_PADDING 106
# define SKF_R_DEVICE_REMOVED 107
# define SKF_R_DIGEST_ERROR 108
# define SKF_R_DSO_LOAD_FAILURE 109
# define SKF_R_EXPORT_FAILED 110
# define SKF_R_FAILURE 111
# define SKF_R_FILE_ALREADY_EXIST 112
# define SKF_R_FILE_ERROR 113
# define SKF_R_FILE_NOT_EXIST 114
# define SKF_R_FUNCTION_NOT_SUPPORTED 115
# define SKF_R_HASH_NOT_EQUAL 116
# define SKF_R_INVALID_APPLICATION_NAME 117
# define SKF_R_INVALID_CONTAINER_TYPE 118
# define SKF_R_INVALID_DIGEST_HANDLE 119
# define SKF_R_INVALID_ECC_PUBLIC_KEY 120
# define SKF_R_INVALID_HANDLE 121
# define SKF_R_INVALID_INPUT_LENGTH 122
# define SKF_R_INVALID_INPUT_VALUE 123
# define SKF_R_INVALID_KEY_INFO_TYPE 124
# define SKF_R_INVALID_KEY_USAGE 125
# define SKF_R_INVALID_MAC_LENGTH 126
# define SKF_R_INVALID_MODULUS_LENGTH 127
# define SKF_R_INVALID_NAME_LENGTH 128
# define SKF_R_INVALID_OBJECT 129
# define SKF_R_INVALID_PARAMETER 130
# define SKF_R_INVALID_PIN 131
# define SKF_R_INVALID_PIN_LENGTH 132
# define SKF_R_INVALID_RSA_MODULUS_LENGTH 133
# define SKF_R_INVALID_RSA_PUBLIC_KEY 134
# define SKF_R_INVALID_USER_TYPE 135
# define SKF_R_KEY_NOT_FOUND 136
# define SKF_R_LOAD_LIBRARY_FAILURE 137
# define SKF_R_MEMORY_ERROR 138
# define SKF_R_NOT_INITIALIZED 139
# define SKF_R_NOT_SUPPORTED_CIPHER_ALGOR 140
# define SKF_R_NOT_SUPPORTED_DIGEST_ALGOR 141
# define SKF_R_NOT_SUPPORTED_PKEY_ALGOR 142
# define SKF_R_NO_EVENT 143
# define SKF_R_NO_SPACE 144
# define SKF_R_OPERATION_NOT_SUPPORTED 145
# define SKF_R_PARSE_CERTIFICATE_FAILURE 146
# define SKF_R_PIN_INCORRECT 147
# define SKF_R_PIN_LOCKED 148
# define SKF_R_RANDOM_GENERATION_FAILED 149
# define SKF_R_READ_FILE_FAILURE 150
# define SKF_R_RSA_DECRYPTION_FAILURE 151
# define SKF_R_RSA_ENCRYPTION_FAILURE 152
# define SKF_R_RSA_KEY_GENERATION_FAILURE 153
# define SKF_R_SKF_METHOD_NOT_INITIALIZED 154
# define SKF_R_SUCCESS 155
# define SKF_R_TIMEOUT 156
# define SKF_R_UNKNOWN_CERTIFICATE_KEYUSAGE 157
# define SKF_R_UNKNOWN_ERROR 158
# define SKF_R_UNKNOWN_VENDOR 159
# define SKF_R_UNSUPPORTED_PRIVATE_KEY_TYPE 160
# define SKF_R_USER_ALREADY_LOGGED_IN 161
# define SKF_R_USER_NOT_LOGGED_IN 162
# define SKF_R_USER_PIN_NOT_INITIALIZED 163
# define SKF_R_WISEC_AUTH_BLOCKED 164
# define SKF_R_WISEC_CERTNOUSAGEERR 165
# define SKF_R_WISEC_CERTUSAGEERR 166
# define SKF_R_WISEC_CONTAINER_EXISTS 167
# define SKF_R_WISEC_CONTAINER_NOT_EXISTS 168
# define SKF_R_WISEC_DEVNOAUTH 169
# define SKF_R_WISEC_FILEATTRIBUTEERR 170
# define SKF_R_WISEC_INVALIDCONTAINERERR 171
# define SKF_R_WISEC_KEYNOUSAGEERR 172
# define SKF_R_WRITE_FILE_FAILURE 173
# ifdef __cplusplus
# ifdef __cplusplus
}
# endif
# endif
#endif
#endif

View File

@@ -41,9 +41,9 @@ extern "C" {
*/
# define OPENSSL_VERSION_NUMBER 0x1010004fL
# ifdef OPENSSL_FIPS
# define OPENSSL_VERSION_TEXT "GmSSL 2.4.3 - OpenSSL 1.1.0d-fips 12 Jan 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.4.5 - OpenSSL 1.1.0d-fips 1 Feb 2019"
# else
# define OPENSSL_VERSION_TEXT "GmSSL 2.4.3 - OpenSSL 1.1.0d 12 Jan 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.4.5 - OpenSSL 1.1.0d 1 Feb 2019"
# endif
/*-

View File

@@ -60,7 +60,12 @@
#include <openssl/asn1.h>
#define PAILLIER_MIN_KEY_BITS 2048
#define PAILLIER_MIN_KEY_BITS 2048
#define PAILLIER_OP_UNDEF 0
#define PAILLIER_OP_ADD 1
#define PAILLIER_OP_SCALAR_MUL 2
#ifdef __cplusplus
extern "C" {
@@ -119,9 +124,11 @@ int ERR_load_PAILLIER_strings(void);
# define PAILLIER_F_PAILLIER_ENCRYPT 104
# define PAILLIER_F_PAILLIER_GENERATE_KEY 105
# define PAILLIER_F_PAILLIER_NEW 106
# define PAILLIER_F_PAILLIER_PLAINTEXT_SIZE 117
# define PAILLIER_F_PAILLIER_PRIV_DECODE 111
# define PAILLIER_F_PAILLIER_PRIV_ENCODE 112
# define PAILLIER_F_PAILLIER_PUB_DECODE 107
# define PAILLIER_F_PAILLIER_SIZE 118
# define PAILLIER_F_PKEY_PAILLIER_CTRL 113
# define PAILLIER_F_PKEY_PAILLIER_CTRL_STR 114
# define PAILLIER_F_PKEY_PAILLIER_DECRYPT 108

View File

@@ -467,12 +467,13 @@ ULONG DEVAPI SKF_ECCSignData(
ULONG ulDigestLen,
ECCSIGNATUREBLOB *pSignature);
/* Extension */
#ifdef SKF_HAS_ECCDECRYPT
ULONG DEVAPI SKF_ECCDecrypt(
HCONTAINER hContainer,
ECCCIPHERBLOB *pCipherBlob,
BYTE *pbPlainText,
ULONG *pulPlainTextLen);
#endif
/* 7.6.14 */
ULONG DEVAPI SKF_ECCVerify(

View File

@@ -94,7 +94,7 @@ int SM2_compute_message_digest(const EVP_MD *id_md, const EVP_MD *msg_md,
int SM2_sign_setup(EC_KEY *ec_key, BN_CTX *ctx, BIGNUM **a, BIGNUM **b);
ECDSA_SIG *SM2_do_sign_ex(const unsigned char *dgst, int dgstlen,
const BIGNUM *a, const BIGNUM *b, EC_KEY *ec_key);
const BIGNUM *k, const BIGNUM *x, EC_KEY *ec_key);
ECDSA_SIG *SM2_do_sign(const unsigned char *dgst, int dgst_len,
EC_KEY *ec_key);
int SM2_do_verify(const unsigned char *dgst, int dgstlen,

File diff suppressed because it is too large Load Diff

View File

@@ -1,411 +1,411 @@
SSL_SESSION_get0_id_context 1 1_1_0d EXIST::FUNCTION:
SSL_get_error 2 1_1_0d EXIST::FUNCTION:
SSL_get_ex_data_X509_STORE_CTX_idx 3 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_client_CA_list 4 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_serverinfo_file 5 1_1_0d EXIST::FUNCTION:
SSL_state_string_long 6 1_1_0d EXIST::FUNCTION:
DTLSv1_2_client_method 7 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_CTX_set_security_callback 8 1_1_0d EXIST::FUNCTION:
SSL_accept 9 1_1_0d EXIST::FUNCTION:
SSL_use_certificate 10 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_param 11 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_tmp_dh_callback 12 1_1_0d EXIST::FUNCTION:DH
SSL_CIPHER_get_bits 13 1_1_0d EXIST::FUNCTION:
SSL_CTX_set1_param 14 1_1_0d EXIST::FUNCTION:
SSL_CTX_remove_session 15 1_1_0d EXIST::FUNCTION:
SSL_set_session_id_context 16 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_id 17 1_1_0d EXIST::FUNCTION:
SSL_session_reused 18 1_1_0d EXIST::FUNCTION:
SSL_connect 19 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set_time 20 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_passwd_cb_userdata 21 1_1_0d EXIST::FUNCTION:
SSL_get_info_callback 22 1_1_0d EXIST::FUNCTION:
SSL_set_connect_state 23 1_1_0d EXIST::FUNCTION:
SSL_test_functions 24 1_1_0d EXIST::FUNCTION:UNIT_TEST
DTLSv1_server_method 25 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_set_client_CA_list 26 1_1_0d EXIST::FUNCTION:
TLS_client_method 27 1_1_0d EXIST::FUNCTION:
SSL_set_psk_client_callback 28 1_1_0d EXIST::FUNCTION:PSK
DTLSv1_2_server_method 29 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_CTX_get0_security_ex_data 30 1_1_0d EXIST::FUNCTION:
GMTLS_client_method 31 1_1_0d EXIST::FUNCTION:GMTLS
SSL_SESSION_set1_id 32 1_1_0d EXIST::FUNCTION:
SSL_get_quiet_shutdown 33 1_1_0d EXIST::FUNCTION:
SSL_get_SSL_CTX 34 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_set1_prefix 35 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_clear_flags 36 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_cipher_nid 37 1_1_0d EXIST::FUNCTION:
SSL_get_srp_userinfo 38 1_1_0d EXIST::FUNCTION:SRP
SSL_add1_host 39 1_1_0d EXIST::FUNCTION:
SSL_get_default_timeout 40 1_1_0d EXIST::FUNCTION:
SSL_set1_host 41 1_1_0d EXIST::FUNCTION:
SSL_set_verify 42 1_1_0d EXIST::FUNCTION:
SSL_ctrl 43 1_1_0d EXIST::FUNCTION:
DTLSv1_client_method 44 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_CTX_set_verify_depth 45 1_1_0d EXIST::FUNCTION:
SSL_set_verify_result 46 1_1_0d EXIST::FUNCTION:
SSL_set_tlsext_use_srtp 47 1_1_0d EXIST::FUNCTION:SRTP
BIO_new_ssl 48 1_1_0d EXIST::FUNCTION:
PEM_write_SSL_SESSION 49 1_1_0d EXIST::FUNCTION:STDIO
SSL_get_psk_identity_hint 50 1_1_0d EXIST::FUNCTION:PSK
SSL_set_fd 51 1_1_0d EXIST::FUNCTION:SOCK
SSL_get_verify_depth 52 1_1_0d EXIST::FUNCTION:
SSL_get_state 53 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_callback 54 1_1_0d EXIST::FUNCTION:
SSL_CTX_set0_ctlog_store 55 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_sess_get_get_cb 56 1_1_0d EXIST::FUNCTION:
SSL_CTX_sessions 57 1_1_0d EXIST::FUNCTION:
SSL_set_generate_session_id 58 1_1_0d EXIST::FUNCTION:
SSL_get_shared_sigalgs 59 1_1_0d EXIST::FUNCTION:
SSL_rstate_string_long 60 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_ssl_version 61 1_1_0d EXIST::FUNCTION:
TLSv1_2_client_method 62 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
SSL_waiting_for_async 63 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_alpn_select_cb 64 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_cert_store 65 1_1_0d EXIST::FUNCTION:
GMTLS_server_method 66 1_1_0d EXIST::FUNCTION:GMTLS
SSL_COMP_get_name 67 1_1_0d EXIST::FUNCTION:
SSL_alert_type_string 68 1_1_0d EXIST::FUNCTION:
SSL_set_default_passwd_cb_userdata 69 1_1_0d EXIST::FUNCTION:
SSL_renegotiate 70 1_1_0d EXIST::FUNCTION:
PEM_read_SSL_SESSION 71 1_1_0d EXIST::FUNCTION:STDIO
SSL_CTX_use_serverinfo 72 1_1_0d EXIST::FUNCTION:
SSL_COMP_get0_name 73 1_1_0d EXIST::FUNCTION:
SSL_set_security_level 74 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_ct_validation_callback 75 1_1_0d EXIST::FUNCTION:CT
SSL_get_security_level 76 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_set_get_cb 77 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_mode 78 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_not_resumable_session_callback 79 1_1_0d EXIST::FUNCTION:
SSL_load_client_CA_file 80 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_psk_client_callback 81 1_1_0d EXIST::FUNCTION:PSK
SSL_CIPHER_get_kx_nid 82 1_1_0d EXIST::FUNCTION:
SSL_get_srp_N 83 1_1_0d EXIST::FUNCTION:SRP
SSL_is_server 84 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_next_proto_select_cb 85 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_set_accept_state 86 1_1_0d EXIST::FUNCTION:
SSL_client_version 87 1_1_0d EXIST::FUNCTION:
SSL_set_wfd 88 1_1_0d EXIST::FUNCTION:SOCK
SSL_set_read_ahead 89 1_1_0d EXIST::FUNCTION:
SSL_set0_rbio 90 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd_value_type 91 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_finish 92 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_security_callback 93 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_info_callback 94 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_id 95 1_1_0d EXIST::FUNCTION:
SSL_use_PrivateKey 96 1_1_0d EXIST::FUNCTION:
SSL_has_pending 97 1_1_0d EXIST::FUNCTION:
SSL_add_dir_cert_subjects_to_stack 98 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_set_flags 99 1_1_0d EXIST::FUNCTION:
SSL_dup_CA_list 100 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_username 101 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_use_PrivateKey_ASN1 102 1_1_0d EXIST::FUNCTION:
SSL_set_debug 103 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0
SSL_renegotiate_abbreviated 104 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_ctlog_list_file 105 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_use_certificate_ASN1 106 1_1_0d EXIST::FUNCTION:
SSL_get_peer_certificate 107 1_1_0d EXIST::FUNCTION:
SSL_add_client_CA 108 1_1_0d EXIST::FUNCTION:
SSL_new 109 1_1_0d EXIST::FUNCTION:
SSL_srp_server_param_with_username 110 1_1_0d EXIST::FUNCTION:SRP
SSL_get0_dane 111 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_description 112 1_1_0d EXIST::FUNCTION:
SSL_CTX_SRP_CTX_init 113 1_1_0d EXIST::FUNCTION:SRP
SSL_check_chain 114 1_1_0d EXIST::FUNCTION:
SSL_free 115 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_cipher 116 1_1_0d EXIST::FUNCTION:
SSL_get_session 117 1_1_0d EXIST::FUNCTION:
SSL_do_handshake 118 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_get_remove_cb 119 1_1_0d EXIST::FUNCTION:
SSL_set_tmp_dh_callback 120 1_1_0d EXIST::FUNCTION:DH
SSL_get_shutdown 121 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_PrivateKey 122 1_1_0d EXIST::FUNCTION:
SSL_CTX_ct_is_enabled 123 1_1_0d EXIST::FUNCTION:CT
SSL_set_session_ticket_ext 124 1_1_0d EXIST::FUNCTION:
BIO_ssl_shutdown 125 1_1_0d EXIST::FUNCTION:
SSL_get_certificate 126 1_1_0d EXIST::FUNCTION:
SSL_set_not_resumable_session_callback 127 1_1_0d EXIST::FUNCTION:
SSL_extension_supported 128 1_1_0d EXIST::FUNCTION:
SSLv3_client_method 129 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_CTX_has_client_custom_ext 130 1_1_0d EXIST::FUNCTION:
BIO_new_buffer_ssl_connect 131 1_1_0d EXIST::FUNCTION:
SSL_is_init_finished 132 1_1_0d EXIST::FUNCTION:
SSL_COMP_get_compression_methods 133 1_1_0d EXIST::FUNCTION:
SSL_set_shutdown 134 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_set_new_cb 135 1_1_0d EXIST::FUNCTION:
SSL_set_ct_validation_callback 136 1_1_0d EXIST::FUNCTION:CT
SSL_use_certificate_chain_file 137 1_1_0d EXIST::FUNCTION:
SSL_check_private_key 138 1_1_0d EXIST::FUNCTION:
SSL_get_version 139 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_session 140 1_1_0d EXIST::FUNCTION:
SSL_set0_security_ex_data 141 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_purpose 142 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_psk_server_callback 143 1_1_0d EXIST::FUNCTION:PSK
SSL_CTX_set_generate_session_id 1 1_1_0d EXIST::FUNCTION:
SSL_get_peer_cert_chain 2 1_1_0d EXIST::FUNCTION:
SSL_is_init_finished 3 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_depth 4 1_1_0d EXIST::FUNCTION:
SSL_set_verify_result 5 1_1_0d EXIST::FUNCTION:
TLS_client_method 6 1_1_0d EXIST::FUNCTION:
SSL_trace 7 1_1_0d EXIST::FUNCTION:SSL_TRACE
SSL_COMP_get0_name 8 1_1_0d EXIST::FUNCTION:
SSL_set_session 9 1_1_0d EXIST::FUNCTION:
SSL_renegotiate_abbreviated 10 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_cb_arg 11 1_1_0d EXIST::FUNCTION:SRP
SSL_get_srtp_profiles 12 1_1_0d EXIST::FUNCTION:SRTP
SSL_CTX_set_ctlog_list_file 13 1_1_0d EXIST::FUNCTION:CT
SSL_up_ref 14 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_password 15 1_1_0d EXIST::FUNCTION:SRP
SSL_set_verify_depth 16 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_compress_id 17 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_certificate 18 1_1_0d EXIST::FUNCTION:
TLS_method 19 1_1_0d EXIST::FUNCTION:
SSL_get0_dane 20 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_set_get_cb 21 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_security_level 22 1_1_0d EXIST::FUNCTION:
SSLv3_client_method 23 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_get_privatekey 24 1_1_0d EXIST::FUNCTION:
SSL_get_wbio 25 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_client_cert_cb 26 1_1_0d EXIST::FUNCTION:
TLSv1_client_method 27 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
SSL_CTX_add_client_CA 28 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_PrivateKey_ASN1 29 1_1_0d EXIST::FUNCTION:
SSL_get_current_compression 30 1_1_0d EXIST::FUNCTION:
SSL_is_gmtls 31 1_1_0d EXIST::FUNCTION:
PEM_read_SSL_SESSION 32 1_1_0d EXIST::FUNCTION:STDIO
BIO_ssl_copy_session_id 33 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_client_CA_list 34 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_cipher_nid 35 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_alpn_protos 36 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey 37 1_1_0d EXIST::FUNCTION:RSA
SSL_SESSION_has_ticket 38 1_1_0d EXIST::FUNCTION:
SSL_SESSION_up_ref 39 1_1_0d EXIST::FUNCTION:
SSL_extension_supported 40 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_digest_nid 41 1_1_0d EXIST::FUNCTION:
GMTLS_client_method 42 1_1_0d EXIST::FUNCTION:GMTLS
SSL_has_matching_session_id 43 1_1_0d EXIST::FUNCTION:
SSL_version 44 1_1_0d EXIST::FUNCTION:
SSL_set_not_resumable_session_callback 45 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_read_buffer_len 46 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_security_callback 47 1_1_0d EXIST::FUNCTION:
SSL_get_version 48 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_hostname 49 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_security_level 50 1_1_0d EXIST::FUNCTION:
SSL_SESSION_print_keylog 51 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_psk_client_callback 52 1_1_0d EXIST::FUNCTION:PSK
SSL_CIPHER_find 53 1_1_0d EXIST::FUNCTION:
DTLS_server_method 54 1_1_0d EXIST::FUNCTION:
SSL_get_certificate 55 1_1_0d EXIST::FUNCTION:
SSL_set_debug 56 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0
SSL_get_state 57 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_client_custom_ext 58 1_1_0d EXIST::FUNCTION:
SSL_set_generate_session_id 59 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_default_passwd_cb 60 1_1_0d EXIST::FUNCTION:
SSL_set1_host 61 1_1_0d EXIST::FUNCTION:
SSL_want 62 1_1_0d EXIST::FUNCTION:
DTLSv1_2_client_method 63 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_set0_wbio 64 1_1_0d EXIST::FUNCTION:
BIO_new_buffer_ssl_connect 65 1_1_0d EXIST::FUNCTION:
SSL_set1_param 66 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_id 67 1_1_0d EXIST::FUNCTION:
SSL_CTX_load_verify_locations 68 1_1_0d EXIST::FUNCTION:
SSL_get_default_passwd_cb 69 1_1_0d EXIST::FUNCTION:
SSL_connect 70 1_1_0d EXIST::FUNCTION:
BIO_new_ssl 71 1_1_0d EXIST::FUNCTION:
SSL_set_session_secret_cb 72 1_1_0d EXIST::FUNCTION:
SSL_peek 73 1_1_0d EXIST::FUNCTION:
TLSv1_1_method 74 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
SSL_free 75 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cert_cb 76 1_1_0d EXIST::FUNCTION:
DTLSv1_2_method 77 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_check_chain 78 1_1_0d EXIST::FUNCTION:
SSL_dane_tlsa_add 79 1_1_0d EXIST::FUNCTION:
ERR_load_SSL_strings 80 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_PrivateKey_file 81 1_1_0d EXIST::FUNCTION:
TLSv1_method 82 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
SSL_CONF_CTX_finish 83 1_1_0d EXIST::FUNCTION:
SSL_CTX_set0_security_ex_data 84 1_1_0d EXIST::FUNCTION:
SSL_CTX_SRP_CTX_init 85 1_1_0d EXIST::FUNCTION:SRP
SSL_set_purpose 86 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_tlsext_use_srtp 87 1_1_0d EXIST::FUNCTION:SRTP
SSL_get_security_callback 88 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_passwd_cb 89 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_alpn_select_cb 90 1_1_0d EXIST::FUNCTION:
SSL_accept 91 1_1_0d EXIST::FUNCTION:
SSL_get_options 92 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_bits 93 1_1_0d EXIST::FUNCTION:
SSL_get0_verified_chain 94 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_is_aead 95 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_timeout 96 1_1_0d EXIST::FUNCTION:
SSL_CTX_SRP_CTX_free 97 1_1_0d EXIST::FUNCTION:SRP
SSL_get_server_random 98 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_cert_store 99 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_param 100 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_ex_data 101 1_1_0d EXIST::FUNCTION:
SSL_COMP_get_compression_methods 102 1_1_0d EXIST::FUNCTION:
SSL_certs_clear 103 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_set_flags 104 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_client_CA_list 105 1_1_0d EXIST::FUNCTION:
SSL_get0_peername 106 1_1_0d EXIST::FUNCTION:
TLSv1_1_client_method 107 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
SSL_use_PrivateKey 108 1_1_0d EXIST::FUNCTION:
SSL_get_psk_identity_hint 109 1_1_0d EXIST::FUNCTION:PSK
TLS_server_method 110 1_1_0d EXIST::FUNCTION:
SSL_renegotiate 111 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_ex_data 112 1_1_0d EXIST::FUNCTION:
SSL_get1_session 113 1_1_0d EXIST::FUNCTION:
SSL_set_session_id_context 114 1_1_0d EXIST::FUNCTION:
SSL_SRP_CTX_init 115 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_get_quiet_shutdown 116 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_serverinfo_file 117 1_1_0d EXIST::FUNCTION:
SSL_use_PrivateKey_file 118 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set1_id 119 1_1_0d EXIST::FUNCTION:
SSL_set_ssl_method 120 1_1_0d EXIST::FUNCTION:
SSL_get0_param 121 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_quiet_shutdown 122 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_username 123 1_1_0d EXIST::FUNCTION:SRP
SSL_use_certificate_chain_file 124 1_1_0d EXIST::FUNCTION:
SSL_CTX_flush_sessions 125 1_1_0d EXIST::FUNCTION:
SSL_get_ssl_method 126 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_ctlog_store 127 1_1_0d EXIST::FUNCTION:CT
SSL_get_srp_username 128 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_client_cert_engine 129 1_1_0d EXIST::FUNCTION:ENGINE
SSL_CTX_set_cookie_generate_cb 130 1_1_0d EXIST::FUNCTION:
SSL_alert_type_string_long 131 1_1_0d EXIST::FUNCTION:
SSL_set_default_read_buffer_len 132 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_free 133 1_1_0d EXIST::FUNCTION:
SSL_get_all_async_fds 134 1_1_0d EXIST::FUNCTION:
SSL_get_servername_type 135 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_options 136 1_1_0d EXIST::FUNCTION:
SSL_set_verify 137 1_1_0d EXIST::FUNCTION:
SSL_set_connect_state 138 1_1_0d EXIST::FUNCTION:
DTLSv1_listen 139 1_1_0d EXIST::FUNCTION:SOCK
SSL_CONF_CTX_set1_prefix 140 1_1_0d EXIST::FUNCTION:
SSL_set_psk_client_callback 141 1_1_0d EXIST::FUNCTION:PSK
BIO_ssl_shutdown 142 1_1_0d EXIST::FUNCTION:
SSL_get_default_passwd_cb_userdata 143 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set_timeout 144 1_1_0d EXIST::FUNCTION:
SSL_get_current_compression 145 1_1_0d EXIST::FUNCTION:
SSL_set_SSL_CTX 146 1_1_0d EXIST::FUNCTION:
SSL_use_RSAPrivateKey 147 1_1_0d EXIST::FUNCTION:RSA
SSL_get_peer_finished 148 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_timeout 149 1_1_0d EXIST::FUNCTION:
SSL_set_session_secret_cb 150 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_server_custom_ext 151 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_password 152 1_1_0d EXIST::FUNCTION:SRP
SSL_get_security_callback 153 1_1_0d EXIST::FUNCTION:
SSL_set0_wbio 154 1_1_0d EXIST::FUNCTION:
SSL_get0_peername 155 1_1_0d EXIST::FUNCTION:
SSL_CTX_new 156 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_options 157 1_1_0d EXIST::FUNCTION:
BIO_new_ssl_connect 158 1_1_0d EXIST::FUNCTION:
SSL_get_default_passwd_cb 159 1_1_0d EXIST::FUNCTION:
SSL_dane_tlsa_add 160 1_1_0d EXIST::FUNCTION:
SSL_get0_peer_scts 161 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_load_verify_locations 162 1_1_0d EXIST::FUNCTION:
SSL_get_selected_srtp_profile 163 1_1_0d EXIST::FUNCTION:SRTP
SSL_COMP_set0_compression_methods 164 1_1_0d EXIST::FUNCTION:
SSL_get_changed_async_fds 165 1_1_0d EXIST::FUNCTION:
SSL_CTX_enable_ct 166 1_1_0d EXIST::FUNCTION:CT
SSL_set_alpn_protos 167 1_1_0d EXIST::FUNCTION:
SSL_write 168 1_1_0d EXIST::FUNCTION:
TLS_method 169 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_privatekey 170 1_1_0d EXIST::FUNCTION:
SSL_set_options 171 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_security_level 172 1_1_0d EXIST::FUNCTION:
SSL_CTX_clear_options 173 1_1_0d EXIST::FUNCTION:
SSL_rstate_string 174 1_1_0d EXIST::FUNCTION:
DTLSv1_2_method 175 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_get_servername 176 1_1_0d EXIST::FUNCTION:
SSL_set_default_passwd_cb 177 1_1_0d EXIST::FUNCTION:
SSL_get_psk_identity 178 1_1_0d EXIST::FUNCTION:PSK
SSL_set_ssl_method 179 1_1_0d EXIST::FUNCTION:
SSL_enable_ct 180 1_1_0d EXIST::FUNCTION:CT
SSL_get_client_ciphers 181 1_1_0d EXIST::FUNCTION:
SSL_SESSION_up_ref 182 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_set_ssl 183 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_username_callback 184 1_1_0d EXIST::FUNCTION:SRP
SSL_up_ref 185 1_1_0d EXIST::FUNCTION:
SSL_get_rbio 186 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey_ASN1 187 1_1_0d EXIST::FUNCTION:RSA
SSL_CTX_add_client_CA 188 1_1_0d EXIST::FUNCTION:
SSL_get_srp_username 189 1_1_0d EXIST::FUNCTION:SRP
SSL_get0_dane_authority 190 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_options 191 1_1_0d EXIST::FUNCTION:
SSL_SESSION_print_keylog 192 1_1_0d EXIST::FUNCTION:
SSL_CTX_SRP_CTX_free 193 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_up_ref 194 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_mtype_set 195 1_1_0d EXIST::FUNCTION:
SSL_get_options 196 1_1_0d EXIST::FUNCTION:
SSL_get_rfd 197 1_1_0d EXIST::FUNCTION:
SSL_set_default_read_buffer_len 198 1_1_0d EXIST::FUNCTION:
SSL_set_verify_depth 199 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_client_CA_list 200 1_1_0d EXIST::FUNCTION:
DTLS_client_method 201 1_1_0d EXIST::FUNCTION:
SSL_SESSION_has_ticket 202 1_1_0d EXIST::FUNCTION:
SSL_shutdown 203 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_verify 204 1_1_0d EXIST::FUNCTION:
SSL_CTX_free 205 1_1_0d EXIST::FUNCTION:
SSL_trace 206 1_1_0d EXIST::FUNCTION:SSL_TRACE
SSL_CTX_get_ssl_method 207 1_1_0d EXIST::FUNCTION:
SSL_get_peer_cert_chain 208 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_peer 209 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_client_cert_cb 210 1_1_0d EXIST::FUNCTION:
SSL_get_server_random 211 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_alpn_protos 212 1_1_0d EXIST::FUNCTION:
SSL_get_current_cipher 213 1_1_0d EXIST::FUNCTION:
SSLv3_method 214 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_CTX_ctrl 215 1_1_0d EXIST::FUNCTION:
SSL_CTX_flush_sessions 216 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cert_store 217 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_set_flags 218 1_1_0d EXIST::FUNCTION:
SSL_use_certificate_file 219 1_1_0d EXIST::FUNCTION:
SSL_set_cipher_list 220 1_1_0d EXIST::FUNCTION:
SSL_get_finished 221 1_1_0d EXIST::FUNCTION:
SSL_get_verify_result 222 1_1_0d EXIST::FUNCTION:
SSL_dane_clear_flags 223 1_1_0d EXIST::FUNCTION:
SSL_get_client_random 224 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_session_id_context 225 1_1_0d EXIST::FUNCTION:
SSL_get_client_CA_list 226 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_compress_id 227 1_1_0d EXIST::FUNCTION:
SSL_get_verify_mode 228 1_1_0d EXIST::FUNCTION:
d2i_SSL_SESSION 229 1_1_0d EXIST::FUNCTION:
SSL_use_psk_identity_hint 230 1_1_0d EXIST::FUNCTION:PSK
SSL_get_srp_g 231 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_ctlog_list_file 232 1_1_0d EXIST::FUNCTION:CT
SSL_get_read_ahead 233 1_1_0d EXIST::FUNCTION:
SSL_get_current_expansion 234 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_ticket 235 1_1_0d EXIST::FUNCTION:
SSL_dane_enable 236 1_1_0d EXIST::FUNCTION:
SSL_export_keying_material 237 1_1_0d EXIST::FUNCTION:
TLSv1_1_method 238 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
SSL_SESSION_get_master_key 239 1_1_0d EXIST::FUNCTION:
SSL_add_file_cert_subjects_to_stack 240 1_1_0d EXIST::FUNCTION:
SSL_callback_ctrl 241 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_quiet_shutdown 242 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_enable 243 1_1_0d EXIST::FUNCTION:
SSL_set_hostflags 244 1_1_0d EXIST::FUNCTION:
SSL_SRP_CTX_free 245 1_1_0d EXIST::FUNCTION:SRP
SSL_alert_desc_string 246 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_psk_identity_hint 247 1_1_0d EXIST::FUNCTION:PSK
SSL_clear 248 1_1_0d EXIST::FUNCTION:
SSL_peek 249 1_1_0d EXIST::FUNCTION:
SSL_use_RSAPrivateKey_ASN1 250 1_1_0d EXIST::FUNCTION:RSA
SSL_get0_param 251 1_1_0d EXIST::FUNCTION:
PEM_read_bio_SSL_SESSION 252 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_is_aead 253 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_trust 254 1_1_0d EXIST::FUNCTION:
SSL_ct_is_enabled 255 1_1_0d EXIST::FUNCTION:CT
SSL_use_PrivateKey_file 256 1_1_0d EXIST::FUNCTION:
SSL_set_srp_server_param 257 1_1_0d EXIST::FUNCTION:SRP
SSL_CONF_CTX_new 258 1_1_0d EXIST::FUNCTION:
ERR_load_SSL_strings 259 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_set_ssl_ctx 260 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_client_cert_engine 261 1_1_0d EXIST::FUNCTION:ENGINE
SSL_CTX_set0_security_ex_data 262 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_client_custom_ext 263 1_1_0d EXIST::FUNCTION:
TLSv1_1_client_method 264 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
PEM_write_bio_SSL_SESSION 265 1_1_0d EXIST::FUNCTION:
SSL_SESSION_free 266 1_1_0d EXIST::FUNCTION:
SSL_select_next_proto 267 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_paths 268 1_1_0d EXIST::FUNCTION:
SSL_get_ssl_method 269 1_1_0d EXIST::FUNCTION:
SSL_SRP_CTX_init 270 1_1_0d EXIST::FUNCTION:SRP
BIO_ssl_copy_session_id 271 1_1_0d EXIST::FUNCTION:
SSL_config 272 1_1_0d EXIST::FUNCTION:
SSL_get_ex_data 273 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set_ex_data 274 1_1_0d EXIST::FUNCTION:
SSL_set_cert_cb 275 1_1_0d EXIST::FUNCTION:
DTLSv1_method 276 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_CTX_set_cookie_generate_cb 277 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_free 278 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_auth_nid 279 1_1_0d EXIST::FUNCTION:
SSL_get0_next_proto_negotiated 280 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_get_all_async_fds 281 1_1_0d EXIST::FUNCTION:
SSL_SESSION_new 282 1_1_0d EXIST::FUNCTION:
SSL_in_init 283 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey_file 284 1_1_0d EXIST::FUNCTION:RSA
SSL_set_msg_callback 285 1_1_0d EXIST::FUNCTION:
SSL_alert_desc_string_long 286 1_1_0d EXIST::FUNCTION:
SSL_CTX_check_private_key 287 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate 288 1_1_0d EXIST::FUNCTION:
SSL_dup 289 1_1_0d EXIST::FUNCTION:
SSL_get1_supported_ciphers 290 1_1_0d EXIST::FUNCTION:
SSL_CTX_callback_ctrl 291 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cert_verify_callback 292 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_passwd_cb 293 1_1_0d EXIST::FUNCTION:
SSL_state_string 294 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_dir 295 1_1_0d EXIST::FUNCTION:
DTLS_method 296 1_1_0d EXIST::FUNCTION:
TLSv1_method 297 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
SSL_CTX_set_default_read_buffer_len 298 1_1_0d EXIST::FUNCTION:
TLSv1_2_server_method 299 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
SSL_pending 300 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd_argv 301 1_1_0d EXIST::FUNCTION:
SSL_CTX_config 302 1_1_0d EXIST::FUNCTION:
BIO_f_ssl 303 1_1_0d EXIST::FUNCTION:
SSL_COMP_get_id 304 1_1_0d EXIST::FUNCTION:
SSL_get0_alpn_selected 305 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cookie_verify_cb 306 1_1_0d EXIST::FUNCTION:
SSL_set_security_callback 307 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_cb_arg 308 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_ex_data 309 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_certificate 310 1_1_0d EXIST::FUNCTION:
SSLv3_server_method 311 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_set_srp_server_param_pw 312 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_get0_ctlog_store 313 1_1_0d EXIST::FUNCTION:CT
SSL_use_RSAPrivateKey_file 314 1_1_0d EXIST::FUNCTION:RSA
SSL_get_servername_type 315 1_1_0d EXIST::FUNCTION:
SSL_has_matching_session_id 316 1_1_0d EXIST::FUNCTION:
SSL_set1_param 317 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_protocol_version 318 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_generate_session_id 319 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate_chain_file 320 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_timeout 321 1_1_0d EXIST::FUNCTION:
GMTLS_method 322 1_1_0d EXIST::FUNCTION:GMTLS
SSL_CTX_get_security_level 323 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_default_passwd_cb_userdata 324 1_1_0d EXIST::FUNCTION:
SSL_get_wfd 325 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_ex_data 326 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_info_callback 327 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_standard_name 328 1_1_0d EXIST::FUNCTION:SSL_TRACE
SSL_SESSION_print_fp 329 1_1_0d EXIST::FUNCTION:STDIO
SSL_set_psk_server_callback 330 1_1_0d EXIST::FUNCTION:PSK
i2d_SSL_SESSION 331 1_1_0d EXIST::FUNCTION:
SSL_set_session_ticket_ext_cb 332 1_1_0d EXIST::FUNCTION:
SSL_get_sigalgs 333 1_1_0d EXIST::FUNCTION:
SSL_set_session 334 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_get_new_cb 335 1_1_0d EXIST::FUNCTION:
SSL_use_certificate_ASN1 336 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey 337 1_1_0d EXIST::FUNCTION:RSA
SSL_dane_set_flags 338 1_1_0d EXIST::FUNCTION:
SSL_add_ssl_module 339 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_timeout 340 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_next_protos_advertised_cb 341 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_CTX_set_cert_cb 342 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_ciphers 343 1_1_0d EXIST::FUNCTION:
SSL_set_trust 344 1_1_0d EXIST::FUNCTION:
SSL_get_privatekey 345 1_1_0d EXIST::FUNCTION:
OPENSSL_init_ssl 346 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate_file 347 1_1_0d EXIST::FUNCTION:
SSL_certs_clear 348 1_1_0d EXIST::FUNCTION:
SSL_get_verify_callback 349 1_1_0d EXIST::FUNCTION:
TLSv1_2_method 350 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
TLSv1_server_method 351 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
DTLSv1_listen 352 1_1_0d EXIST::FUNCTION:SOCK
SSL_SESSION_get_ticket_lifetime_hint 353 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_hostname 354 1_1_0d EXIST::FUNCTION:
SSL_COMP_add_compression_method 355 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_verify_param_callback 356 1_1_0d EXIST::FUNCTION:SRP
SSL_SESSION_get_time 357 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_ex_data 358 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_clear_flags 359 1_1_0d EXIST::FUNCTION:
SSL_is_gmtls 360 1_1_0d EXIST::FUNCTION:
SSL_get0_dane_tlsa 361 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_strength 362 1_1_0d EXIST::FUNCTION:SRP
SSL_set_ex_data 363 1_1_0d EXIST::FUNCTION:
TLSv1_1_server_method 364 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
SSL_in_before 365 1_1_0d EXIST::FUNCTION:
SSL_get1_session 366 1_1_0d EXIST::FUNCTION:
SSL_use_PrivateKey_ASN1 367 1_1_0d EXIST::FUNCTION:
SSL_SESSION_print 368 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_client_pwd_callback 369 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_client_cert_cb 370 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cipher_list 371 1_1_0d EXIST::FUNCTION:
SSL_set_info_callback 372 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set1_id_context 373 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_default_passwd_cb 374 1_1_0d EXIST::FUNCTION:
SSL_clear_options 375 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_PrivateKey_file 376 1_1_0d EXIST::FUNCTION:
SSL_set_bio 377 1_1_0d EXIST::FUNCTION:
SSL_read 378 1_1_0d EXIST::FUNCTION:
SSL_copy_session_id 379 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_version 380 1_1_0d EXIST::FUNCTION:
SSL_set_quiet_shutdown 381 1_1_0d EXIST::FUNCTION:
SSL_get_cipher_list 382 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_file 383 1_1_0d EXIST::FUNCTION:
SSL_get_default_passwd_cb_userdata 384 1_1_0d EXIST::FUNCTION:
SSL_set_purpose 385 1_1_0d EXIST::FUNCTION:
DTLS_server_method 386 1_1_0d EXIST::FUNCTION:
SSL_get_fd 387 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_digest_nid 388 1_1_0d EXIST::FUNCTION:
SSL_set_rfd 389 1_1_0d EXIST::FUNCTION:SOCK
SRP_Calc_A_param 390 1_1_0d EXIST::FUNCTION:SRP
SSL_version 391 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd 392 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_depth 393 1_1_0d EXIST::FUNCTION:
SSL_get_wbio 394 1_1_0d EXIST::FUNCTION:
SSL_get0_verified_chain 395 1_1_0d EXIST::FUNCTION:
SSL_want 396 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_name 397 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_msg_callback 398 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_set_remove_cb 399 1_1_0d EXIST::FUNCTION:
SSL_alert_type_string_long 400 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_find 401 1_1_0d EXIST::FUNCTION:
SSL_get0_security_ex_data 402 1_1_0d EXIST::FUNCTION:
SSL_is_dtls 403 1_1_0d EXIST::FUNCTION:
SSL_get_shared_ciphers 404 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_tlsext_use_srtp 405 1_1_0d EXIST::FUNCTION:SRTP
SSL_get_ciphers 406 1_1_0d EXIST::FUNCTION:
TLSv1_client_method 407 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
SSL_renegotiate_pending 408 1_1_0d EXIST::FUNCTION:
SSL_get_srtp_profiles 409 1_1_0d EXIST::FUNCTION:SRTP
SSL_CTX_get_quiet_shutdown 410 1_1_0d EXIST::FUNCTION:
TLS_server_method 411 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd_argv 145 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_info_callback 146 1_1_0d EXIST::FUNCTION:
SSL_CTX_config 147 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_time 148 1_1_0d EXIST::FUNCTION:
SSL_get_current_cipher 149 1_1_0d EXIST::FUNCTION:
SSL_get_quiet_shutdown 150 1_1_0d EXIST::FUNCTION:
SSL_set_cert_cb 151 1_1_0d EXIST::FUNCTION:
SSL_get_sigalgs 152 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_tmp_dh_callback 153 1_1_0d EXIST::FUNCTION:DH
SSL_CTX_get_options 154 1_1_0d EXIST::FUNCTION:
SSL_get_srp_N 155 1_1_0d EXIST::FUNCTION:SRP
SSL_COMP_get_id 156 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd_value_type 157 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_id_context 158 1_1_0d EXIST::FUNCTION:
SSL_set_session_ticket_ext_cb 159 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_info_callback 160 1_1_0d EXIST::FUNCTION:
SSL_get0_next_proto_negotiated 161 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_CTX_set_not_resumable_session_callback 162 1_1_0d EXIST::FUNCTION:
SSL_srp_server_param_with_username 163 1_1_0d EXIST::FUNCTION:SRP
SSL_get0_alpn_selected 164 1_1_0d EXIST::FUNCTION:
SSL_check_private_key 165 1_1_0d EXIST::FUNCTION:
TLSv1_2_server_method 166 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
SSL_CTX_set_verify_depth 167 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set1_id_context 168 1_1_0d EXIST::FUNCTION:
SSL_SESSION_print 169 1_1_0d EXIST::FUNCTION:
SSL_use_certificate 170 1_1_0d EXIST::FUNCTION:
SRP_Calc_A_param 171 1_1_0d EXIST::FUNCTION:SRP
SSL_renegotiate_pending 172 1_1_0d EXIST::FUNCTION:
BIO_f_ssl 173 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_get_new_cb 174 1_1_0d EXIST::FUNCTION:
SSL_in_before 175 1_1_0d EXIST::FUNCTION:
TLSv1_server_method 176 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD
SSL_get0_security_ex_data 177 1_1_0d EXIST::FUNCTION:
SSL_in_init 178 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_kx_nid 179 1_1_0d EXIST::FUNCTION:
SSL_pending 180 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_next_protos_advertised_cb 181 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_SRP_CTX_free 182 1_1_0d EXIST::FUNCTION:SRP
SSL_CONF_CTX_set_flags 183 1_1_0d EXIST::FUNCTION:
SSL_get_changed_async_fds 184 1_1_0d EXIST::FUNCTION:
SSL_copy_session_id 185 1_1_0d EXIST::FUNCTION:
SSL_set0_security_ex_data 186 1_1_0d EXIST::FUNCTION:
SSL_get_SSL_CTX 187 1_1_0d EXIST::FUNCTION:
SSL_get_ex_data_X509_STORE_CTX_idx 188 1_1_0d EXIST::FUNCTION:
SSL_get1_supported_ciphers 189 1_1_0d EXIST::FUNCTION:
SSL_get_peer_certificate 190 1_1_0d EXIST::FUNCTION:
SSL_get_current_expansion 191 1_1_0d EXIST::FUNCTION:
SSL_get_psk_identity 192 1_1_0d EXIST::FUNCTION:PSK
SSL_get_read_ahead 193 1_1_0d EXIST::FUNCTION:
DTLSv1_method 194 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_set_default_passwd_cb_userdata 195 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_next_proto_select_cb 196 1_1_0d EXIST::FUNCTION:NEXTPROTONEG
SSL_new 197 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate_file 198 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_strength 199 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_srp_verify_param_callback 200 1_1_0d EXIST::FUNCTION:SRP
SSL_SESSION_get_master_key 201 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_msg_callback 202 1_1_0d EXIST::FUNCTION:
SSL_use_RSAPrivateKey_ASN1 203 1_1_0d EXIST::FUNCTION:RSA
SSL_CTX_set_ssl_version 204 1_1_0d EXIST::FUNCTION:
SSL_has_pending 205 1_1_0d EXIST::FUNCTION:
SSL_get_verify_result 206 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey_file 207 1_1_0d EXIST::FUNCTION:RSA
SSL_CTX_set0_ctlog_store 208 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_use_RSAPrivateKey_ASN1 209 1_1_0d EXIST::FUNCTION:RSA
SSL_set_tlsext_use_srtp 210 1_1_0d EXIST::FUNCTION:SRTP
SSL_CTX_get_security_callback 211 1_1_0d EXIST::FUNCTION:
SSL_clear 212 1_1_0d EXIST::FUNCTION:
SSL_write 213 1_1_0d EXIST::FUNCTION:
SSL_CTX_callback_ctrl 214 1_1_0d EXIST::FUNCTION:
SSL_set_fd 215 1_1_0d EXIST::FUNCTION:SOCK
SSL_set_tmp_dh_callback 216 1_1_0d EXIST::FUNCTION:DH
SSL_CTX_use_PrivateKey 217 1_1_0d EXIST::FUNCTION:
SSL_SESSION_new 218 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_psk_identity_hint 219 1_1_0d EXIST::FUNCTION:PSK
SSL_CTX_set_cert_store 220 1_1_0d EXIST::FUNCTION:
SSL_state_string 221 1_1_0d EXIST::FUNCTION:
SSL_ctrl 222 1_1_0d EXIST::FUNCTION:
SSL_test_functions 223 1_1_0d EXIST::FUNCTION:UNIT_TEST
SSL_SESSION_get_ex_data 224 1_1_0d EXIST::FUNCTION:
SSL_get_client_ciphers 225 1_1_0d EXIST::FUNCTION:
SSL_clear_options 226 1_1_0d EXIST::FUNCTION:
SSL_use_RSAPrivateKey 227 1_1_0d EXIST::FUNCTION:RSA
SSL_SESSION_get0_ticket 228 1_1_0d EXIST::FUNCTION:
SSL_get_rbio 229 1_1_0d EXIST::FUNCTION:
SSL_add_dir_cert_subjects_to_stack 230 1_1_0d EXIST::FUNCTION:
SSL_get_wfd 231 1_1_0d EXIST::FUNCTION:
SSL_ct_is_enabled 232 1_1_0d EXIST::FUNCTION:CT
SSL_select_next_proto 233 1_1_0d EXIST::FUNCTION:
DTLSv1_client_method 234 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_is_dtls 235 1_1_0d EXIST::FUNCTION:
TLSv1_2_client_method 236 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
SSL_COMP_add_compression_method 237 1_1_0d EXIST::FUNCTION:
SSL_use_PrivateKey_ASN1 238 1_1_0d EXIST::FUNCTION:
SSL_set_rfd 239 1_1_0d EXIST::FUNCTION:SOCK
SSL_config 240 1_1_0d EXIST::FUNCTION:
SSL_load_client_CA_file 241 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_clear_flags 242 1_1_0d EXIST::FUNCTION:
SSL_rstate_string 243 1_1_0d EXIST::FUNCTION:
SSL_set_alpn_protos 244 1_1_0d EXIST::FUNCTION:
SSL_use_certificate_ASN1 245 1_1_0d EXIST::FUNCTION:
SSL_shutdown 246 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_file 247 1_1_0d EXIST::FUNCTION:
SSL_CTX_has_client_custom_ext 248 1_1_0d EXIST::FUNCTION:
SSL_set_quiet_shutdown 249 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_set_remove_cb 250 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_ssl_method 251 1_1_0d EXIST::FUNCTION:
SSL_set_psk_server_callback 252 1_1_0d EXIST::FUNCTION:PSK
TLSv1_2_method 253 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD
SSL_get0_peer_scts 254 1_1_0d EXIST::FUNCTION:CT
BIO_new_ssl_connect 255 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_ciphers 256 1_1_0d EXIST::FUNCTION:
SSL_set_read_ahead 257 1_1_0d EXIST::FUNCTION:
SSL_dup_CA_list 258 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_security_ex_data 259 1_1_0d EXIST::FUNCTION:
SSL_get_cipher_list 260 1_1_0d EXIST::FUNCTION:
SSL_set_accept_state 261 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_trust 262 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_timeout 263 1_1_0d EXIST::FUNCTION:
SSL_read 264 1_1_0d EXIST::FUNCTION:
SSL_set_cipher_list 265 1_1_0d EXIST::FUNCTION:
PEM_write_SSL_SESSION 266 1_1_0d EXIST::FUNCTION:STDIO
SSL_set_ct_validation_callback 267 1_1_0d EXIST::FUNCTION:CT
SSL_get_shared_sigalgs 268 1_1_0d EXIST::FUNCTION:
i2d_SSL_SESSION 269 1_1_0d EXIST::FUNCTION:
SSL_set_hostflags 270 1_1_0d EXIST::FUNCTION:
SSL_rstate_string_long 271 1_1_0d EXIST::FUNCTION:
GMTLS_server_method 272 1_1_0d EXIST::FUNCTION:GMTLS
SSL_set_ex_data 273 1_1_0d EXIST::FUNCTION:
SSL_get_finished 274 1_1_0d EXIST::FUNCTION:
SSL_SESSION_free 275 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_default_passwd_cb_userdata 276 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set_time 277 1_1_0d EXIST::FUNCTION:
SSL_get_client_CA_list 278 1_1_0d EXIST::FUNCTION:
SSL_CTX_dane_mtype_set 279 1_1_0d EXIST::FUNCTION:
SSL_get_servername 280 1_1_0d EXIST::FUNCTION:
SSL_CONF_cmd 281 1_1_0d EXIST::FUNCTION:
SSL_CTX_get0_privatekey 282 1_1_0d EXIST::FUNCTION:
SSL_CTX_enable_ct 283 1_1_0d EXIST::FUNCTION:CT
SSL_CIPHER_get_name 284 1_1_0d EXIST::FUNCTION:
SSL_dane_clear_flags 285 1_1_0d EXIST::FUNCTION:
SSL_add1_host 286 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_timeout 287 1_1_0d EXIST::FUNCTION:
SSL_get_verify_callback 288 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_auth_nid 289 1_1_0d EXIST::FUNCTION:
SSL_set0_rbio 290 1_1_0d EXIST::FUNCTION:
SSL_set_security_level 291 1_1_0d EXIST::FUNCTION:
PEM_write_bio_SSL_SESSION 292 1_1_0d EXIST::FUNCTION:
SSL_set_wfd 293 1_1_0d EXIST::FUNCTION:SOCK
SSL_session_reused 294 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_purpose 295 1_1_0d EXIST::FUNCTION:
SSL_CTX_ct_is_enabled 296 1_1_0d EXIST::FUNCTION:CT
SSL_set_default_passwd_cb 297 1_1_0d EXIST::FUNCTION:
SSL_get_session 298 1_1_0d EXIST::FUNCTION:
DTLS_method 299 1_1_0d EXIST::FUNCTION:
GMTLS_method 300 1_1_0d EXIST::FUNCTION:GMTLS
SSL_CTX_set_verify 301 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_standard_name 302 1_1_0d EXIST::FUNCTION:SSL_TRACE
SSL_get_security_level 303 1_1_0d EXIST::FUNCTION:
SSL_SESSION_print_fp 304 1_1_0d EXIST::FUNCTION:STDIO
SSL_waiting_for_async 305 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_client_cert_cb 306 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_callback 307 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_get_get_cb 308 1_1_0d EXIST::FUNCTION:
SSL_set_trust 309 1_1_0d EXIST::FUNCTION:
SSL_alert_desc_string 310 1_1_0d EXIST::FUNCTION:
SSL_state_string_long 311 1_1_0d EXIST::FUNCTION:
SSL_CTX_ctrl 312 1_1_0d EXIST::FUNCTION:
SSL_do_handshake 313 1_1_0d EXIST::FUNCTION:
SSL_CTX_remove_session 314 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate_ASN1 315 1_1_0d EXIST::FUNCTION:
SSL_get_shutdown 316 1_1_0d EXIST::FUNCTION:
DTLS_client_method 317 1_1_0d EXIST::FUNCTION:
SSL_CTX_check_private_key 318 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cookie_verify_cb 319 1_1_0d EXIST::FUNCTION:
SSL_set_session_ticket_ext 320 1_1_0d EXIST::FUNCTION:
SSL_set_shutdown 321 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_paths 322 1_1_0d EXIST::FUNCTION:
SSL_COMP_get_name 323 1_1_0d EXIST::FUNCTION:
SSL_get_srp_userinfo 324 1_1_0d EXIST::FUNCTION:SRP
SSL_alert_desc_string_long 325 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_get_version 326 1_1_0d EXIST::FUNCTION:
d2i_SSL_SESSION 327 1_1_0d EXIST::FUNCTION:
SSL_set_SSL_CTX 328 1_1_0d EXIST::FUNCTION:
SSL_client_version 329 1_1_0d EXIST::FUNCTION:
SSL_CTX_get_verify_mode 330 1_1_0d EXIST::FUNCTION:
SSL_callback_ctrl 331 1_1_0d EXIST::FUNCTION:
SSL_set_info_callback 332 1_1_0d EXIST::FUNCTION:
SSL_add_file_cert_subjects_to_stack 333 1_1_0d EXIST::FUNCTION:
TLSv1_1_server_method 334 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD
SSL_CTX_free 335 1_1_0d EXIST::FUNCTION:
SSL_get0_dane_tlsa 336 1_1_0d EXIST::FUNCTION:
SSL_CTX_new 337 1_1_0d EXIST::FUNCTION:
SSL_is_server 338 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cert_verify_callback 339 1_1_0d EXIST::FUNCTION:
SSL_dane_set_flags 340 1_1_0d EXIST::FUNCTION:
SSL_get_fd 341 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_new 342 1_1_0d EXIST::FUNCTION:
SSL_use_RSAPrivateKey_file 343 1_1_0d EXIST::FUNCTION:RSA
SSL_CTX_set_default_ctlog_list_file 344 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_sess_set_new_cb 345 1_1_0d EXIST::FUNCTION:
SSL_get0_dane_authority 346 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_certificate 347 1_1_0d EXIST::FUNCTION:
SSL_get_peer_finished 348 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_clear_flags 349 1_1_0d EXIST::FUNCTION:
SSL_SESSION_set_ex_data 350 1_1_0d EXIST::FUNCTION:
SSL_get_ex_data 351 1_1_0d EXIST::FUNCTION:
SSL_use_psk_identity_hint 352 1_1_0d EXIST::FUNCTION:PSK
SSL_set_bio 353 1_1_0d EXIST::FUNCTION:
SSL_CTX_set1_param 354 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_passwd_cb_userdata 355 1_1_0d EXIST::FUNCTION:
SSL_get_rfd 356 1_1_0d EXIST::FUNCTION:
SSL_COMP_set0_compression_methods 357 1_1_0d EXIST::FUNCTION:
SSL_get_ciphers 358 1_1_0d EXIST::FUNCTION:
DTLSv1_2_server_method 359 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_get_error 360 1_1_0d EXIST::FUNCTION:
SSL_CTX_sessions 361 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_protocol_version 362 1_1_0d EXIST::FUNCTION:
SSL_CIPHER_description 363 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_peer 364 1_1_0d EXIST::FUNCTION:
OPENSSL_init_ssl 365 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_username_callback 366 1_1_0d EXIST::FUNCTION:SRP
SSL_CTX_set_session_id_context 367 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get_id 368 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_ct_validation_callback 369 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_dane_enable 370 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_session 371 1_1_0d EXIST::FUNCTION:
SSL_set_options 372 1_1_0d EXIST::FUNCTION:
SSL_dup 373 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_cipher_list 374 1_1_0d EXIST::FUNCTION:
SSL_CONF_CTX_set_ssl_ctx 375 1_1_0d EXIST::FUNCTION:
SSL_CTX_up_ref 376 1_1_0d EXIST::FUNCTION:
SSL_CTX_use_serverinfo 377 1_1_0d EXIST::FUNCTION:
SSL_get_shared_ciphers 378 1_1_0d EXIST::FUNCTION:
SSL_CTX_sess_get_remove_cb 379 1_1_0d EXIST::FUNCTION:
SSL_get_verify_mode 380 1_1_0d EXIST::FUNCTION:
SSL_add_ssl_module 381 1_1_0d EXIST::FUNCTION:
SSL_get_selected_srtp_profile 382 1_1_0d EXIST::FUNCTION:SRTP
SSL_get_srp_g 383 1_1_0d EXIST::FUNCTION:SRP
SSL_SESSION_get_ticket_lifetime_hint 384 1_1_0d EXIST::FUNCTION:
SSL_add_client_CA 385 1_1_0d EXIST::FUNCTION:
SSL_enable_ct 386 1_1_0d EXIST::FUNCTION:CT
SSL_CTX_clear_options 387 1_1_0d EXIST::FUNCTION:
SSLv3_method 388 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_alert_type_string 389 1_1_0d EXIST::FUNCTION:
SSL_CTX_add_server_custom_ext 390 1_1_0d EXIST::FUNCTION:
DTLSv1_server_method 391 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD
SSL_CTX_use_certificate_chain_file 392 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_srp_client_pwd_callback 393 1_1_0d EXIST::FUNCTION:SRP
SSL_get_info_callback 394 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_default_verify_dir 395 1_1_0d EXIST::FUNCTION:
SSLv3_server_method 396 1_1_0d EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD
SSL_set_srp_server_param_pw 397 1_1_0d EXIST::FUNCTION:SRP
SSL_CONF_CTX_set_ssl 398 1_1_0d EXIST::FUNCTION:
SSL_set_msg_callback 399 1_1_0d EXIST::FUNCTION:
SSL_get_client_random 400 1_1_0d EXIST::FUNCTION:
SSL_set_srp_server_param 401 1_1_0d EXIST::FUNCTION:SRP
PEM_read_bio_SSL_SESSION 402 1_1_0d EXIST::FUNCTION:
SSL_dane_enable 403 1_1_0d EXIST::FUNCTION:
SSL_use_certificate_file 404 1_1_0d EXIST::FUNCTION:
SSL_get_verify_depth 405 1_1_0d EXIST::FUNCTION:
SSL_CTX_set_psk_server_callback 406 1_1_0d EXIST::FUNCTION:PSK
SSL_set_security_callback 407 1_1_0d EXIST::FUNCTION:
SSL_get_default_timeout 408 1_1_0d EXIST::FUNCTION:
SSL_SESSION_get0_cipher 409 1_1_0d EXIST::FUNCTION:
SSL_set_client_CA_list 410 1_1_0d EXIST::FUNCTION:
SSL_export_keying_material 411 1_1_0d EXIST::FUNCTION: