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

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

51自学网 2021-06-02 11:57:04
  C++
这篇教程C++ rsa_free函数代码示例写得很实用,希望能帮到您。

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

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

示例1: rsa_genkey

uint8_t *rsa_genkey (void){  int r;  uint8_t index = 0;  uint8_t *p_q_modulus = (uint8_t *)malloc (KEY_CONTENT_LEN*2);  uint8_t *p = p_q_modulus;  uint8_t *q = p_q_modulus + KEY_CONTENT_LEN/2;  uint8_t *modulus = p_q_modulus + KEY_CONTENT_LEN;  if (p_q_modulus == NULL)    return NULL;  rsa_init (&rsa_ctx, RSA_PKCS_V15, 0);  r = rsa_gen_key (&rsa_ctx, random_byte, &index,		   KEY_CONTENT_LEN * 8, RSA_EXPONENT);  if (r < 0)    {      free (p_q_modulus);      rsa_free (&rsa_ctx);      return NULL;    }  mpi_write_binary (&rsa_ctx.P, p, KEY_CONTENT_LEN/2);  mpi_write_binary (&rsa_ctx.Q, q, KEY_CONTENT_LEN/2);  mpi_write_binary (&rsa_ctx.N, modulus, KEY_CONTENT_LEN);  rsa_free (&rsa_ctx);  return p_q_modulus;}
开发者ID:Nitrokey,项目名称:nitrokey-start-firmware,代码行数:29,


示例2: _vcrypt_load_keys

int _vcrypt_load_keys(VCRYPT_CTX *ctx, const char *file, char *checksum){	FILE *f = fopen(file, "rb");	if (f == NULL ) {		ctx->has_valid_keys_locally = 0;		return -ERR_FILE_READ;	}	uint8_t keydata[4096];	int keylen = fread(keydata, 1, sizeof keydata, f);	if (keylen <= 0) {		fclose(f);		return -ERR_FILE_READ;	}	fclose(f);	ctx->has_valid_keys_locally = 0; // the next will invalidate them	rsa_free(&ctx->ssl_req.rsa);	int ret = x509parse_key(&ctx->ssl_req.rsa, keydata, keylen, NULL, 0);	if (ret == 0)		vcrypt_get_key_fingerprint_ctx(ctx, checksum);	ctx->has_valid_keys_locally = 1;	return ret == 0 ? 0 : -ERR_RSA_ERROR_LOADING_KEYS;}
开发者ID:vcryptfoundation,项目名称:vcrypt,代码行数:29,


示例3: main

int main(int argc, char **argv) {  int ret;  rsa_t rsa;  uint32_t mc, vf;  datum_t em, m;  uint8_t EM[256];  mlockall(MCL_CURRENT|MCL_FUTURE);  rsa_init(&rsa);  mc = vf = 0;  em.data = (uint8_t *)EM;  em.size = (uint32_t)sizeof(EM);/*generate these with gentests.plNOTE: in some cases, the RSA signing operation will produce a signature whichis 1 or more bytes less in length than N.  In these cases, it must be paddedon the left with zeros.*/#include "tests.c"  rsa_free(&rsa);  munlockall();  printf("/nTest run completed with %d miscompares and %d verification failures./n/n", mc, vf);  return 0;}
开发者ID:Rupan,项目名称:kep,代码行数:30,


示例4: entropy_init

/*	rsa oaep encryption*/unsigned char *rsacrypt(pk_context *pkctx,const unsigned char *plaintext,const unsigned int plaintextsize){	entropy_context entropy = {0};	ctr_drbg_context ctr_drbg = {0};		rsa_context rsactx = {0};	int pkresult = 0;	unsigned char *encryptedoutput = NULL;	unsigned int encryptedoutputsize = 0;	char pers[33] = "3s:!2OXI(FX%#Q($[CEjiGRIk//-)4e&?";	int ret = 0;		entropy_init( &entropy );	if((ret = ctr_drbg_init(&ctr_drbg, entropy_func, &entropy, (unsigned char *)&pers[0],strlen(pers))) != 0 ){		outputerror(DBG_ERROR,"%s/n","rsacrypt::failed to initialize random generator");		return NULL;	}	encryptedoutputsize = pk_get_len(pkctx);	outputerror(DBG_INFO,"%s %Iu/n","rsacrypt::buffer size for rsa encrypted output ",encryptedoutputsize);	encryptedoutput = (unsigned char *)malloc(encryptedoutputsize);	SecureZeroMemory(encryptedoutput,encryptedoutputsize);			rsa_copy(&rsactx,pkctx->pk_ctx);	rsactx.padding = RSA_PKCS_V21;	rsactx.hash_id = POLARSSL_MD_SHA1;		pkresult = 0;			pkresult = rsa_rsaes_oaep_encrypt(&rsactx,ctr_drbg_random,&ctr_drbg,RSA_PUBLIC,"cryptoshot",strlen("cryptoshot"),plaintextsize,plaintext,encryptedoutput);	if(pkresult != 0){		outputerror(DBG_ERROR,"%s %i/n","rsacrypt::failed to encrypt data",pkresult);		return NULL;	}	entropy_free(&entropy);		rsa_free(&rsactx);	return encryptedoutput;}
开发者ID:DiabloHorn,项目名称:cryptoshot,代码行数:38,


示例5: d

/**  Import RSA key from raw numbers  @param N       RSA's N  @param Nlen    RSA's N's length  @param e       RSA's e  @param elen    RSA's e's length  @param d       RSA's d  (only private key, NULL for public key)  @param dlen    RSA's d's length  @param key     [out] the destination for the imported key  @return CRYPT_OK if successful*/int rsa_set_key(const unsigned char *N,  unsigned long Nlen,                const unsigned char *e,  unsigned long elen,                const unsigned char *d,  unsigned long dlen,                rsa_key *key){   int err;   LTC_ARGCHK(key         != NULL);   LTC_ARGCHK(N           != NULL);   LTC_ARGCHK(e           != NULL);   LTC_ARGCHK(ltc_mp.name != NULL);   err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL);   if (err != CRYPT_OK) return err;   if ((err = mp_read_unsigned_bin(key->N , (unsigned char *)N , Nlen)) != CRYPT_OK)    { goto LBL_ERR; }   if ((err = mp_read_unsigned_bin(key->e , (unsigned char *)e , elen)) != CRYPT_OK)    { goto LBL_ERR; }   if (d && dlen) {      if ((err = mp_read_unsigned_bin(key->d , (unsigned char *)d , dlen)) != CRYPT_OK) { goto LBL_ERR; }      key->type = PK_PRIVATE;   }   else {      key->type = PK_PUBLIC;   }   return CRYPT_OK;LBL_ERR:   rsa_free(key);   return err;}
开发者ID:libtom,项目名称:libtomcrypt,代码行数:42,


示例6: rsa_verify

intrsa_verify (const uint8_t *pubkey, const uint8_t *hash, const uint8_t *sig){  int r;  rsa_init (&rsa_ctx, RSA_PKCS_V15, 0);  rsa_ctx.len = KEY_CONTENT_LEN;  mpi_lset (&rsa_ctx.E, 0x10001);  mpi_read_binary (&rsa_ctx.N, pubkey, KEY_CONTENT_LEN);  DEBUG_INFO ("RSA verify...");  r = rsa_pkcs1_verify (&rsa_ctx, RSA_PUBLIC, SIG_RSA_SHA256, 32, hash, sig);  rsa_free (&rsa_ctx);  if (r < 0)    {      DEBUG_INFO ("fail:");      DEBUG_SHORT (r);      return r;    }  else    {      DEBUG_INFO ("verified./r/n");      return 0;    }}
开发者ID:Nitrokey,项目名称:nitrokey-start-firmware,代码行数:27,


示例7: rsa_test

boolrsa_test(unsigned bits, mt64_context *rand_ctx){    mt64_init_u64(rand_ctx, 1234567890U);    rsa_ctx rsa;    if (!rsa_init_keygen(&rsa, bits, rand_ctx))	return false;    ASSERT(rsa.n != NULL);    ASSERT(rsa.phi != NULL);    ASSERT(rsa.e != NULL);    ASSERT(rsa.d != NULL);    mpi_t m = MPI_INITIALIZER;    mpi_mul(rsa.e, rsa.d, m);    mpi_mod(m, rsa.phi, m);    bool result = true;    if (!mpi_is_one(m)) {	printf("N: "), mpi_print_dec(rsa.n), printf("/n");	printf("E: "), mpi_print_dec(rsa.e), printf("/n");	printf("D: "), mpi_print_dec(rsa.d), printf("/n");	printf("Φ: "), mpi_print_dec(rsa.phi), printf("/n");	printf("E * D mod Φ: "), mpi_print_dec(m), printf("/n");	result = false;    }    mpi_free(m);    rsa_free(&rsa);    return result;}
开发者ID:fmela,项目名称:weecrypt,代码行数:29,


示例8: rsa_copy

/* * Copy the components of an RSA key */int rsa_copy( rsa_context *dst, const rsa_context *src ){    int ret;    dst->ver = src->ver;    dst->len = src->len;    MPI_CHK( mpi_copy( &dst->N, &src->N ) );    MPI_CHK( mpi_copy( &dst->E, &src->E ) );    MPI_CHK( mpi_copy( &dst->D, &src->D ) );    MPI_CHK( mpi_copy( &dst->P, &src->P ) );    MPI_CHK( mpi_copy( &dst->Q, &src->Q ) );    MPI_CHK( mpi_copy( &dst->DP, &src->DP ) );    MPI_CHK( mpi_copy( &dst->DQ, &src->DQ ) );    MPI_CHK( mpi_copy( &dst->QP, &src->QP ) );    MPI_CHK( mpi_copy( &dst->RN, &src->RN ) );    MPI_CHK( mpi_copy( &dst->RP, &src->RP ) );    MPI_CHK( mpi_copy( &dst->RQ, &src->RQ ) );#if !defined(POLARSSL_RSA_NO_CRT)    MPI_CHK( mpi_copy( &dst->Vi, &src->Vi ) );    MPI_CHK( mpi_copy( &dst->Vf, &src->Vf ) );#endif    dst->padding = src->padding;    dst->hash_id = src->hash_id;cleanup:    if( ret != 0 )        rsa_free( dst );    return( ret );}
开发者ID:ahawad,项目名称:opensgx,代码行数:38,


示例9: FinalizeAsymmetricCipher

ALWAYS_INLINE voidFinalizeAsymmetricCipher( JS::HandleObject obj, bool wipe ) {	AsymmetricCipherPrivate *pv = (AsymmetricCipherPrivate*)JL_GetPrivate(obj);	if ( pv ) {		if ( pv->hasKey ) {			switch ( pv->cipher ) {				case rsa:					rsa_free( &pv->key.rsaKey );					break;				case ecc:					ecc_free( &pv->key.eccKey );					break;				case dsa:					dsa_free( &pv->key.dsaKey );					break;			#ifdef MKAT				case katja:					katja_free( &pv->key.katjaKey );					break;			#endif			}		}		if ( wipe )			zeromem(pv, sizeof(AsymmetricCipherPrivate));		jl_free(pv);	}}
开发者ID:BenitoJedai,项目名称:jslibs,代码行数:31,


示例10: VerifyWeakSignature

static DWORD VerifyWeakSignature(    TMPQArchive * ha,    PMPQ_SIGNATURE_INFO pSI){    BYTE RevSignature[MPQ_WEAK_SIGNATURE_SIZE];    BYTE Md5Digest[MD5_DIGEST_SIZE];    rsa_key key;    int hash_idx = find_hash("md5");    int result = 0;    // Calculate hash of the entire archive, skipping the (signature) file    if(!CalculateMpqHashMd5(ha, pSI, Md5Digest))        return ERROR_VERIFY_FAILED;    // Import the Blizzard key in OpenSSL format    if(!decode_base64_key(szBlizzardWeakPublicKey, &key))        return ERROR_VERIFY_FAILED;    // Verify the signature    memcpy(RevSignature, &pSI->Signature[8], MPQ_WEAK_SIGNATURE_SIZE);    memrev(RevSignature, MPQ_WEAK_SIGNATURE_SIZE);    rsa_verify_hash_ex(RevSignature, MPQ_WEAK_SIGNATURE_SIZE, Md5Digest, sizeof(Md5Digest), LTC_LTC_PKCS_1_V1_5, hash_idx, 0, &result, &key);    rsa_free(&key);    // Return the result    return result ? ERROR_WEAK_SIGNATURE_OK : ERROR_WEAK_SIGNATURE_ERROR;}
开发者ID:Zim4ikUKR,项目名称:PseuWoW,代码行数:27,


示例11: rsa_genkey

static int rsa_genkey (lua_State *L) {    rsa_context rsa;    havege_state hs;    int ret=0;        rsa_init( &rsa, RSA_PKCS_V15, 0, havege_rand, &hs );        if( ( ret = rsa_gen_key( &rsa, KEY_SIZE, EXPONENT ) ) != 0 )    {        luaL_error(L, "Error generating key (%d)", ret);    }        /* Public Key */    if(ret = push_public_key(L, &rsa))    {    	luaL_error(L, "failed to obtain public key: error %d", ret );    }        /* Private Key */    if(ret = push_private_key(L, &rsa))    {    	luaL_error(L, "failed to obtain private key: error %d", ret );    }        rsa_free( &rsa );        return 2;}
开发者ID:luaforge,项目名称:luarsa,代码行数:28,


示例12: cleanup_crypt

void cleanup_crypt(void){    /* this never gets called because we never cleanly exit, but       here it is for completeness */    rsa_free(&key);    unregister_prng(&yarrow_desc);}
开发者ID:0x24bin,项目名称:exploit-database,代码行数:7,


示例13: main

int main(int argc, char **argv){    int rc = 0;    prng_state prng;    int prng_index, hash_index;    rsa_key key;    int i;    ltc_mp = tfm_desc;    prng_index = register_prng(&sprng_desc);  /* (fortuna_desc is a good choice if your platform's PRNG sucks.) */    if (prng_index == -1) {        fail("Failed to register a RNG");    }    hash_index = register_hash(&sha256_desc);    if (hash_index == -1) {        fail("Failed to register sha256 hasher");    }    if ((rc = rng_make_prng(128, prng_index, &prng, NULL)) != CRYPT_OK) {        fail("rng_make_prng failed: %s", error_to_string(rc));    }    read_rsakey(&key, "privatekey.bin");    for (i = 1; i < argc; i++) {        sign_file(argv[i], &key, &prng, prng_index, hash_index);    }    rsa_free(&key);    return 0;}
开发者ID:KuehnhammerTobias,项目名称:ioqw,代码行数:34,


示例14: memcpy

int SparkProtocol::handshake(void){  memcpy(queue + 40, device_id, 12);  int err = blocking_receive(queue, 40);  if (0 > err) return err;  parse_device_pubkey_from_privkey(queue+52, core_private_key);  rsa_context rsa;  init_rsa_context_with_public_key(&rsa, server_public_key);  const int len = 52+MAX_DEVICE_PUBLIC_KEY_LENGTH;  err = rsa_pkcs1_encrypt(&rsa, RSA_PUBLIC, len, queue, queue + len);  rsa_free(&rsa);  if (err) return err;  blocking_send(queue + len, 256);  err = blocking_receive(queue, 384);  if (0 > err) return err;  err = set_key(queue);  if (err) return err;  queue[0] = 0x00;  queue[1] = 0x10;  hello(queue + 2, descriptor.was_ota_upgrade_successful());  err = blocking_send(queue, 18);  if (0 > err) return err;  if (!event_loop())        // read the hello message from the server      return -1;  return 0;}
开发者ID:adeeshag,项目名称:particle_project,代码行数:35,


示例15: free_connection

void free_connection(connection_t *c) {	if(!c)		return;	cipher_close(c->incipher);	digest_close(c->indigest);	cipher_close(c->outcipher);	digest_close(c->outdigest);	sptps_stop(&c->sptps);	ecdsa_free(c->ecdsa);	rsa_free(c->rsa);	free(c->hischallenge);	buffer_clear(&c->inbuf);	buffer_clear(&c->outbuf);	io_del(&c->io);	if(c->socket > 0)		closesocket(c->socket);	free(c->name);	free(c->hostname);	if(c->config_tree)		exit_configuration(&c->config_tree);	free(c);}
开发者ID:AllardJ,项目名称:Tomato,代码行数:31,


示例16: ctr_rsa_key_init

static int ctr_rsa_key_init(ctr_rsa_context* ctx ){    int ret;    mpi P1, Q1;    mpi_init( &P1, &Q1, NULL );    MPI_CHK( mpi_sub_int( &P1, &ctx->rsa.P, 1 ) );    MPI_CHK( mpi_sub_int( &Q1, &ctx->rsa.Q, 1 ) );	/*     * DP = D mod (P - 1)     * DQ = D mod (Q - 1)     * QP = Q^-1 mod P     */    MPI_CHK( mpi_mod_mpi( &ctx->rsa.DP, &ctx->rsa.D, &P1 ) );    MPI_CHK( mpi_mod_mpi( &ctx->rsa.DQ, &ctx->rsa.D, &Q1 ) );    MPI_CHK( mpi_inv_mod( &ctx->rsa.QP, &ctx->rsa.Q, &ctx->rsa.P ) );cleanup:    mpi_free(&Q1, &P1, NULL );    if( ret != 0 )    {        rsa_free( &ctx->rsa );        return( POLARSSL_ERR_RSA_KEY_GEN_FAILED | ret );    }    return( 0 );   }
开发者ID:44670,项目名称:Project_CTR,代码行数:31,


示例17: rsa_compat_test

static int rsa_compat_test(void){   rsa_key key;   unsigned char buf[1024];   unsigned long len;   /* try reading the key */   DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key));   /* now try to export private/public and compare */   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PRIVATE, &key));   if (len != sizeof(openssl_private_rsa) || memcmp(buf, openssl_private_rsa, len)) {      fprintf(stderr, "RSA private export failed to match OpenSSL output, %lu, %lu/n", len, (unsigned long)sizeof(openssl_private_rsa));      return 1;   }   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PUBLIC, &key));   if (len != sizeof(openssl_public_rsa_stripped) || memcmp(buf, openssl_public_rsa_stripped, len)) {      fprintf(stderr, "RSA(private) public export failed to match OpenSSL output/n");      return 1;   }   rsa_free(&key);   /* try reading the public key */   DO(rsa_import(openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), &key));   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PUBLIC, &key));   if (len != sizeof(openssl_public_rsa_stripped) || memcmp(buf, openssl_public_rsa_stripped, len)) {      fprintf(stderr, "RSA(public) stripped public import failed to match OpenSSL output/n");      return 1;   }   rsa_free(&key);   /* try reading the public key */   DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &key));   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PUBLIC, &key));   if (len != sizeof(openssl_public_rsa_stripped) || memcmp(buf, openssl_public_rsa_stripped, len)) {      fprintf(stderr, "RSA(public) SSL public import failed to match OpenSSL output/n");      return 1;   }   rsa_free(&key);   return 0;}   
开发者ID:MagicalTux,项目名称:libtomcrypt,代码行数:47,


示例18: rsa_gen_key

/* * Generate an RSA keypair */int rsa_gen_key( rsa_context *ctx, int nbits, int exponent,                 ulong (*rng_fn)(void *), void *rng_st ){    int ret;    mpi P1, Q1, H, G;    mpi_init( &P1, &Q1, &H, &G, NULL );    memset( ctx, 0, sizeof( rsa_context ) );    /*     * find primes P and Q with Q < P so that:     * GCD( E, (P-1)*(Q-1) ) == 1     */    CHK( mpi_lset( &ctx->E, exponent ) );    nbits >>= 1;    do    {        CHK( mpi_gen_prime( &ctx->P, nbits, 0, rng_fn, rng_st ) );        CHK( mpi_gen_prime( &ctx->Q, nbits, 0, rng_fn, rng_st ) );        if( mpi_cmp_mpi( &ctx->P, &ctx->Q ) < 0 )            mpi_swap( &ctx->P, &ctx->Q );        CHK( mpi_mul_mpi( &ctx->N, &ctx->P, &ctx->Q ) );        CHK( mpi_sub_int( &P1, &ctx->P, 1 ) );        CHK( mpi_sub_int( &Q1, &ctx->Q, 1 ) );        CHK( mpi_mul_mpi( &H, &P1, &Q1 ) );        CHK( mpi_gcd( &G, &ctx->E, &H  ) );    }    while( mpi_cmp_int( &G, 1 ) != 0 );    /*     * D  = E^-1 mod ((P-1)*(Q-1))     * DP = D mod (P - 1)     * DQ = D mod (Q - 1)     * QP = Q^-1 mod P     */    CHK( mpi_inv_mod( &ctx->D , &ctx->E, &H  ) );    CHK( mpi_mod_mpi( &ctx->DP, &ctx->D, &P1 ) );    CHK( mpi_mod_mpi( &ctx->DQ, &ctx->D, &Q1 ) );    CHK( mpi_inv_mod( &ctx->QP, &ctx->Q, &ctx->P ) );    ctx->len = ( mpi_size( &ctx->N ) + 7 ) >> 3;cleanup:    mpi_free( &P1, &Q1, &H, &G, NULL );    if( ret != 0 )    {        rsa_free( ctx );        return( ERR_RSA_KEYGEN_FAILED | ret );    }    return( 0 );   }
开发者ID:acassis,项目名称:emlinux-ssd1935,代码行数:62,


示例19: rsa_compat_test

static int rsa_compat_test(void){   rsa_key key;   unsigned char buf[1024];   unsigned long len;   /* try reading the key */   DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key));   /* now try to export private/public and compare */   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PRIVATE, &key));   if (len != sizeof(openssl_private_rsa) || memcmp(buf, openssl_private_rsa, len)) {      fprintf(stderr, "RSA private export failed to match OpenSSL output, %lu, %lu/n", len, sizeof(openssl_private_rsa));{int x;printf("/n/n");for (x = 0; x < len; ) { if (buf[x] == openssl_private_rsa[x]) printf("-- "); else printf("%02x ", buf[x]^openssl_private_rsa[x]); if (!(++x & 15)) printf("/n"); }}printf("/n/n");      return 1;   }   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PUBLIC, &key));   if (len != sizeof(openssl_public_rsa) || memcmp(buf, openssl_public_rsa, len)) {      fprintf(stderr, "RSA(private) public export failed to match OpenSSL output/n");      return 1;   }   rsa_free(&key);   /* try reading the public key */   DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &key));   len = sizeof(buf);   DO(rsa_export(buf, &len, PK_PUBLIC, &key));   if (len != sizeof(openssl_public_rsa) || memcmp(buf, openssl_public_rsa, len)) {      fprintf(stderr, "RSA(public) public export failed to match OpenSSL output/n");      return 1;   }   rsa_free(&key);   return 0;}   
开发者ID:tch-opensrc,项目名称:TC72XX_LxG1.0.10mp5_OpenSrc,代码行数:46,


示例20: Curl_polarssl_close

void Curl_polarssl_close(struct connectdata *conn, int sockindex){  rsa_free(&conn->ssl[sockindex].rsa);  x509_free(&conn->ssl[sockindex].clicert);  x509_free(&conn->ssl[sockindex].cacert);  x509_crl_free(&conn->ssl[sockindex].crl);  ssl_free(&conn->ssl[sockindex].ssl);}
开发者ID:Web5design,项目名称:curl,代码行数:8,


示例21: rsa_gen_key

/*    Generate an RSA keypair */int rsa_gen_key(rsa_context *ctx, int nbits, int exponent){    mpi     P1, Q1, H, G;    int     ret;    if (ctx->f_rng == NULL || nbits < 128 || exponent < 3) {        return EST_ERR_RSA_BAD_INPUT_DATA;    }    mpi_init(&P1, &Q1, &H, &G, NULL);    /*        find primes P and Q with Q < P so that: GCD( E, (P-1)*(Q-1) ) == 1     */    MPI_CHK(mpi_lset(&ctx->E, exponent));    do {        MPI_CHK(mpi_gen_prime(&ctx->P, (nbits + 1) >> 1, 0, ctx->f_rng, ctx->p_rng));        MPI_CHK(mpi_gen_prime(&ctx->Q, (nbits + 1) >> 1, 0, ctx->f_rng, ctx->p_rng));        if (mpi_cmp_mpi(&ctx->P, &ctx->Q) < 0) {            mpi_swap(&ctx->P, &ctx->Q);        }        if (mpi_cmp_mpi(&ctx->P, &ctx->Q) == 0) {            continue;        }        MPI_CHK(mpi_mul_mpi(&ctx->N, &ctx->P, &ctx->Q));        if (mpi_msb(&ctx->N) != nbits) {            continue;        }        MPI_CHK(mpi_sub_int(&P1, &ctx->P, 1));        MPI_CHK(mpi_sub_int(&Q1, &ctx->Q, 1));        MPI_CHK(mpi_mul_mpi(&H, &P1, &Q1));        MPI_CHK(mpi_gcd(&G, &ctx->E, &H));    } while (mpi_cmp_int(&G, 1) != 0);    /*       D  = E^-1 mod ((P-1)*(Q-1))       DP = D mod (P - 1)       DQ = D mod (Q - 1)       QP = Q^-1 mod P     */    MPI_CHK(mpi_inv_mod(&ctx->D, &ctx->E, &H));    MPI_CHK(mpi_mod_mpi(&ctx->DP, &ctx->D, &P1));    MPI_CHK(mpi_mod_mpi(&ctx->DQ, &ctx->D, &Q1));    MPI_CHK(mpi_inv_mod(&ctx->QP, &ctx->Q, &ctx->P));    ctx->len = (mpi_msb(&ctx->N) + 7) >> 3;cleanup:    mpi_free(&G, &H, &Q1, &P1, NULL);    if (ret != 0) {        rsa_free(ctx);        return EST_ERR_RSA_KEY_GEN_FAILED | ret;    }    return 0;}
开发者ID:sunfirefox,项目名称:est,代码行数:61,


示例22: Curl_polarssl_close

static void Curl_polarssl_close(struct connectdata *conn, int sockindex){  struct ssl_connect_data *connssl = &conn->ssl[sockindex];  rsa_free(&BACKEND->rsa);  x509_crt_free(&BACKEND->clicert);  x509_crt_free(&BACKEND->cacert);  x509_crl_free(&BACKEND->crl);  ssl_free(&BACKEND->ssl);}
开发者ID:sshyran,项目名称:curl,代码行数:9,


示例23: test_rsa_encryption

int test_rsa_encryption(){    RSA *rsa_pri_key = NULL;    RSA *rsa_pub_key = NULL;    unsigned char encryDataByte[1024] = {0};    unsigned char decryDataString[1024] = {0};    unsigned int decryStringLen = 0;    /****************** create RSA Key **********************/    puts("make_keys_by_create");    make_keys_by_create(&rsa_pri_key, &rsa_pub_key);    /***********************************************************/    unsigned char msg[1024] = {0};    int i = 0;    for(i = 0; i < 11; ++i)        msg[i] = 'A' + i / 10;    /********************* encrypted msg ********************************/    printf("rsa_encryption msg %d ( rsa_len:%d)--> %s/n", strlen(msg), RSA_size(rsa_pub_key), msg);    //if( 0 != rsa_public_encryption(&rsa_pub_key, msg, strlen(msg), encryDataByte) )    if( 0 != rsa_private_encryption(&rsa_pri_key, msg, strlen(msg), encryDataByte) )    {        return -1;    }    /*********************************************************************/        /******************** decrypted msg ****************************************/    puts("rsa_decryption");    //rsa_private_decryption(&rsa_pri_key, encryDataByte, decryDataString);    rsa_public_decryption(&rsa_pub_key, encryDataByte, decryDataString);    /*************************************************************************/    printf("decryDataString --> %s/n", decryDataString);    if( rsa_pri_key )        rsa_free( rsa_pri_key );    if( rsa_pub_key )        rsa_free( rsa_pub_key );    return 0;}
开发者ID:Feather-Wang,项目名称:lib_of_wangqingsong_C,代码行数:44,


示例24: luarsa_pkcs1_decrypt

/***  Decrypts a string and removes the padding using either private or public key. * (depending on mode).*  @param ciphertext: binary string to be decrypted.*  @param key: table containing either the public or the private key, as generated by gen_key.*  @return  The original message (if everything works ok).*  @see  rsa_genkey*/static int luarsa_pkcs1_decrypt (lua_State *L) {	int res = 0;	int mode;    size_t lmsg, lresult;    rsa_context rsa;    char *message = (char*)luaL_checklstring(L, 1, &lmsg); /* ciphertext */    char result[KEY_SIZE];        rsa_init( &rsa, RSA_PKCS_V15, 0, NULL, NULL );         mode = processKey(L, 2, &rsa); /* keytable */        rsa.len = lmsg;    memset(result, 0, KEY_SIZE);    printf("/nMode==%s/n", mode==RSA_PUBLIC ? "RSA_PUBLIC" : "RSA_PRIVATE" );    printf("Size==%d/n", lmsg );    printf("Crypt.Size==%d/n", rsa.len );        printf("ver: %d/n", rsa.ver);    printf("len: %d/n", rsa.len);    printf("padding: %d/n", rsa.padding);    printf("hash_id: %d/n", rsa.hash_id);        mpi_print("N:%s/n", &rsa.N);    mpi_print("E:%s/n", &rsa.E);        if(mode!=RSA_PUBLIC) {        mpi_print("D:%s/n", &rsa.D);        mpi_print("P:%s/n", &rsa.P);        mpi_print("Q:%s/n", &rsa.Q);        mpi_print("DP:%s/n", &rsa.DP);        mpi_print("DQ:%s/n", &rsa.DQ);        mpi_print("QP:%s/n", &rsa.QP);        //mpi_print("RN:%s/n", &rsa.RN);        //mpi_print("RP:%s/n", &rsa.RP);        //mpi_print("RQ:%s/n", &rsa.RQ);    }        // pass rsa context and ciphertext to decryption engine    res = rsa_pkcs1_decrypt(&rsa, RSA_PRIVATE, &lmsg, message, result);    printf("Orig.Size==%d/n", lmsg );        if(res) {    	luaL_error(L, "Error during cipher (%d)", res);    }        // push encrypted result buffer    lua_pushlstring(L, result, lmsg); /* ciphertext */    rsa_free( &rsa );        return 1;}
开发者ID:luaforge,项目名称:luarsa,代码行数:64,


示例25: __ustream_ssl_context_free

__hidden void __ustream_ssl_context_free(struct ustream_ssl_ctx *ctx){#ifdef USE_VERSION_1_3    pk_free(&ctx->key);    x509_crt_free(&ctx->cert);#else    rsa_free(&ctx->key);    x509_free(&ctx->cert);#endif    free(ctx);}
开发者ID:asriadi,项目名称:ustream-ssl,代码行数:11,


示例26: vcrypt_generate_keys_sync

/* this updates/creates only the key file, to use the key a reconnect is needed */int vcrypt_generate_keys_sync(VCRYPT_CTX *ctx, const char* filename,		char pub_checksum[FLETCHER_SIZE_STR]){	int ret;	// TODO: this deletes the old key	FILE *f = fopen(filename, "wb");	if (f == NULL ) {		return -ERR_FILE_WRITE;	}	// we use temporary rsa storage	rsa_context rsa;	rsa_init(&rsa, ctx->ssl_req.rsa.padding, ctx->ssl_req.rsa.hash_id);	if ((ret = rsa_gen_key(&rsa, ctr_drbg_random, &ctx->ssl_req.ctr_drbg,			2048 /*4096*/, 65537)) != 0) {		return -ERR_RSA_ERROR_GENERATING_KEYS;	}	uint8_t keys[4096];	int pk_len = asn1_encode_private_key_der(keys, sizeof keys, &rsa);	if (pk_len <= 0) {		fclose(f);		rsa_free(&rsa);		return -ERR_UNKNOWN(900);	}	if (fwrite(keys, 1, pk_len, f) != pk_len) {		fclose(f);		rsa_free(&rsa);		return -ERR_FILE_WRITE;	}	rsa_get_public_key_fingerprint(&rsa, NULL, pub_checksum);	rsa_free(&rsa);	fclose(f);	return pk_len > 0 ? 0 : pk_len;}
开发者ID:vcryptfoundation,项目名称:vcrypt,代码行数:42,


示例27: verify_signature

int verify_signature(const unsigned char *signature,                     const unsigned char *pubkey,                     const unsigned char *expected_hmac){  rsa_context rsa;  init_rsa_context_with_public_key(&rsa, pubkey);  int ret = rsa_pkcs1_verify(&rsa, RSA_PUBLIC, RSA_RAW, 20,                             expected_hmac, signature);  rsa_free(&rsa);  return ret;}
开发者ID:Darma,项目名称:core-communication-lib,代码行数:12,


示例28: rsa_decrypt

intrsa_decrypt (const uint8_t *input, uint8_t *output, int msg_len,	     struct key_data *kd){  mpi P1, Q1, H;  int r;  int output_len;  DEBUG_INFO ("RSA decrypt:");  DEBUG_WORD ((uint32_t)&output_len);  mpi_init (&P1, &Q1, &H, NULL);  rsa_init (&rsa_ctx, RSA_PKCS_V15, 0);  rsa_ctx.len = msg_len;  DEBUG_WORD (msg_len);  mpi_lset (&rsa_ctx.E, 0x10001);  mpi_read_binary (&rsa_ctx.P, &kd->data[0], KEY_CONTENT_LEN / 2);  mpi_read_binary (&rsa_ctx.Q, &kd->data[KEY_CONTENT_LEN/2],		   KEY_CONTENT_LEN / 2);#if 0 /* Using CRT, we don't use N */  mpi_mul_mpi (&rsa_ctx.N, &rsa_ctx.P, &rsa_ctx.Q);#endif  mpi_sub_int (&P1, &rsa_ctx.P, 1);  mpi_sub_int (&Q1, &rsa_ctx.Q, 1);  mpi_mul_mpi (&H, &P1, &Q1);  mpi_inv_mod (&rsa_ctx.D , &rsa_ctx.E, &H);  mpi_mod_mpi (&rsa_ctx.DP, &rsa_ctx.D, &P1);  mpi_mod_mpi (&rsa_ctx.DQ, &rsa_ctx.D, &Q1);  mpi_inv_mod (&rsa_ctx.QP, &rsa_ctx.Q, &rsa_ctx.P);  mpi_free (&P1, &Q1, &H, NULL);  DEBUG_INFO ("RSA decrypt ...");  r = rsa_pkcs1_decrypt (&rsa_ctx, RSA_PRIVATE, &output_len,			 input, output, MAX_RES_APDU_DATA_SIZE);  rsa_free (&rsa_ctx);  if (r < 0)    {      DEBUG_INFO ("fail:");      DEBUG_SHORT (r);      return r;    }  else    {      res_APDU_size = output_len;      DEBUG_INFO ("done./r/n");      GPG_SUCCESS ();      return 0;    }}
开发者ID:Nitrokey,项目名称:nitrokey-start-firmware,代码行数:52,


示例29: entropy_init

uint8_t *rsa_apply(uint8_t *input, int inlen, int *outlen, int mode) {  rsa_context trsa;  const char *pers = "rsa_encrypt";  int rc;  entropy_context entropy;  ctr_drbg_context ctr_drbg;  entropy_init(&entropy);  if ((rc = ctr_drbg_init(&ctr_drbg, entropy_func, &entropy, (const unsigned char *)pers,                          strlen(pers))) != 0)    debug(1, "ctr_drbg_init returned %d/n", rc);  rsa_init(&trsa, RSA_PKCS_V21, POLARSSL_MD_SHA1); // padding and hash id get overwritten  // BTW, this seems to reset a lot of parameters in the rsa_context  rc = x509parse_key(&trsa, (unsigned char *)super_secret_key, strlen(super_secret_key), NULL, 0);  if (rc != 0)    debug(1, "Error %d reading the private key.");  uint8_t *out = NULL;  switch (mode) {  case RSA_MODE_AUTH:    trsa.padding = RSA_PKCS_V15;    trsa.hash_id = POLARSSL_MD_NONE;    debug(2, "rsa_apply encrypt");    out = malloc(trsa.len);    rc = rsa_pkcs1_encrypt(&trsa, ctr_drbg_random, &ctr_drbg, RSA_PRIVATE, inlen, input, out);    if (rc != 0)      debug(1, "rsa_pkcs1_encrypt error %d.", rc);    *outlen = trsa.len;    break;  case RSA_MODE_KEY:    debug(2, "rsa_apply decrypt");    trsa.padding = RSA_PKCS_V21;    trsa.hash_id = POLARSSL_MD_SHA1;    out = malloc(trsa.len);#if POLARSSL_VERSION_NUMBER >= 0x01020900    rc = rsa_pkcs1_decrypt(&trsa, ctr_drbg_random, &ctr_drbg, RSA_PRIVATE, (size_t *)outlen, input,                           out, trsa.len);#else    rc = rsa_pkcs1_decrypt(&trsa, RSA_PRIVATE, outlen, input, out, trsa.len);#endif    if (rc != 0)      debug(1, "decrypt error %d.", rc);    break;  default:    die("bad rsa mode");  }  rsa_free(&trsa);  debug(2, "rsa_apply exit");  return out;}
开发者ID:Havelock-Vetinari,项目名称:shairport-sync,代码行数:52,


示例30: wiced_tls_deinit_context

wiced_result_t wiced_tls_deinit_context( wiced_tls_simple_context_t* tls_context ){    /* Check if context is of an advanced variety. Note that the server and advanced client context are exactly the same */    if (tls_context->context_type == WICED_TLS_ADVANCED_CONTEXT)    {        x509_free(&((wiced_tls_advanced_context_t*)tls_context)->certificate);        rsa_free(&((wiced_tls_advanced_context_t*)tls_context)->key);    }    ssl_free( &tls_context->context);    return WICED_SUCCESS;}
开发者ID:fishbaoz,项目名称:wiced-emw3165,代码行数:13,



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


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