当前位置: 首页>>代码示例>>C++>>正文


C++ RSA_get_ex_data函数代码示例

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


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

示例1: tpm_rsa_finish

static int tpm_rsa_finish(RSA *rsa)
{
	struct rsa_app_data *app_data = RSA_get_ex_data(rsa, ex_app_data);

	DBG("%s", __FUNCTION__);

	if (!app_data)
		return 1;

	if (app_data->hHash) {
		Tspi_Context_CloseObject(hContext, app_data->hHash);
		app_data->hHash = NULL_HHASH;
	}

	if (app_data->hKey) {
		Tspi_Context_CloseObject(hContext, app_data->hKey);
		app_data->hKey = NULL_HKEY;
	}

	if (app_data->hEncData) {
		Tspi_Context_CloseObject(hContext, app_data->hEncData);
		app_data->hEncData = NULL_HENCDATA;
	}

	OPENSSL_free(app_data);

	return 1;
}
开发者ID:tavlima,项目名称:openssl-tpm-engine,代码行数:28,代码来源:e_tpm.c

示例2: nss_cmd_evp_cert

static int
nss_cmd_evp_cert(NSS_CTX *ctx, void *p) {
    NSS_KEYCTX *keyctx = NULL;
    struct {
        EVP_PKEY *pkey;
        X509 *x509;
    } *param = p;

    switch (param->pkey->type) {
    case EVP_PKEY_RSA: {
        RSA *pkey_rsa = EVP_PKEY_get1_RSA(param->pkey);
        keyctx = RSA_get_ex_data(pkey_rsa, nss_rsa_ctx_index);
        RSA_free(pkey_rsa);
        } break;
    case EVP_PKEY_DSA: {
        DSA *pkey_dsa = EVP_PKEY_get1_DSA(param->pkey);
        keyctx = DSA_get_ex_data(pkey_dsa, nss_dsa_ctx_index);
        DSA_free(pkey_dsa);
        } break;
    default: {
        NSSerr(NSS_F_CMD_EVP_CERT, NSS_R_UNSUPPORTED_KEYTYPE);
        { /* add extra error message data */
            char msgstr[10];
            BIO_snprintf(msgstr, sizeof(msgstr), "%d", param->pkey->type);
            ERR_add_error_data(2, "KEYTYPE=", msgstr);
        }
        } break;
    }

    param->x509 = X509_from_CERTCertificate(keyctx->cert);

    return(param->x509 ? 1 : 0);
}
开发者ID:BackupTheBerlios,项目名称:enss-svn,代码行数:33,代码来源:e_nss_cmd.c

示例3: cca_rsa_priv_dec

static int cca_rsa_priv_dec(int flen, const unsigned char *from,
                            unsigned char *to, RSA *rsa, int padding)
{
    long returnCode;
    long reasonCode;
    long lflen = flen;
    long exitDataLength = 0;
    unsigned char exitData[8];
    long ruleArrayLength = 1;
    unsigned char ruleArray[8] = "PKCS-1.2";
    long dataStructureLength = 0;
    unsigned char dataStructure[8];
    long outputLength = RSA_size(rsa);
    long keyTokenLength;
    unsigned char *keyToken = (unsigned char *)RSA_get_ex_data(rsa, hndidx);

    keyTokenLength = *(long *)keyToken;
    keyToken += sizeof(long);

    pkaDecrypt(&returnCode, &reasonCode, &exitDataLength, exitData,
               &ruleArrayLength, ruleArray, &lflen, (unsigned char *)from,
               &dataStructureLength, dataStructure, &keyTokenLength,
               keyToken, &outputLength, to);

    return (returnCode | reasonCode) ? 0 : 1;
}
开发者ID:mwgoldsmith,项目名称:openssl,代码行数:26,代码来源:e_4758cca.c

示例4: surewarehk_rsa_sign

/*
* Does what OpenSSL rsa_priv_enc does.
*/
static int surewarehk_rsa_sign(int flen,const unsigned char *from,unsigned char *to,
                               RSA *rsa,int padding)
{
    int ret=0,tlen;
    char *hptr=NULL;
    char msg[64]="ENGINE_rsa_sign";
    if (!p_surewarehk_Rsa_Sign)
    {
        SUREWAREerr(SUREWARE_F_SUREWAREHK_RSA_SIGN,ENGINE_R_NOT_INITIALISED);
    }
    /* extract ref to private key */
    else if (!(hptr=(char*)RSA_get_ex_data(rsa, rsaHndidx)))
    {
        SUREWAREerr(SUREWARE_F_SUREWAREHK_RSA_SIGN,SUREWARE_R_MISSING_KEY_COMPONENTS);
    }
    else
    {
        switch (padding)
        {
        case RSA_PKCS1_PADDING: /* do it in one shot */
            ret=p_surewarehk_Rsa_Sign(msg,flen,(unsigned char *)from,&tlen,to,hptr,SUREWARE_PKCS1_PAD);
            surewarehk_error_handling(msg,SUREWARE_F_SUREWAREHK_RSA_SIGN,ret);
            break;
        case RSA_NO_PADDING:
        default:
            SUREWAREerr(SUREWARE_F_SUREWAREHK_RSA_SIGN,SUREWARE_R_UNKNOWN_PADDING_TYPE);
        }
    }
    return ret==1 ? tlen : ret;
}
开发者ID:koson,项目名称:.NETMF_for_LPC17xx,代码行数:33,代码来源:e_sureware.cpp

示例5: capi_rsa_free

static int capi_rsa_free(RSA *rsa)
	{
	CAPI_KEY *capi_key;
	capi_key = RSA_get_ex_data(rsa, rsa_capi_idx);
	capi_free_key(capi_key);
	RSA_set_ex_data(rsa, rsa_capi_idx, 0);
	return 1;
	}
开发者ID:Groestlcoin,项目名称:foreign,代码行数:8,代码来源:e_capi.c

示例6: keystore_rsa_priv_enc

int keystore_rsa_priv_enc(int flen, const unsigned char* from, unsigned char* to, RSA* rsa,
        int padding) {
    ALOGV("keystore_rsa_sign(%d, %p, %p, %p, %d)", flen, from, to, rsa, padding);

    int num = RSA_size(rsa);
    UniquePtr<uint8_t> padded(new uint8_t[num]);
    if (padded.get() == NULL) {
        ALOGE("could not allocate padded signature");
        return 0;
    }

    switch (padding) {
    case RSA_PKCS1_PADDING:
        if (!RSA_padding_add_PKCS1_type_1(padded.get(), num, from, flen)) {
            return 0;
        }
        break;
    case RSA_X931_PADDING:
        if (!RSA_padding_add_X931(padded.get(), num, from, flen)) {
            return 0;
        }
        break;
    case RSA_NO_PADDING:
        if (!RSA_padding_add_none(padded.get(), num, from, flen)) {
            return 0;
        }
        break;
    default:
        ALOGE("Unknown padding type: %d", padding);
        return 0;
    }

    uint8_t* key_id = reinterpret_cast<uint8_t*>(RSA_get_ex_data(rsa, rsa_key_handle));
    if (key_id == NULL) {
        ALOGE("key had no key_id!");
        return 0;
    }

    Keystore_Reply reply;
    if (keystore_cmd(CommandCodes[SIGN], &reply, 2, strlen(reinterpret_cast<const char*>(key_id)),
            key_id, static_cast<size_t>(num), reinterpret_cast<const uint8_t*>(padded.get()))
            != NO_ERROR) {
        ALOGE("There was an error during rsa_mod_exp");
        return 0;
    }

    const size_t replyLen = reply.length();
    if (replyLen <= 0) {
        ALOGW("No valid signature returned");
        return 0;
    }

    memcpy(to, reply.get(), replyLen);

    ALOGV("rsa=%p keystore_rsa_sign => returning %p len %llu", rsa, to,
            (unsigned long long) replyLen);
    return static_cast<int>(replyLen);
}
开发者ID:TeamNyx,项目名称:system_security,代码行数:58,代码来源:eng_keystore.cpp

示例7: rsae_priv_dec

static int
rsae_priv_dec(int flen, const u_char *from, u_char *to, RSA *rsa, int padding)
{
	log_debug("debug: %s: %s", proc_name(smtpd_process), __func__);
	if (RSA_get_ex_data(rsa, 0) != NULL) {
		return (rsae_send_imsg(flen, from, to, rsa, padding,
		    IMSG_CA_PRIVDEC));
	}
	return (rsa_default->rsa_priv_dec(flen, from, to, rsa, padding));
}
开发者ID:nmandery,项目名称:deb-opensmtpd,代码行数:10,代码来源:ca.c

示例8: get_privsep_data

static void get_privsep_data(const RSA *rsa, struct st_neverbleed_rsa_exdata_t **exdata,
                             struct st_neverbleed_thread_data_t **thdata)
{
    *exdata = RSA_get_ex_data(rsa, 0);
    if (*exdata == NULL) {
        errno = 0;
        dief("invalid internal ref");
    }
    *thdata = get_thread_data((*exdata)->nb);
}
开发者ID:johnjohnsp1,项目名称:neverbleed,代码行数:10,代码来源:neverbleed.c

示例9: tpm_rsa_finish

static int tpm_rsa_finish(RSA *rsa)
{
	struct rsa_app_data *app_data = RSA_get_ex_data(rsa, ex_app_data);

	DBG("%s", __FUNCTION__);

	OPENSSL_free(app_data);

	return 1;
}
开发者ID:ThomasHabets,项目名称:openssl-tpm-engine,代码行数:10,代码来源:e_tpm.c

示例10: RSA_get_ex_data

static E_GMP_RSA_CTX *e_gmp_get_rsa(RSA *rsa)
{
    E_GMP_RSA_CTX *hptr = RSA_get_ex_data(rsa, hndidx_rsa);

    if (hptr)
        return hptr;
    hptr = OPENSSL_malloc(sizeof(*hptr));
    if (!hptr)
        return NULL;
    /*
     * These inits could probably be replaced by more intelligent mpz_init2()
     * versions, to reduce malloc-thrashing.
     */
    mpz_init(hptr->n);
    mpz_init(hptr->d);
    mpz_init(hptr->e);
    mpz_init(hptr->p);
    mpz_init(hptr->q);
    mpz_init(hptr->dmp1);
    mpz_init(hptr->dmq1);
    mpz_init(hptr->iqmp);
    mpz_init(hptr->r0);
    mpz_init(hptr->r1);
    mpz_init(hptr->I0);
    mpz_init(hptr->m1);
    if (!bn2gmp(rsa->n, hptr->n) || !bn2gmp(rsa->e, hptr->e))
        goto err;
    if (!rsa->p || !rsa->q || !rsa->d || !rsa->dmp1 || !rsa->dmq1
        || !rsa->iqmp) {
        hptr->public_only = 1;
        return hptr;
    }
    if (!bn2gmp(rsa->d, hptr->d) || !bn2gmp(rsa->p, hptr->p) ||
        !bn2gmp(rsa->q, hptr->q) || !bn2gmp(rsa->dmp1, hptr->dmp1) ||
        !bn2gmp(rsa->dmq1, hptr->dmq1) || !bn2gmp(rsa->iqmp, hptr->iqmp))
        goto err;
    hptr->public_only = 0;
    RSA_set_ex_data(rsa, hndidx_rsa, hptr);
    return hptr;
 err:
    mpz_clear(hptr->n);
    mpz_clear(hptr->d);
    mpz_clear(hptr->e);
    mpz_clear(hptr->p);
    mpz_clear(hptr->q);
    mpz_clear(hptr->dmp1);
    mpz_clear(hptr->dmq1);
    mpz_clear(hptr->iqmp);
    mpz_clear(hptr->r0);
    mpz_clear(hptr->r1);
    mpz_clear(hptr->I0);
    mpz_clear(hptr->m1);
    OPENSSL_free(hptr);
    return NULL;
}
开发者ID:375670450,项目名称:openssl,代码行数:55,代码来源:e_gmp.c

示例11: pkcs11_rsa_priv_enc_method

static int pkcs11_rsa_priv_enc_method(int flen, const unsigned char *from,
		unsigned char *to, RSA *rsa, int padding)
{
	PKCS11_KEY *key = RSA_get_ex_data(rsa, rsa_ex_index);
	int (*priv_enc) (int flen, const unsigned char *from,
		unsigned char *to, RSA *rsa, int padding);
	if (key == NULL) {
		priv_enc = RSA_meth_get_priv_enc(RSA_get_default_method());
		return priv_enc(flen, from, to, rsa, padding);
	}
	return PKCS11_private_encrypt(flen, from, to, key, padding);
}
开发者ID:nmav,项目名称:libp11,代码行数:12,代码来源:p11_rsa.c

示例12: hwcrhk_rsa_finish

static int hwcrhk_rsa_finish(RSA *rsa)
{
    HWCryptoHook_RSAKeyHandle *hptr;

    hptr = RSA_get_ex_data(rsa, hndidx_rsa);
    if (hptr) {
        p_hwcrhk_RSAUnloadKey(*hptr, NULL);
        OPENSSL_free(hptr);
        RSA_set_ex_data(rsa, hndidx_rsa, NULL);
    }
    return 1;
}
开发者ID:dlabs,项目名称:openssl,代码行数:12,代码来源:e_chil.c

示例13: capi_rsa_priv_dec

int capi_rsa_priv_dec(int flen, const unsigned char *from,
                unsigned char *to, RSA *rsa, int padding)
	{
	int i;
	unsigned char *tmpbuf;
	CAPI_KEY *capi_key;
	CAPI_CTX *ctx;
	ctx = ENGINE_get_ex_data(rsa->engine, capi_idx);

	CAPI_trace(ctx, "Called capi_rsa_priv_dec()\n");


	capi_key = RSA_get_ex_data(rsa, rsa_capi_idx);
	if (!capi_key)
		{
		CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_CANT_GET_KEY);
		return -1;
		}

	if(padding != RSA_PKCS1_PADDING)
		{
		char errstr[10];
		BIO_snprintf(errstr, 10, "%d", padding);
		CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_UNSUPPORTED_PADDING);
		ERR_add_error_data(2, "padding=", errstr);
		return -1;
		}

	/* Create temp reverse order version of input */
	if(!(tmpbuf = OPENSSL_malloc(flen)) ) 
		{
		CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, ERR_R_MALLOC_FAILURE);
		return -1;
		}
	for(i = 0; i < flen; i++)
		tmpbuf[flen - i - 1] = from[i];
	
	/* Finally decrypt it */
	if(!CryptDecrypt(capi_key->key, 0, TRUE, 0, tmpbuf, &flen))
		{
		CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_DECRYPT_ERROR);
		capi_addlasterror();
		OPENSSL_free(tmpbuf);
		return -1;
		} 
	else memcpy(to, tmpbuf, flen);

	OPENSSL_free(tmpbuf);

	return flen;
	}
开发者ID:Groestlcoin,项目名称:foreign,代码行数:51,代码来源:e_capi.c

示例14: __pkcs11h_openssl_rsa_get_pkcs11h_certificate

static
pkcs11h_certificate_t
__pkcs11h_openssl_rsa_get_pkcs11h_certificate (
	IN RSA *rsa
) {
	pkcs11h_openssl_session_t session = NULL;

	_PKCS11H_ASSERT (rsa!=NULL);

	session = (pkcs11h_openssl_session_t)RSA_get_ex_data (rsa, __openssl_methods.rsa_index);

	_PKCS11H_ASSERT (session!=NULL);
	_PKCS11H_ASSERT (session->certificate!=NULL);

	return session->certificate;
}
开发者ID:zedinosaur,项目名称:pkcs11-helper,代码行数:16,代码来源:pkcs11h-openssl.c

示例15: e_gmp_rsa_finish

static int e_gmp_rsa_finish(RSA *rsa)
	{
	E_GMP_RSA_CTX *hptr = RSA_get_ex_data(rsa, hndidx_rsa);
	if(!hptr) return 0;
	mpz_clear(hptr->n);
	mpz_clear(hptr->d);
	mpz_clear(hptr->e);
	mpz_clear(hptr->p);
	mpz_clear(hptr->q);
	mpz_clear(hptr->dmp1);
	mpz_clear(hptr->dmq1);
	mpz_clear(hptr->iqmp);
	mpz_clear(hptr->r0);
	mpz_clear(hptr->r1);
	mpz_clear(hptr->I0);
	mpz_clear(hptr->m1);
	OPENSSL_free(hptr);
	RSA_set_ex_data(rsa, hndidx_rsa, NULL);
	return 1;
	}
开发者ID:Wampamba-Nooh,项目名称:MicroFrameworkSDK-Mono,代码行数:20,代码来源:e_gmp.cpp


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