您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ EVP_PKEY_get1_EC_KEY函数代码示例

51自学网 2021-06-01 20:35:27
  C++
这篇教程C++ EVP_PKEY_get1_EC_KEY函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中EVP_PKEY_get1_EC_KEY函数的典型用法代码示例。如果您正苦于以下问题:C++ EVP_PKEY_get1_EC_KEY函数的具体用法?C++ EVP_PKEY_get1_EC_KEY怎么用?C++ EVP_PKEY_get1_EC_KEY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了EVP_PKEY_get1_EC_KEY函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: cardfingerprint

static int cardfingerprint(void *ctx,char *file,void *out){	int r=NOCARD;	int len;	EVP_PKEY *key;	RSA *rsa=NULL;	EC_KEY *ec=NULL;	ENGINE *e=(ENGINE *)ctx;	unsigned char bfr[2048];	unsigned char *p=bfr;	resume_engine(e,engbits);	if(!(key=ENGINE_load_public_key(e,file,NULL,NULL)))goto err1;	r=CRYPTOFAIL;#if OPENSSL_VERSION_NUMBER >= 0x1010000fL	if(EVP_PKEY_get0_RSA(key))	{		if(!(rsa=EVP_PKEY_get1_RSA(key)))goto err2;		if((len=i2d_RSA_PUBKEY(rsa,NULL))>sizeof(bfr))goto err3;		if(i2d_RSA_PUBKEY(rsa,&p)!=len)goto err3;	}	else if(EVP_PKEY_get0_EC_KEY(key))	{		if(!(ec=EVP_PKEY_get1_EC_KEY(key)))goto err2;		if((len=i2d_EC_PUBKEY(ec,NULL))>sizeof(bfr))goto err3;		if(i2d_EC_PUBKEY(ec,&p)!=len)goto err3;	}	else goto err2;#else	switch(EVP_PKEY_type(key->type))	{	case EVP_PKEY_RSA:		if(!(rsa=EVP_PKEY_get1_RSA(key)))goto err2;		if((len=i2d_RSA_PUBKEY(rsa,NULL))>sizeof(bfr))goto err3;		if(i2d_RSA_PUBKEY(rsa,&p)!=len)goto err3;		break;	case EVP_PKEY_EC:		if(!(ec=EVP_PKEY_get1_EC_KEY(key)))goto err2;		if((len=i2d_EC_PUBKEY(ec,NULL))>sizeof(bfr))goto err3;		if(i2d_EC_PUBKEY(ec,&p)!=len)goto err3;		break;	default:goto err2;	}#endif	if(out)sha256(bfr,len,out);	r=OK;err3:	if(rsa)RSA_free(rsa);	if(ec)EC_KEY_free(ec);	memclear(bfr,0,sizeof(bfr));err2:	EVP_PKEY_free(key);err1:	suspend_engine(e,&engbits);	return r;}
开发者ID:not1337,项目名称:pam_pivcard,代码行数:60,


示例2: getPublicKeyRaw

void getPublicKeyRaw(ecc_key_t *pubkeyraw, char *inFile){	EVP_PKEY* pkey;	EC_KEY *key;	const EC_GROUP *ecgrp;	const EC_POINT *ecpoint;	BIGNUM *pubkeyBN;	unsigned char pubkeyData[1 + 2*EC_COORDBYTES];	FILE *fp = fopen( inFile, "r");	pkey = PEM_read_PrivateKey(fp, NULL, NULL, NULL);	assert(pkey);	key = EVP_PKEY_get1_EC_KEY(pkey);	assert(key);	ecgrp = EC_KEY_get0_group(key);	assert(ecgrp);	ecpoint = EC_KEY_get0_public_key(key);	assert(ecpoint);	pubkeyBN = EC_POINT_point2bn(ecgrp, ecpoint, POINT_CONVERSION_UNCOMPRESSED, NULL, NULL);	BN_bn2bin(pubkeyBN, pubkeyData);	if (debug)		printBytes((char *)"pubkey (RAW) = ", &pubkeyData[1], sizeof(pubkeyData) - 1, 32);	memcpy(*pubkeyraw, &pubkeyData[1], sizeof(ecc_key_t));	EC_KEY_free(key);	EVP_PKEY_free(pkey);	fclose(fp);	return;}
开发者ID:ajdlinux,项目名称:skiboot,代码行数:33,


示例3: R_ecdsa_priv_decompose

SEXP R_ecdsa_priv_decompose(SEXP input){#ifndef OPENSSL_NO_EC  BIO *mem = BIO_new_mem_buf(RAW(input), LENGTH(input));  EVP_PKEY *pkey = d2i_PrivateKey_bio(mem, NULL);  BIO_free(mem);  bail(!!pkey);  EC_KEY *ec = EVP_PKEY_get1_EC_KEY(pkey);  const EC_POINT *pubkey = EC_KEY_get0_public_key(ec);  const EC_GROUP *group = EC_KEY_get0_group(ec);  int nid = EC_GROUP_get_curve_name(group);  int keysize = nid_keysize(nid);  BIGNUM *x = BN_new();  BIGNUM *y = BN_new();  BIGNUM *z = (BIGNUM*) EC_KEY_get0_private_key(ec);  BN_CTX *ctx = BN_CTX_new();  bail(EC_POINT_get_affine_coordinates_GFp(group, pubkey, x, y, ctx));  BN_CTX_free(ctx);  SEXP res = PROTECT(allocVector(VECSXP, 4));  SET_VECTOR_ELT(res, 0, mkString(my_nid2nist(nid)));  SET_VECTOR_ELT(res, 1, bignum_to_r_size(x, keysize));  SET_VECTOR_ELT(res, 2, bignum_to_r_size(y, keysize));  SET_VECTOR_ELT(res, 3, bignum_to_r_size(z, keysize));  BN_free(x);  BN_free(y);  EVP_PKEY_free(pkey);  UNPROTECT(1);  return res;#else //OPENSSL_NO_EC  Rf_error("OpenSSL has been configured without EC support");#endif //OPENSSL_NO_EC}
开发者ID:cran,项目名称:openssl,代码行数:31,


示例4: opensslecdsa_todns

static isc_result_topensslecdsa_todns(const dst_key_t *key, isc_buffer_t *data) {	isc_result_t ret;	EVP_PKEY *pkey;	EC_KEY *eckey = NULL;	isc_region_t r;	int len;	unsigned char *cp;	unsigned char buf[DNS_KEY_ECDSA384SIZE + 1];	REQUIRE(key->keydata.pkey != NULL);	pkey = key->keydata.pkey;	eckey = EVP_PKEY_get1_EC_KEY(pkey);	if (eckey == NULL)		return (dst__openssl_toresult(ISC_R_FAILURE));	len = i2o_ECPublicKey(eckey, NULL);	/* skip form */	len--;	isc_buffer_availableregion(data, &r);	if (r.length < (unsigned int) len)		DST_RET (ISC_R_NOSPACE);	cp = buf;	if (!i2o_ECPublicKey(eckey, &cp))		DST_RET (dst__openssl_toresult(ISC_R_FAILURE));	memmove(r.base, buf + 1, len);	isc_buffer_add(data, len);	ret = ISC_R_SUCCESS; err:	if (eckey != NULL)		EC_KEY_free(eckey);	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:35,


示例5: ERR_load_BIO_strings

	EC_KEY* crypt_ec_helper::load_key_pair(std::string path)	{		BIO *in;		int i;		FILE* infile;		EVP_PKEY *pkey = NULL;		ERR_load_BIO_strings();		ERR_load_crypto_strings();		pkey = EVP_PKEY_new();		EC_GROUP *ecgroup = EC_GROUP_new_by_curve_name(NID_secp256k1);		infile = fopen(path.c_str(), "r");		in = BIO_new(BIO_s_file());		in = BIO_new_fp(infile, BIO_NOCLOSE);		PEM_read_bio_PrivateKey(in, &pkey, NULL, NULL);		fclose(infile);		eckey = EVP_PKEY_get1_EC_KEY(pkey);		EC_GROUP_free(ecgroup);		EVP_PKEY_free(pkey);		BIO_free_all(in);		return eckey;	}
开发者ID:decentralised-project,项目名称:dc-gui,代码行数:31,


示例6: e

blob WSService::pubkey_from_cert(X509* x509) {	std::runtime_error e("Certificate error");	EC_GROUP* ec_group = EC_GROUP_new_by_curve_name(OBJ_sn2nid("prime256v1"));	BN_CTX* bn_ctx = BN_CTX_new();	std::vector<uint8_t> raw_public(33);	try {		if(ec_group == NULL || bn_ctx == NULL) throw e;		EVP_PKEY* remote_pkey = X509_get_pubkey(x509);	if(remote_pkey == NULL) throw e;		EC_KEY* remote_eckey = EVP_PKEY_get1_EC_KEY(remote_pkey);	if(remote_eckey == NULL) throw e;		const EC_POINT* remote_pubkey = EC_KEY_get0_public_key(remote_eckey);	if(remote_pubkey == NULL) throw e;		EC_POINT_point2oct(ec_group, remote_pubkey, POINT_CONVERSION_COMPRESSED, raw_public.data(), raw_public.size(), bn_ctx);	}catch(...){		BN_CTX_free(bn_ctx); EC_GROUP_free(ec_group);		bn_ctx = NULL; ec_group = NULL;		throw;	}	BN_CTX_free(bn_ctx); EC_GROUP_free(ec_group);	return raw_public;}
开发者ID:arno01,项目名称:librevault,代码行数:27,


示例7: sign_ec

static int sign_ec(EVP_PKEY* pkey, keymaster_ec_sign_params_t* sign_params, const uint8_t* data,                   const size_t dataLength, uint8_t** signedData, size_t* signedDataLength) {    if (sign_params->digest_type != DIGEST_NONE) {        ALOGW("Cannot handle digest type %d", sign_params->digest_type);        return -1;    }    Unique_EC_KEY eckey(EVP_PKEY_get1_EC_KEY(pkey));    if (eckey.get() == NULL) {        logOpenSSLError("openssl_sign_ec");        return -1;    }    unsigned int ecdsaSize = ECDSA_size(eckey.get());    UniquePtr<uint8_t, Malloc_Free> signedDataPtr(reinterpret_cast<uint8_t*>(malloc(ecdsaSize)));    if (signedDataPtr.get() == NULL) {        logOpenSSLError("openssl_sign_ec");        return -1;    }    unsigned char* tmp = reinterpret_cast<unsigned char*>(signedDataPtr.get());    if (ECDSA_sign(0, data, dataLength, tmp, &ecdsaSize, eckey.get()) <= 0) {        logOpenSSLError("openssl_sign_ec");        return -1;    }    *signedDataLength = ecdsaSize;    *signedData = signedDataPtr.release();    return 0;}
开发者ID:LordNerevar,项目名称:system_security,代码行数:31,


示例8: get_algorithm

unsigned char get_algorithm(EVP_PKEY *key) {  int type = EVP_PKEY_type(key->type);  switch(type) {    case EVP_PKEY_RSA:      {        RSA *rsa = EVP_PKEY_get1_RSA(key);        int size = RSA_size(rsa);        if(size == 256) {          return YKPIV_ALGO_RSA2048;        } else if(size == 128) {          return YKPIV_ALGO_RSA1024;        } else {          fprintf(stderr, "Unuseable key of %d bits, only 1024 and 2048 is supported./n", size * 8);          return 0;        }      }    case EVP_PKEY_EC:      {        EC_KEY *ec = EVP_PKEY_get1_EC_KEY(key);        const EC_GROUP *group = EC_KEY_get0_group(ec);        int curve = EC_GROUP_get_curve_name(group);        if(curve == NID_X9_62_prime256v1) {          return YKPIV_ALGO_ECCP256;        } else {          fprintf(stderr, "Unknown EC curve %d/n", curve);          return 0;        }      }    default:      fprintf(stderr, "Unknown algorithm %d./n", type);      return 0;  }}
开发者ID:chevah,项目名称:yubico-piv-tool,代码行数:33,


示例9: ecdsa_check

static isc_result_tecdsa_check(EC_KEY *eckey, dst_key_t *pub){	isc_result_t ret = ISC_R_FAILURE;	EVP_PKEY *pkey;	EC_KEY *pubeckey = NULL;	const EC_POINT *pubkey;	if (pub == NULL)		return (ISC_R_SUCCESS);	pkey = pub->keydata.pkey;	if (pkey == NULL)		return (ISC_R_SUCCESS);	pubeckey = EVP_PKEY_get1_EC_KEY(pkey);	if (pubeckey == NULL)		return (ISC_R_SUCCESS);	pubkey = EC_KEY_get0_public_key(pubeckey);	if (pubkey == NULL)		DST_RET (ISC_R_SUCCESS);	if (EC_KEY_set_public_key(eckey, pubkey) != 1)		DST_RET (ISC_R_SUCCESS);	if (EC_KEY_check_key(eckey) == 1)		DST_RET (ISC_R_SUCCESS); err:	if (pubeckey != NULL)		EC_KEY_free(pubeckey);	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:29,


示例10: R_pubkey_bitsize

SEXP R_pubkey_bitsize(SEXP input){  BIO *mem = BIO_new_mem_buf(RAW(input), LENGTH(input));  EVP_PKEY *pkey = d2i_PUBKEY_bio(mem, NULL);  BIO_free(mem);  if(!pkey)    return R_NilValue;  int size = 0;  const BIGNUM * val;  switch(EVP_PKEY_base_id(pkey)){  case EVP_PKEY_RSA:    MY_RSA_get0_key(EVP_PKEY_get1_RSA(pkey), &val, NULL, NULL);    size = BN_num_bits(val);    break;  case EVP_PKEY_DSA:    MY_DSA_get0_pqg(EVP_PKEY_get1_DSA(pkey), &val, NULL, NULL);    size = BN_num_bits(val);    break;#ifndef OPENSSL_NO_EC  case EVP_PKEY_EC:    size = ec_bitsize(EC_GROUP_get_curve_name(EC_KEY_get0_group(EVP_PKEY_get1_EC_KEY(pkey))));    break;#endif //OPENSSL_NO_EC  default:    Rf_error("Unsupported key type: %d", EVP_PKEY_base_id(pkey));  }  EVP_PKEY_free(pkey);  return ScalarInteger(size);}
开发者ID:cran,项目名称:openssl,代码行数:28,


示例11: SSL_get_privatekey

static EC_KEY *ecdh_auto_cb(SSL *ssl, int is_export, int keylength){	static EC_KEY *ecdh;	int last_nid;	int nid = 0;	EVP_PKEY *pk;	EC_KEY *ec;	/* pick curve from EC key */	pk = SSL_get_privatekey(ssl);	if (pk && pk->type == EVP_PKEY_EC) {		ec = EVP_PKEY_get1_EC_KEY(pk);		if (ec) {			nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec));			EC_KEY_free(ec);		}	}	/* ssl->tlsext_ellipticcurvelist is empty, nothing else to do... */	if (nid == 0)		nid = NID_X9_62_prime256v1;	if (ecdh) {		last_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ecdh));		if (last_nid == nid)			return ecdh;		EC_KEY_free(ecdh);		ecdh = NULL;	}	ecdh = EC_KEY_new_by_curve_name(nid);	return ecdh;}
开发者ID:greenplum-db,项目名称:libusual,代码行数:33,


示例12: s2n_evp_pkey_to_ecdsa_private_key

int s2n_evp_pkey_to_ecdsa_private_key(s2n_ecdsa_private_key *ecdsa_key, EVP_PKEY *evp_private_key){    EC_KEY *ec_key = EVP_PKEY_get1_EC_KEY(evp_private_key);    S2N_ERROR_IF(ec_key == NULL, S2N_ERR_DECODE_PRIVATE_KEY);        ecdsa_key->ec_key = ec_key;    return 0;}
开发者ID:awslabs,项目名称:s2n,代码行数:8,


示例13: s2n_evp_pkey_to_ecdsa_public_key

int s2n_evp_pkey_to_ecdsa_public_key(s2n_ecdsa_public_key *ecdsa_key, EVP_PKEY *evp_public_key){    EC_KEY *ec_key = EVP_PKEY_get1_EC_KEY(evp_public_key);    S2N_ERROR_IF(ec_key == NULL, S2N_ERR_DECODE_CERTIFICATE);        ecdsa_key->ec_key = ec_key;    return 0;}
开发者ID:awslabs,项目名称:s2n,代码行数:8,


示例14: opensslecdsa_compare

static isc_boolean_topensslecdsa_compare(const dst_key_t *key1, const dst_key_t *key2) {	isc_boolean_t ret;	int status;	EVP_PKEY *pkey1 = key1->keydata.pkey;	EVP_PKEY *pkey2 = key2->keydata.pkey;	EC_KEY *eckey1 = NULL;	EC_KEY *eckey2 = NULL;	const BIGNUM *priv1, *priv2;	if (pkey1 == NULL && pkey2 == NULL)		return (ISC_TRUE);	else if (pkey1 == NULL || pkey2 == NULL)		return (ISC_FALSE);	eckey1 = EVP_PKEY_get1_EC_KEY(pkey1);	eckey2 = EVP_PKEY_get1_EC_KEY(pkey2);	if (eckey1 == NULL && eckey2 == NULL) {		DST_RET (ISC_TRUE);	} else if (eckey1 == NULL || eckey2 == NULL)		DST_RET (ISC_FALSE);	status = EVP_PKEY_cmp(pkey1, pkey2);	if (status != 1)		DST_RET (ISC_FALSE);	priv1 = EC_KEY_get0_private_key(eckey1);	priv2 = EC_KEY_get0_private_key(eckey2);	if (priv1 != NULL || priv2 != NULL) {		if (priv1 == NULL || priv2 == NULL)			DST_RET (ISC_FALSE);		if (BN_cmp(priv1, priv2) != 0)			DST_RET (ISC_FALSE);	}	ret = ISC_TRUE; err:	if (eckey1 != NULL)		EC_KEY_free(eckey1);	if (eckey2 != NULL)		EC_KEY_free(eckey2);	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:43,


示例15: opensslecdsa_isprivate

static isc_boolean_topensslecdsa_isprivate(const dst_key_t *key) {	isc_boolean_t ret;	EVP_PKEY *pkey = key->keydata.pkey;	EC_KEY *eckey = EVP_PKEY_get1_EC_KEY(pkey);	ret = ISC_TF(eckey != NULL && EC_KEY_get0_private_key(eckey) != NULL);	if (eckey != NULL)		EC_KEY_free(eckey);	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:11,


示例16: pkcs11_update_ex_data_ec

static void pkcs11_update_ex_data_ec(PKCS11_KEY *key){	EVP_PKEY *evp = key->evp_key;	EC_KEY *ec;	if (evp == NULL)		return;	if (EVP_PKEY_base_id(evp) != EVP_PKEY_EC)		return;	ec = EVP_PKEY_get1_EC_KEY(evp);	pkcs11_set_ex_data_ec(ec, key);	EC_KEY_free(ec);}
开发者ID:OpenSC,项目名称:libp11,代码行数:13,


示例17: EVP_PKEY_get1_EC_KEY

static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey){  EC_KEY *dtmp;  if(!key) return NULL;  dtmp = EVP_PKEY_get1_EC_KEY(key);  EVP_PKEY_free(key);  if(!dtmp) return NULL;  if(eckey)   {     EC_KEY_free(*eckey);    *eckey = dtmp;  }  return dtmp;}
开发者ID:yyyyyao,项目名称:Slicer3-lib-mirrors,代码行数:14,


示例18: opensslecdsa_verify

static isc_result_topensslecdsa_verify(dst_context_t *dctx, const isc_region_t *sig) {	isc_result_t ret;	dst_key_t *key = dctx->key;	int status;	unsigned char *cp = sig->base;	ECDSA_SIG *ecdsasig = NULL;	EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;	EVP_PKEY *pkey = key->keydata.pkey;	EC_KEY *eckey = EVP_PKEY_get1_EC_KEY(pkey);	unsigned int dgstlen, siglen;	unsigned char digest[EVP_MAX_MD_SIZE];	REQUIRE(key->key_alg == DST_ALG_ECDSA256 ||		key->key_alg == DST_ALG_ECDSA384);	if (eckey == NULL)		return (ISC_R_FAILURE);	if (key->key_alg == DST_ALG_ECDSA256)		siglen = DNS_SIG_ECDSA256SIZE;	else		siglen = DNS_SIG_ECDSA384SIZE;	if (sig->length != siglen)		return (DST_R_VERIFYFAILURE);	if (!EVP_DigestFinal_ex(evp_md_ctx, digest, &dgstlen))		DST_RET (ISC_R_FAILURE);	ecdsasig = ECDSA_SIG_new();	if (ecdsasig == NULL)		DST_RET (ISC_R_NOMEMORY);	ecdsasig->r = BN_bin2bn(cp, siglen / 2, NULL);	cp += siglen / 2;	ecdsasig->s = BN_bin2bn(cp, siglen / 2, NULL);	/* cp += siglen / 2; */	status = ECDSA_do_verify(digest, dgstlen, ecdsasig, eckey);	if (status != 1)		DST_RET (dst__openssl_toresult(DST_R_VERIFYFAILURE));	ret = ISC_R_SUCCESS; err:	if (ecdsasig != NULL)		ECDSA_SIG_free(ecdsasig);	if (eckey != NULL)		EC_KEY_free(eckey);	return (ret);}
开发者ID:phonehold,项目名称:bind-9,代码行数:50,


示例19: opensslecdsa_sign

static isc_result_topensslecdsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {	isc_result_t ret;	dst_key_t *key = dctx->key;	isc_region_t r;	ECDSA_SIG *ecdsasig;	EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;	EVP_PKEY *pkey = key->keydata.pkey;	EC_KEY *eckey = EVP_PKEY_get1_EC_KEY(pkey);	unsigned int dgstlen, siglen;	unsigned char digest[EVP_MAX_MD_SIZE];	REQUIRE(key->key_alg == DST_ALG_ECDSA256 ||		key->key_alg == DST_ALG_ECDSA384);	if (eckey == NULL)		return (ISC_R_FAILURE);	if (key->key_alg == DST_ALG_ECDSA256)		siglen = DNS_SIG_ECDSA256SIZE;	else		siglen = DNS_SIG_ECDSA384SIZE;	isc_buffer_availableregion(sig, &r);	if (r.length < siglen)		DST_RET(ISC_R_NOSPACE);	if (!EVP_DigestFinal(evp_md_ctx, digest, &dgstlen))		DST_RET(dst__openssl_toresult3(dctx->category,					       "EVP_DigestFinal",					       ISC_R_FAILURE));	ecdsasig = ECDSA_do_sign(digest, dgstlen, eckey);	if (ecdsasig == NULL)		DST_RET(dst__openssl_toresult3(dctx->category,					       "ECDSA_do_sign",					       DST_R_SIGNFAILURE));	BN_bn2bin_fixed(ecdsasig->r, r.base, siglen / 2);	r.base += siglen / 2;	BN_bn2bin_fixed(ecdsasig->s, r.base, siglen / 2);	r.base += siglen / 2;	ECDSA_SIG_free(ecdsasig);	isc_buffer_add(sig, siglen);	ret = ISC_R_SUCCESS; err:	if (eckey != NULL)		EC_KEY_free(eckey);	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:50,


示例20: set_server_temporary_key_info

static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl){#ifdef SSL_get_server_tmp_key	/* Show ephemeral key information. */	EVP_PKEY *ephemeral_key = NULL;	/* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */#ifndef OPENSSL_NO_EC	EC_KEY *ec_key = NULL;#endif	char *ephemeral_key_algorithm = NULL;	char *cname = NULL;	int nid;	g_return_if_fail(tls != NULL);	g_return_if_fail(ssl != NULL);	if (SSL_get_server_tmp_key(ssl, &ephemeral_key)) {		switch (EVP_PKEY_id(ephemeral_key)) {			case EVP_PKEY_DH:				tls_rec_set_ephemeral_key_algorithm(tls, "DH");				tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));				break;#ifndef OPENSSL_NO_EC			case EVP_PKEY_EC:				ec_key = EVP_PKEY_get1_EC_KEY(ephemeral_key);				nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key));				EC_KEY_free(ec_key);				cname = (char *)OBJ_nid2sn(nid);				ephemeral_key_algorithm = g_strdup_printf("ECDH: %s", cname);				tls_rec_set_ephemeral_key_algorithm(tls, ephemeral_key_algorithm);				tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));				g_free_and_null(ephemeral_key_algorithm);				break;#endif			default:				tls_rec_set_ephemeral_key_algorithm(tls, "Unknown");				tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));				break;		}		EVP_PKEY_free(ephemeral_key);	}#endif /* SSL_get_server_tmp_key. */}
开发者ID:pstray,项目名称:irssi,代码行数:49,


示例21: TEST_F

TEST_F(KeymasterTest, SignData_EC_Success) {    uint8_t* key_blob;    size_t key_blob_length;    UniqueReadOnlyBlob testKey(TEST_SIGN_EC_KEY_1, sizeof(TEST_SIGN_EC_KEY_1));    ASSERT_TRUE(testKey.get() != NULL);    ASSERT_EQ(0,            sDevice->import_keypair(sDevice, testKey.get(), testKey.length(),                    &key_blob, &key_blob_length))            << "Should successfully import an EC key";    UniqueKey key(&sDevice, key_blob, key_blob_length);    keymaster_ec_sign_params_t params = {            .digest_type = DIGEST_NONE,    };    uint8_t* sig;    size_t sig_length;    UniqueReadOnlyBlob testData(TEST_SIGN_DATA_1, sizeof(TEST_SIGN_DATA_1));    ASSERT_TRUE(testData.get() != NULL);    ASSERT_EQ(0,            sDevice->sign_data(sDevice, &params, key_blob, key_blob_length,                    testData.get(), testData.length(),                    &sig, &sig_length))            << "Should sign data successfully";    UniqueBlob sig_blob(sig, sig_length);    uint8_t* x509_data;    size_t x509_data_length;    ASSERT_EQ(0,            sDevice->get_keypair_public(sDevice, key_blob, key_blob_length,                    &x509_data, &x509_data_length))            << "Should be able to retrieve RSA public key successfully";    UniqueBlob x509_blob(x509_data, x509_data_length);    const unsigned char *tmp = static_cast<const unsigned char*>(x509_blob.get());    Unique_EVP_PKEY expected(d2i_PUBKEY((EVP_PKEY**) NULL, &tmp,            static_cast<long>(x509_blob.length())));    Unique_EC_KEY ecKey(EVP_PKEY_get1_EC_KEY(expected.get()));    ASSERT_EQ(1, ECDSA_verify(0, testData.get(), testData.length(), sig_blob.get(), sig_blob.length(), ecKey.get()))            << "Signature should verify";}
开发者ID:MIPS,项目名称:hardware-libhardware,代码行数:47,


示例22: lws_context_ssl_init_ecdh

static intlws_context_ssl_init_ecdh(struct lws_vhost *vhost){#ifdef LWS_SSL_SERVER_WITH_ECDH_CERT	EC_KEY *EC_key = NULL;	EVP_PKEY *pkey;	int KeyType;	X509 *x;	if (!lws_check_opt(vhost->context->options, LWS_SERVER_OPTION_SSL_ECDH))		return 0;	lwsl_notice(" Using ECDH certificate support/n");	/* Get X509 certificate from ssl context */	x = sk_X509_value(vhost->ssl_ctx->extra_certs, 0);	if (!x) {		lwsl_err("%s: x is NULL/n", __func__);		return 1;	}	/* Get the public key from certificate */	pkey = X509_get_pubkey(x);	if (!pkey) {		lwsl_err("%s: pkey is NULL/n", __func__);		return 1;	}	/* Get the key type */	KeyType = EVP_PKEY_type(pkey->type);	if (EVP_PKEY_EC != KeyType) {		lwsl_notice("Key type is not EC/n");		return 0;	}	/* Get the key */	EC_key = EVP_PKEY_get1_EC_KEY(pkey);	/* Set ECDH parameter */	if (!EC_key) {		lwsl_err("%s: ECDH key is NULL /n", __func__);		return 1;	}	SSL_CTX_set_tmp_ecdh(vhost->ssl_ctx, EC_key);	EC_KEY_free(EC_key);#endif	return 0;}
开发者ID:kubecz3k,项目名称:godot,代码行数:46,


示例23: d2i_PKCS8_PRIV_KEY_INFO

// Decode from PKCS#8 BERbool OSSLECPrivateKey::PKCS8Decode(const ByteString& ber){	int len = ber.size();	if (len <= 0) return false;	const unsigned char* priv = ber.const_byte_str();	PKCS8_PRIV_KEY_INFO* p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, &priv, len);	if (p8 == NULL) return false;	EVP_PKEY* pkey = EVP_PKCS82PKEY(p8);	PKCS8_PRIV_KEY_INFO_free(p8);	if (pkey == NULL) return false;	EC_KEY* key = EVP_PKEY_get1_EC_KEY(pkey);	EVP_PKEY_free(pkey);	if (key == NULL) return false;	setFromOSSL(key);	EC_KEY_free(key);	return true;}
开发者ID:bellgrim,项目名称:SoftHSMv2,代码行数:18,


示例24: CreateFamilySignature

	std::string CreateFamilySignature (const std::string& family, const IdentHash& ident)	{		auto filename = i2p::fs::DataDirPath("family", (family + ".key"));		std::string sig;		SSL_CTX * ctx = SSL_CTX_new (TLS_method ());		int ret = SSL_CTX_use_PrivateKey_file (ctx, filename.c_str (), SSL_FILETYPE_PEM);		if (ret)		{			SSL * ssl = SSL_new (ctx);			EVP_PKEY * pkey = SSL_get_privatekey (ssl);			EC_KEY * ecKey = EVP_PKEY_get1_EC_KEY (pkey);			if (ecKey)			{				auto group = EC_KEY_get0_group (ecKey);				if (group)				{					int curve = EC_GROUP_get_curve_name (group);					if (curve == NID_X9_62_prime256v1)					{						uint8_t signingPrivateKey[32], buf[50], signature[64];						i2p::crypto::bn2buf (EC_KEY_get0_private_key (ecKey), signingPrivateKey, 32);						i2p::crypto::ECDSAP256Signer signer (signingPrivateKey);						size_t len = family.length ();						memcpy (buf, family.c_str (), len);						memcpy (buf + len, (const uint8_t *)ident, 32);						len += 32;						signer.Sign (buf, len, signature);						len = Base64EncodingBufferSize (64);						char * b64 = new char[len+1];						len = ByteStreamToBase64 (signature, 64, b64, len);						b64[len] = 0;						sig = b64;						delete[] b64;					}					else						LogPrint (eLogWarning, "Family: elliptic curve ", curve, " is not supported");				}			}			SSL_free (ssl);		}		else			LogPrint (eLogError, "Family: Can't open keys file: ", filename);		SSL_CTX_free (ctx);		return sig;	}
开发者ID:PurpleI2P,项目名称:i2pd,代码行数:45,


示例25: extract_EC_KEY_from_X509

u2fs_rc extract_EC_KEY_from_X509(const u2fs_X509_t * cert,                                 u2fs_EC_KEY_t ** key){  if (cert == NULL || key == NULL)    return U2FS_MEMORY_ERROR;  EVP_PKEY *pkey = X509_get_pubkey((X509 *) cert);  if (pkey == NULL) {    if (debug) {      unsigned long err = 0;      err = ERR_get_error();      fprintf(stderr, "Error: %s, %s, %s/n",              ERR_lib_error_string(err),              ERR_func_error_string(err), ERR_reason_error_string(err));    }    return U2FS_CRYPTO_ERROR;  }  *key = (u2fs_EC_KEY_t *) EVP_PKEY_get1_EC_KEY(pkey);  EVP_PKEY_free(pkey);  pkey = NULL;  if (*key == NULL) {    if (debug) {      unsigned long err = 0;      err = ERR_get_error();      fprintf(stderr, "Error: %s, %s, %s/n",              ERR_lib_error_string(err),              ERR_func_error_string(err), ERR_reason_error_string(err));    }    return U2FS_CRYPTO_ERROR;  }  EC_GROUP *ecg = EC_GROUP_new_by_curve_name(NID_X9_62_prime256v1);  EC_KEY_set_asn1_flag((EC_KEY *) * key, OPENSSL_EC_NAMED_CURVE);  EC_KEY_set_group((EC_KEY *) * key, ecg);  EC_GROUP_free(ecg);  ecg = NULL;  return U2FS_OK;}
开发者ID:Yubico,项目名称:libu2f-server-dpkg,代码行数:45,


示例26: d2i_PUBKEY

EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length)	{	EVP_PKEY *pkey;	EC_KEY *key;	const unsigned char *q;	q = *pp;	pkey = d2i_PUBKEY(NULL, &q, length);	if (!pkey) return(NULL);	key = EVP_PKEY_get1_EC_KEY(pkey);	EVP_PKEY_free(pkey);	if (!key)  return(NULL);	*pp = q;	if (a)		{		EC_KEY_free(*a);		*a = key;		}	return(key);	}
开发者ID:hackshields,项目名称:antivirus,代码行数:19,


示例27: extract_and_print_eckey

int extract_and_print_eckey(EVP_PKEY* pubkey, int version) {  assert(pubkey);  EC_KEY* eckey = EVP_PKEY_get1_EC_KEY(pubkey);  if (!eckey) {    fprintf(stderr, "error: EVP_PKEY_get1_EC_KEY() failed./n");    return 2;  }  if (!EC_KEY_check_key(eckey)) {    fprintf(stderr, "error: EC_KEY_check_key() failed./n");    EC_KEY_free(eckey);    return 2;  }    int result = convert_eckey_to_x962_and_print(eckey, version);  EC_KEY_free(eckey);  return result;}
开发者ID:0963682490,项目名称:omaha,代码行数:19,


示例28: __pkcs11h_openssl_session_setECDSA

staticPKCS11H_BOOL__pkcs11h_openssl_session_setECDSA(	IN const pkcs11h_openssl_session_t openssl_session,	IN EVP_PKEY * evp) {	PKCS11H_BOOL ret = FALSE;	EC_KEY *ec = NULL;	_PKCS11H_DEBUG (		PKCS11H_LOG_DEBUG2,		"PKCS#11: __pkcs11h_openssl_session_setECDSA - entered openssl_session=%p, evp=%p",		(void *)openssl_session,		(void *)evp	);	if (		(ec = EVP_PKEY_get1_EC_KEY (evp)) == NULL	) {		_PKCS11H_LOG (PKCS11H_LOG_WARN, "PKCS#11: Cannot get EC key");		goto cleanup;	}	ECDSA_set_method (ec, __openssl_methods.ecdsa);	ECDSA_set_ex_data (ec, __openssl_methods.ecdsa_index, openssl_session);	ret = TRUE;cleanup:	if (ec != NULL) {		EC_KEY_free (ec);		ec = NULL;	}	_PKCS11H_DEBUG (		PKCS11H_LOG_DEBUG2,		"PKCS#11: __pkcs11h_openssl_session_setECDSA - return ret=%d",		ret	);	return ret;}
开发者ID:zedinosaur,项目名称:pkcs11-helper,代码行数:43,


示例29: opensslecdsa_tofile

static isc_result_topensslecdsa_tofile(const dst_key_t *key, const char *directory) {	isc_result_t ret;	EVP_PKEY *pkey;	EC_KEY *eckey = NULL;	const BIGNUM *privkey;	dst_private_t priv;	unsigned char *buf = NULL;	if (key->keydata.pkey == NULL)		return (DST_R_NULLKEY);	if (key->external) {		priv.nelements = 0;		return (dst__privstruct_writefile(key, &priv, directory));	}	pkey = key->keydata.pkey;	eckey = EVP_PKEY_get1_EC_KEY(pkey);	if (eckey == NULL)		return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));	privkey = EC_KEY_get0_private_key(eckey);	if (privkey == NULL)		DST_RET (ISC_R_FAILURE);	buf = isc_mem_get(key->mctx, BN_num_bytes(privkey));	if (buf == NULL)		DST_RET (ISC_R_NOMEMORY);	priv.elements[0].tag = TAG_ECDSA_PRIVATEKEY;	priv.elements[0].length = BN_num_bytes(privkey);	BN_bn2bin(privkey, buf);	priv.elements[0].data = buf;	priv.nelements = 1;	ret = dst__privstruct_writefile(key, &priv, directory); err:	if (eckey != NULL)		EC_KEY_free(eckey);	if (buf != NULL)		isc_mem_put(key->mctx, buf, BN_num_bytes(privkey));	return (ret);}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:43,



注:本文中的EVP_PKEY_get1_EC_KEY函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ EVP_PKEY_get1_RSA函数代码示例
C++ EVP_PKEY_get0函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。