mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-09-21 12:53:39 +08:00
@@ -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" => {
|
||||
|
||||
@@ -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
277
apps/paiutl.c
Normal 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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
1197
apps/skf.c
File diff suppressed because it is too large
Load Diff
@@ -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 \
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
368
crypto/skf/skf_prn.c
Normal 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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
/*-
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
9995
util/libcrypto.num
9995
util/libcrypto.num
File diff suppressed because it is too large
Load Diff
820
util/libssl.num
820
util/libssl.num
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user