本文整理汇总了C++中rsa_free函数的典型用法代码示例。如果您正苦于以下问题:C++ rsa_free函数的具体用法?C++ rsa_free怎么用?C++ rsa_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rsa_free函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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,代码来源:call-rsa.c
示例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,代码来源:client_rsa.c
示例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.pl
NOTE: in some cases, the RSA signing operation will produce a signature which
is 1 or more bytes less in length than N. In these cases, it must be padded
on 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,代码来源:pss-vect.c
示例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,代码来源:screenshot.c
示例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,代码来源:rsa_set.c
示例6: rsa_verify
int
rsa_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,代码来源:call-rsa.c
示例7: rsa_test
bool
rsa_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,代码来源:rsa_test.c
示例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,代码来源:rsa.c
示例9: FinalizeAsymmetricCipher
ALWAYS_INLINE void
FinalizeAsymmetricCipher( 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,代码来源:asymmetricCipher.cpp
示例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,代码来源:SFileVerify.cpp
示例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,代码来源:luarsa.c
示例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,代码来源:23873.c
示例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,代码来源:rsa_sign.c
示例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,代码来源:spark_protocol.cpp
示例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,代码来源:connection.c
示例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,代码来源:ctr.c
示例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,代码来源:rsa_test.c
示例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,代码来源:rsa.c
示例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,代码来源:rsa_test.c
示例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,代码来源:polarssl.c
注:本文中的rsa_free函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论