本文整理汇总了C++中d2i_RSAPrivateKey函数的典型用法代码示例。如果您正苦于以下问题:C++ d2i_RSAPrivateKey函数的具体用法?C++ d2i_RSAPrivateKey怎么用?C++ d2i_RSAPrivateKey使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了d2i_RSAPrivateKey函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Destroy
int COsslKey::setPrivateKeyRaw( sqbind::CSqBinary *pBin )
{_STT();
Destroy();
if ( !pBin || !pBin->getUsed() )
return 0;
m_pkey = EVP_PKEY_new();
if ( !m_pkey )
{ oexERROR( 0, oexT( "EVP_PKEY_new() failed" ) );
Destroy();
return 0;
} // end if
const unsigned char *p = (const unsigned char*)pBin->Ptr();
RSA *rsa = d2i_RSAPrivateKey( oexNULL, &p, pBin->getUsed() );
if ( !rsa )
{ oexERROR( 0, oexT( "d2i_RSAPrivateKey() failed" ) );
Destroy();
return 0;
} // end if
// Assign key
if ( !EVP_PKEY_assign_RSA( m_pkey, rsa ) )
{ oexERROR( 0, oexT( "EVP_PKEY_assign_RSA() failed" ) );
Destroy();
return 0;
} // end if
rsa = oexNULL;
return GenPublicKey();
}
示例2: keystore_load_rsakey
static void keystore_load_rsakey(GKeyFile *keyfile, gchar *key,
struct keystore_t *keystore)
{
g_assert(NULL != keyfile);
g_assert(NULL != key);
g_assert(NULL != keystore);
gsize length = 0;
gchar **list = g_key_file_get_string_list(keyfile, "rsa", key, &length, NULL);
if (length == 2)
{
int key_index = atoi(key);
int keylen = atoi(list[0]);
gsize keybits_len = 0;
guchar *keybits = g_base64_decode(list[1], &keybits_len);
const guchar *tmp = keybits;
struct rsa_key_t *rsa_key = g_malloc(sizeof(struct rsa_key_t));
rsa_key->keylen = keylen;
rsa_key->rsa = d2i_RSAPrivateKey(NULL, (const unsigned char **)&tmp,
keybits_len);
if (NULL != rsa_key->rsa)
{
keystore_key_replace(keystore->rsa, rsa_key, &key_index);
}
g_free(keybits);
}
g_strfreev(list);
}
示例3: PrivateKeyRead
VbPrivateKey* PrivateKeyRead(const char* filename) {
VbPrivateKey *key;
uint64_t filelen = 0;
uint8_t *buffer;
const unsigned char *start;
buffer = ReadFile(filename, &filelen);
if (!buffer) {
VbExError("unable to read from file %s\n", filename);
return 0;
}
key = (VbPrivateKey*)malloc(sizeof(VbPrivateKey));
if (!key) {
VbExError("Unable to allocate VbPrivateKey\n");
free(buffer);
return 0;
}
key->algorithm = *(typeof(key->algorithm) *)buffer;
start = buffer + sizeof(key->algorithm);
key->rsa_private_key = d2i_RSAPrivateKey(0, &start,
filelen - sizeof(key->algorithm));
if (!key->rsa_private_key) {
VbExError("Unable to parse RSA private key\n");
free(buffer);
free(key);
return 0;
}
free(buffer);
return key;
}
示例4: ASN1err
EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
long length)
{
EVP_PKEY *ret;
if ((a == NULL) || (*a == NULL))
{
if ((ret=EVP_PKEY_new()) == NULL)
{
ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_EVP_LIB);
return(NULL);
}
}
else ret= *a;
ret->save_type=type;
ret->type=EVP_PKEY_type(type);
switch (ret->type)
{
#ifndef OPENSSL_NO_RSA
case EVP_PKEY_RSA:
if ((ret->pkey.rsa=d2i_RSAPrivateKey(NULL,
(const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
{
ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
goto err;
}
break;
#endif
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:
if ((ret->pkey.dsa=d2i_DSAPrivateKey(NULL,
(const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
{
ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
goto err;
}
break;
#endif
#ifndef OPENSSL_NO_EC
case EVP_PKEY_EC:
if ((ret->pkey.ec = d2i_ECPrivateKey(NULL,
(const unsigned char **)pp, length)) == NULL)
{
ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
goto err;
}
break;
#endif
default:
ASN1err(ASN1_F_D2I_PRIVATEKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
goto err;
/* break; */
}
if (a != NULL) (*a)=ret;
return(ret);
err:
if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);
return(NULL);
}
示例5:
static EVP_PKEY *load_example_rsa_key(void)
{
EVP_PKEY *ret = NULL;
const unsigned char *derp = kExampleRSAKeyDER;
EVP_PKEY *pkey = NULL;
RSA *rsa = NULL;
if (!d2i_RSAPrivateKey(&rsa, &derp, sizeof(kExampleRSAKeyDER))) {
return NULL;
}
pkey = EVP_PKEY_new();
if (pkey == NULL || !EVP_PKEY_set1_RSA(pkey, rsa)) {
goto out;
}
ret = pkey;
pkey = NULL;
out:
EVP_PKEY_free(pkey);
RSA_free(rsa);
return ret;
}
示例6: PKI_load_private_RSA
SEXP PKI_load_private_RSA(SEXP what, SEXP sPassword) {
EVP_PKEY *key = 0;
BIO *bio_mem;
if (TYPEOF(sPassword) != STRSXP || LENGTH(sPassword) != 1)
Rf_error("Password must be a string");
PKI_init();
if (TYPEOF(what) == RAWSXP) { /* assuming binary DER format */
RSA *rsa = 0;
const unsigned char *ptr;
ptr = (const unsigned char *) RAW(what);
rsa = d2i_RSAPrivateKey(&rsa, &ptr, LENGTH(what));
if (!rsa)
Rf_error("%s", ERR_error_string(ERR_get_error(), NULL));
key = EVP_PKEY_new();
EVP_PKEY_assign_RSA(key, rsa);
} else if (TYPEOF(what) == STRSXP && LENGTH(what)) {
SEXP b64Key = STRING_ELT(what, 0);
bio_mem = BIO_new_mem_buf((void *) CHAR(b64Key), -1);
key = PEM_read_bio_PrivateKey(bio_mem, 0, 0, (void*) CHAR(STRING_ELT(sPassword, 0)));
BIO_free(bio_mem);
if (!key)
Rf_error("%s", ERR_error_string(ERR_get_error(), NULL));
} else
Rf_error("Private key must be a character or raw vector");
return wrap_EVP_PKEY(key, PKI_KT_PRIVATE);
}
示例7: main
main(){
unsigned char *pem_key_str = "MIGJAoGBAKz8scCXFg2O2r2sMsic40hSgHw1q52LUAvEHDH4S5pgflNjs8NfJKOjZmnkTpxI+eLmGKqPPWg7SF7YbUMmmTXvhuTWQF9OcXhIxzIUVFwQKZEWSgZyoaqwcy3XF6sIf7oFDRWfkIY5RCp03GdM0IjGK3lDIdfh0p6wSjTdfvvhAgMBAAEwggJcAgEAAoGBAKz8scCXFg2O2r2sMsic40hSgHw1q52LUAvEHDH4S5pgflNjs8NfJKOjZmnkTpxI+eLmGKqPPWg7SF7YbUMmmTXvhuTWQF9OcXhIxzIUVFwQKZEWSgZyoaqwcy3XF6sIf7oFDRWfkIY5RCp03GdM0IjGK3lDIdfh0p6wSjTdfvvhAgMBAAECgYBo1D1Xq3dWwgI2vPqNbd2h/zUTkGauczUP3EkF0yTlqaIEIMBYHfkTHTs74nns5aBg6vV5rpIU7w/9QgR8lBB1it3g6QU8RWdLG1cpckEL8LLPPWPIUOTSaId2BAeIU3Q0NOBc0sWO1pUTvYBGykQW9LYsP3254yIbc+5aQhwjAQJBANUh5TA45sMvpK+ZoRd3rWTQMU3Ted2/MCsGknPSPCk9ZxHTknU+q5O8L2kmWuc0b/IrVp4Zi9AUDx9AplRUvjECQQDPx7t6Iaim+jjO5y9FcKQPnFW4PRD2s2OffGisrIVAoLoQqNeHW5itltEs/CIT2AyTYRhg4uBIC37gt3kelDyxAkBhNv24Oiwf2apvok6VSrRfaIskqZJLr/pDldLVW46vbN+HhQ6nxfczAsJJXwJVtVheiKAQqyxXs96V7cIwcxrxAkEAihggRRK7yYaCXRkPtOIhV/K6kgGcFaqyapw/4Yuj4IkyQMJGxMKe3bhf+7rzVyb/bLBaiIIhOCDTybyHNkilcQJAHNSMtPgDVvYbzImMaNcpGHKJdkPoChO7W7EpRuCMlT7OMIc8cQIOiTBrHRDzF72NT0p+QfAXUAZxat7s1oqSDw==";
RSA *pub_rsa,*priv_rsa;
unsigned char de_buf[2048],*p,*start;
int de_len;
p=de_buf;
base64_decode(pem_key_str,strlen(pem_key_str),de_buf,&de_len);
p = (unsigned char*)malloc(de_len);
memcpy(p,de_buf,de_len);
start = p;
pub_rsa=d2i_RSAPublicKey(NULL,(const unsigned char**)&p,(long)de_len);
de_len-=(p-start);
priv_rsa=d2i_RSAPrivateKey(NULL,(const unsigned char**)&p,(long)de_len);
if ((pub_rsa == NULL) || (priv_rsa == NULL))
ERR_print_errors_fp(stderr);
RSA_print_fp(stdout,pub_rsa,11);
RSA_print_fp(stdout,priv_rsa,11);
RSA_free(pub_rsa);
RSA_free(priv_rsa);
}
示例8: d2i_X509
int EdSSLContext::setSSLCertMem(void* crt, int crtlen, void* key, int keylen)
{
X509* xcert = d2i_X509(NULL, (const unsigned char**)&crt, crtlen);
SSL_CTX_use_certificate(mCtx, xcert);
RSA *pkey = d2i_RSAPrivateKey(NULL, (const unsigned char**)&key, keylen);
SSL_CTX_use_RSAPrivateKey(mCtx, pkey);
return 0;
}
示例9: old_rsa_priv_decode
static int old_rsa_priv_decode(EVP_PKEY *pkey, const unsigned char **pder,
int derlen) {
RSA *rsa = d2i_RSAPrivateKey(NULL, pder, derlen);
if (rsa == NULL) {
OPENSSL_PUT_ERROR(EVP, old_rsa_priv_decode, ERR_R_RSA_LIB);
return 0;
}
EVP_PKEY_assign_RSA(pkey, rsa);
return 1;
}
示例10: old_rsa_priv_decode
static int old_rsa_priv_decode(EVP_PKEY *pkey,
const unsigned char **pder, int derlen)
{
RSA *rsa;
if (!(rsa = d2i_RSAPrivateKey(NULL, pder, derlen))) {
RSAerr(RSA_F_OLD_RSA_PRIV_DECODE, ERR_R_RSA_LIB);
return 0;
}
EVP_PKEY_assign_RSA(pkey, rsa);
return 1;
}
示例11: R_rsa_decrypt
SEXP R_rsa_decrypt(SEXP data, SEXP keydata){
static unsigned char* buf[8192];
RSA *rsa = RSA_new();
const unsigned char *ptr = RAW(keydata);
bail(!!d2i_RSAPrivateKey(&rsa, &ptr, LENGTH(keydata)));
int len = RSA_private_decrypt(LENGTH(data), RAW(data), (unsigned char*) buf, rsa, RSA_PKCS1_PADDING);
bail(len > 0);
SEXP res = allocVector(RAWSXP, len);
memcpy(RAW(res), buf, len);
return res;
}
示例12: psRsaParsePkcs1PrivKey
/**
Parse an RSA private key from a PKCS#1 byte stream.
@see ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf
*/
int32_t psRsaParsePkcs1PrivKey(psPool_t *pool,
const unsigned char *p, psSize_t size,
psRsaKey_t *key)
{
RSA *rsa;
# ifndef USE_D2I
const unsigned char *end, *seq;
int32_t version;
psSize_t seqlen;
# endif
# ifdef USE_D2I
if ((rsa = d2i_RSAPrivateKey(NULL, &p, size)) == NULL)
{
return PS_PARSE_FAIL;
}
# else
if ((rsa = RSA_new()) == NULL)
{
return PS_MEM_FAIL;
}
end = p + size;
if (getAsnSequence(&p, size, &seqlen) < 0)
{
RSA_free(rsa);
goto L_FAIL;
}
seq = p;
if (getAsnInteger(&p, (uint16_t) (end - p), &version) < 0 || version != 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->n) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->e) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->d) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->p) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->q) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->dmp1) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->dmq1) < 0 ||
getBig(&p, (uint16_t) (end - p), &rsa->iqmp) < 0 ||
(uint16_t) (p - seq) != seqlen)
{
RSA_free(rsa);
goto L_FAIL;
}
rsa->version = version;
# endif
/* RSA_print_fp(stdout, rsa, 0); */
*key = rsa;
return PS_SUCCESS;
L_FAIL:
psTraceIntCrypto("psRsaParsePkcs1PrivKey error on byte %d\n", p - (end - size));
return PS_PARSE_FAIL;
}
示例13: main
main(){
char *source_filename = "/etc/shopex/skomart.com/sec.pem.en";
char *file_content = NULL;
int file_content_len = 0;
FILE *fp;
char *output;
int output_len;
int de_len;
int i = 0;
RSA *priv_rsa;
char *b64_decode;
int b64_decode_len = 0;
char *input = NULL;
if((fp=fopen(source_filename,"rb"))==NULL)
{
printf("cant open the file");
exit(0);
}
fseek(fp, 0L, SEEK_END);
file_content_len = ftell(fp);
fseek(fp, 0L, SEEK_SET);
file_content = (char *)malloc(file_content_len);
fread(file_content, 1, file_content_len, fp );
file_content[file_content_len] = '\0';
//fclose(fp);
shopex_conf_rsa_decrypt(file_content,file_content_len,&output,&output_len);
output_len = output_len > strlen(output) ? strlen(output) : output_len;
b64_decode = (char *)malloc(output_len);
input = (char *)malloc(output_len);
memcpy(input,output,output_len);
base64_decode(input,output_len,b64_decode,&b64_decode_len);
printf("%d\n",b64_decode_len);
for(i=0;i<b64_decode_len;i++){
printf("%2x",b64_decode[i]);
}
priv_rsa=d2i_RSAPrivateKey(NULL,(const unsigned char**)&b64_decode,(long)b64_decode_len);
RSA_print_fp(stdout,priv_rsa,11);
RSA_free(priv_rsa);
}
示例14: PKI_load_private_RSA
SEXP PKI_load_private_RSA(SEXP what) {
EVP_PKEY *key;
RSA *rsa = 0;
const unsigned char *ptr;
if (TYPEOF(what) != RAWSXP)
Rf_error("key must be a raw vector");
ptr = (const unsigned char *) RAW(what);
rsa = d2i_RSAPrivateKey(&rsa, &ptr, LENGTH(what));
if (!rsa)
Rf_error("%s", ERR_error_string(ERR_get_error(), NULL));
key = EVP_PKEY_new();
EVP_PKEY_assign_RSA(key, rsa);
return wrap_EVP_PKEY(key, PKI_KT_PRIVATE);
}
示例15: memset
void pki_evp::veryOldFromData(unsigned char *p, int size )
{
unsigned char *sik, *pdec, *pdec1, *sik1;
int outl, decsize;
unsigned char iv[EVP_MAX_IV_LENGTH];
unsigned char ckey[EVP_MAX_KEY_LENGTH];
memset(iv, 0, EVP_MAX_IV_LENGTH);
RSA *rsakey;
EVP_CIPHER_CTX ctx;
const EVP_CIPHER *cipher = EVP_des_ede3_cbc();
sik = (unsigned char *)OPENSSL_malloc(size);
check_oom(sik);
pki_openssl_error();
pdec = (unsigned char *)OPENSSL_malloc(size);
if (pdec == NULL ) {
OPENSSL_free(sik);
check_oom(pdec);
}
pdec1=pdec;
sik1=sik;
memcpy(iv, p, 8); /* recover the iv */
/* generate the key */
EVP_BytesToKey(cipher, EVP_sha1(), iv, (unsigned char *)oldpasswd,
strlen(oldpasswd), 1, ckey,NULL);
/* we use sha1 as message digest,
* because an md5 version of the password is
* stored in the database...
*/
EVP_CIPHER_CTX_init (&ctx);
EVP_DecryptInit( &ctx, cipher, ckey, iv);
EVP_DecryptUpdate( &ctx, pdec , &outl, p + 8, size -8 );
decsize = outl;
EVP_DecryptFinal( &ctx, pdec + decsize , &outl );
decsize += outl;
pki_openssl_error();
memcpy(sik, pdec, decsize);
if (key->type == EVP_PKEY_RSA) {
rsakey=d2i_RSAPrivateKey(NULL,(const unsigned char **)&pdec, decsize);
if (pki_ign_openssl_error()) {
rsakey = d2i_RSA_PUBKEY(NULL, (const unsigned char **)&sik, decsize);
}
pki_openssl_error();
if (rsakey) EVP_PKEY_assign_RSA(key, rsakey);
}
OPENSSL_free(sik1);
OPENSSL_free(pdec1);
EVP_CIPHER_CTX_cleanup(&ctx);
pki_openssl_error();
encryptKey();
}