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

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

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

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

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

示例1: ssl_DestroySID

/* BEWARE: This function gets called for both client and server SIDs !! * If the unreferenced sid is not in the cache, Free sid and its contents. */static voidssl_DestroySID(sslSessionID *sid){    SSL_TRC(8, ("SSL: destroy sid: sid=0x%x cached=%d", sid, sid->cached));    PORT_Assert((sid->references == 0));    if (sid->cached == in_client_cache)    	return;	/* it will get taken care of next time cache is traversed. */    if (sid->version < SSL_LIBRARY_VERSION_3_0) {	SECITEM_ZfreeItem(&sid->u.ssl2.masterKey, PR_FALSE);	SECITEM_ZfreeItem(&sid->u.ssl2.cipherArg, PR_FALSE);    }    if (sid->peerID != NULL)	PORT_Free((void *)sid->peerID);		/* CONST */    if (sid->urlSvrName != NULL)	PORT_Free((void *)sid->urlSvrName);	/* CONST */    if ( sid->peerCert ) {	CERT_DestroyCertificate(sid->peerCert);    }    if ( sid->localCert ) {	CERT_DestroyCertificate(sid->localCert);    }    if (sid->u.ssl3.sessionTicket.ticket.data) {	SECITEM_FreeItem(&sid->u.ssl3.sessionTicket.ticket, PR_FALSE);    }        PORT_ZFree(sid, sizeof(sslSessionID));}
开发者ID:binoc-software,项目名称:mozilla-cvs,代码行数:34,


示例2: CMMF_DestroyCertRepContent

SECStatusCMMF_DestroyCertRepContent(CMMFCertRepContent *inCertRepContent){    PORT_Assert(inCertRepContent != NULL);    if (inCertRepContent != NULL) {        CMMFCertResponse **pResponse = inCertRepContent->response;        if (pResponse != NULL) {            for (; *pResponse != NULL; pResponse++) {                CMMFCertifiedKeyPair *certKeyPair = (*pResponse)->certifiedKeyPair;                /* XXX Why not call CMMF_DestroyCertifiedKeyPair or                 ** XXX cmmf_DestroyCertOrEncCert ?                 */                if (certKeyPair != NULL &&                    certKeyPair->certOrEncCert.choice == cmmfCertificate &&                    certKeyPair->certOrEncCert.cert.certificate != NULL) {                    CERT_DestroyCertificate(certKeyPair->certOrEncCert.cert.certificate);                    certKeyPair->certOrEncCert.cert.certificate = NULL;                }            }        }        if (inCertRepContent->caPubs) {            CERTCertificate **caPubs = inCertRepContent->caPubs;            for (; *caPubs; ++caPubs) {                CERT_DestroyCertificate(*caPubs);                *caPubs = NULL;            }        }        if (inCertRepContent->poolp != NULL) {            PORT_FreeArena(inCertRepContent->poolp, PR_TRUE);        }    }    return SECSuccess;}
开发者ID:MekliCZ,项目名称:positron,代码行数:33,


示例3: check_issuer_cert

/** * * Check that the Peer certificate's issuer certificate matches the one found * by issuer_nickname.  This is not exactly the way OpenSSL and GNU TLS do the * issuer check, so we provide comments that mimic the OpenSSL * X509_check_issued function (in x509v3/v3_purp.c) */static SECStatus check_issuer_cert(PRFileDesc *sock,                                   char *issuer_nickname){  CERTCertificate *cert,*cert_issuer,*issuer;  SECStatus res=SECSuccess;  void *proto_win = NULL;  /*    PRArenaPool   *tmpArena = NULL;    CERTAuthKeyID *authorityKeyID = NULL;    SECITEM       *caname = NULL;  */  cert = SSL_PeerCertificate(sock);  cert_issuer = CERT_FindCertIssuer(cert,PR_Now(),certUsageObjectSigner);  proto_win = SSL_RevealPinArg(sock);  issuer = PK11_FindCertFromNickname(issuer_nickname, proto_win);  if((!cert_issuer) || (!issuer))    res = SECFailure;  else if(SECITEM_CompareItem(&cert_issuer->derCert,                              &issuer->derCert)!=SECEqual)    res = SECFailure;  CERT_DestroyCertificate(cert);  CERT_DestroyCertificate(issuer);  CERT_DestroyCertificate(cert_issuer);  return res;}
开发者ID:3s3s,项目名称:simple_server,代码行数:37,


示例4: ssl_ResetSecurityInfo

/* Reset sec back to its initial state.** Caller holds any relevant locks.*/voidssl_ResetSecurityInfo(sslSecurityInfo *sec, PRBool doMemset){    if (sec->localCert) {        CERT_DestroyCertificate(sec->localCert);        sec->localCert = NULL;    }    if (sec->peerCert) {        CERT_DestroyCertificate(sec->peerCert);        sec->peerCert = NULL;    }    if (sec->peerKey) {        SECKEY_DestroyPublicKey(sec->peerKey);        sec->peerKey = NULL;    }    /* cleanup the ci */    if (sec->ci.sid != NULL) {        ssl_FreeSID(sec->ci.sid);    }    PORT_ZFree(sec->ci.sendBuf.buf, sec->ci.sendBuf.space);    if (doMemset) {        memset(&sec->ci, 0, sizeof sec->ci);    }}
开发者ID:MekliCZ,项目名称:positron,代码行数:28,


示例5: ssl_DestroySID

/* BEWARE: This function gets called for both client and server SIDs !! * If the unreferenced sid is not in the cache, Free sid and its contents. */static voidssl_DestroySID(sslSessionID *sid){    int i;    SSL_TRC(8, ("SSL: destroy sid: sid=0x%x cached=%d", sid, sid->cached));    PORT_Assert(sid->references == 0);    PORT_Assert(sid->cached != in_client_cache);    if (sid->version < SSL_LIBRARY_VERSION_3_0) {        SECITEM_ZfreeItem(&sid->u.ssl2.masterKey, PR_FALSE);        SECITEM_ZfreeItem(&sid->u.ssl2.cipherArg, PR_FALSE);    } else {        if (sid->u.ssl3.locked.sessionTicket.ticket.data) {            SECITEM_FreeItem(&sid->u.ssl3.locked.sessionTicket.ticket,                             PR_FALSE);        }        if (sid->u.ssl3.srvName.data) {            SECITEM_FreeItem(&sid->u.ssl3.srvName, PR_FALSE);        }        if (sid->u.ssl3.originalHandshakeHash.data) {            SECITEM_FreeItem(&sid->u.ssl3.originalHandshakeHash, PR_FALSE);        }        if (sid->u.ssl3.signedCertTimestamps.data) {            SECITEM_FreeItem(&sid->u.ssl3.signedCertTimestamps, PR_FALSE);        }        if (sid->u.ssl3.lock) {            NSSRWLock_Destroy(sid->u.ssl3.lock);        }    }    if (sid->peerID != NULL)        PORT_Free((void *)sid->peerID);		/* CONST */    if (sid->urlSvrName != NULL)        PORT_Free((void *)sid->urlSvrName);	/* CONST */    if ( sid->peerCert ) {        CERT_DestroyCertificate(sid->peerCert);    }    for (i = 0; i < MAX_PEER_CERT_CHAIN_SIZE && sid->peerCertChain[i]; i++) {        CERT_DestroyCertificate(sid->peerCertChain[i]);    }    if (sid->peerCertStatus.items) {        SECITEM_FreeArray(&sid->peerCertStatus, PR_FALSE);    }    if ( sid->localCert ) {        CERT_DestroyCertificate(sid->localCert);    }    PORT_ZFree(sid, sizeof(sslSessionID));}
开发者ID:howardroark2018,项目名称:chromium,代码行数:56,


示例6: ssl_ResetSecurityInfo

/* Reset sec back to its initial state.** Caller holds any relevant locks.*/void ssl_ResetSecurityInfo(sslSecurityInfo *sec, PRBool doMemset){    /* Destroy MAC */    if (sec->hash && sec->hashcx) {	(*sec->hash->destroy)(sec->hashcx, PR_TRUE);	sec->hashcx = NULL;	sec->hash = NULL;    }    SECITEM_ZfreeItem(&sec->sendSecret, PR_FALSE);    SECITEM_ZfreeItem(&sec->rcvSecret, PR_FALSE);    /* Destroy ciphers */    if (sec->destroy) {	(*sec->destroy)(sec->readcx, PR_TRUE);	(*sec->destroy)(sec->writecx, PR_TRUE);	sec->readcx = NULL;	sec->writecx = NULL;    } else {	PORT_Assert(sec->readcx == 0);	PORT_Assert(sec->writecx == 0);    }    sec->readcx = 0;    sec->writecx = 0;    if (sec->localCert) {	CERT_DestroyCertificate(sec->localCert);	sec->localCert = NULL;    }    if (sec->peerCert) {	CERT_DestroyCertificate(sec->peerCert);	sec->peerCert = NULL;    }    if (sec->peerKey) {	SECKEY_DestroyPublicKey(sec->peerKey);	sec->peerKey = NULL;    }    /* cleanup the ci */    if (sec->ci.sid != NULL) {	ssl_FreeSID(sec->ci.sid);    }    PORT_ZFree(sec->ci.sendBuf.buf, sec->ci.sendBuf.space);    if (doMemset) {        memset(&sec->ci, 0, sizeof sec->ci);    }    }
开发者ID:Metrological,项目名称:chromium,代码行数:51,


示例7: FindSigningCert

static CERTCertificate *FindSigningCert(CERTCertDBHandle *certHandle, CERTSignedCrl *signCrl,                char *certNickName){    CERTCertificate *cert = NULL, *certTemp = NULL;    SECStatus rv = SECFailure;    CERTAuthKeyID *authorityKeyID = NULL;    SECItem *subject = NULL;    PORT_Assert(certHandle != NULL);    if (!certHandle || (!signCrl && !certNickName)) {        SECU_PrintError(progName, "invalid args for function "                                  "FindSigningCert /n");        return NULL;    }    if (signCrl) {#if 0        authorityKeyID = SECU_FindCRLAuthKeyIDExten(tmpArena, scrl);#endif        subject = &signCrl->crl.derName;    } else {        certTemp = CERT_FindCertByNickname(certHandle, certNickName);        if (!certTemp) {            SECU_PrintError(progName, "could not find certificate /"%s/" "                                      "in database",                            certNickName);            goto loser;        }        subject = &certTemp->derSubject;    }    cert = SECU_FindCrlIssuer(certHandle, subject, authorityKeyID, PR_Now());    if (!cert) {        SECU_PrintError(progName, "could not find signing certificate "                                  "in database");        goto loser;    } else {        rv = SECSuccess;    }loser:    if (certTemp)        CERT_DestroyCertificate(certTemp);    if (cert && rv != SECSuccess)        CERT_DestroyCertificate(cert);    return cert;}
开发者ID:ekr,项目名称:nss,代码行数:48,


示例8: nss_bad_cert_cb

static SECStatus nss_bad_cert_cb(void *arg, PRFileDesc *fd) {    struct tls_connection *conn = arg;    SECStatus res = SECSuccess;    PRErrorCode err;    CERTCertificate *cert;    char *subject, *issuer;    err = PR_GetError();    if (IS_SEC_ERROR(err))        wpa_printf(MSG_DEBUG, "NSS: Bad Server Certificate (sec err "            "%d)", err - SEC_ERROR_BASE);    else        wpa_printf(MSG_DEBUG, "NSS: Bad Server Certificate (err %d)",            err);    cert = SSL_PeerCertificate(fd);    subject = CERT_NameToAscii(&cert->subject);    issuer = CERT_NameToAscii(&cert->issuer);    wpa_printf(MSG_DEBUG, "NSS: Peer certificate subject='%s' issuer='%s'",            subject, issuer);    CERT_DestroyCertificate(cert);    PR_Free(subject);    PR_Free(issuer);    if (conn->verify_peer)        res = SECFailure;    return res;}
开发者ID:vk496,项目名称:reaver-wps-fork-t6x,代码行数:27,


示例9: MOZ_MTLOG

SECStatus TransportLayerDtls::GetClientAuthDataHook(void *arg, PRFileDesc *fd,                                                    CERTDistNames *caNames,                                                    CERTCertificate **pRetCert,                                                    SECKEYPrivateKey **pRetKey) {  MOZ_MTLOG(ML_DEBUG, "Server requested client auth");  TransportLayerDtls *stream = reinterpret_cast<TransportLayerDtls *>(arg);  stream->CheckThread();  if (!stream->identity_) {    MOZ_MTLOG(ML_ERROR, "No identity available");    PR_SetError(SSL_ERROR_NO_CERTIFICATE, 0);    return SECFailure;  }  *pRetCert = CERT_DupCertificate(stream->identity_->cert());  if (!*pRetCert) {    PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);    return SECFailure;  }  *pRetKey = SECKEY_CopyPrivateKey(stream->identity_->privkey());  if (!*pRetKey) {    CERT_DestroyCertificate(*pRetCert);    *pRetCert = nullptr;    PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);    return SECFailure;  }  return SECSuccess;}
开发者ID:ashishrana7,项目名称:firefox,代码行数:31,


示例10: nss_check_host

/* * Host name checking according to RFC 2595. */static enum okaynss_check_host(const char *server, struct sock *sp){	CERTCertificate	*cert;	char	*cn = NULL;	enum okay	ok = STOP;	PRArenaPool	*arena;	CERTGeneralName	*gn;	SECItem	altname;	CERTAltNameEncodedContext	ec;	int	i;	const SEC_ASN1Template	gntempl[] = {		{ SEC_ASN1_SEQUENCE_OF, 0, SEC_AnyTemplate }	};	if ((cert = SSL_PeerCertificate(sp->s_prfd)) == NULL) {		fprintf(stderr, "no certificate from /"%s/"/n", server);		return STOP;	}	arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);	if (CERT_FindCertExtension(cert, SEC_OID_X509_SUBJECT_ALT_NAME,				&altname) == SECSuccess &&			SEC_ASN1DecodeItem(arena, &ec, gntempl,				&altname) == SECSuccess &&			ec.encodedGenName != NULL) {		for (i = 0; ec.encodedGenName[i] != NULL; i++) {			gn = CERT_DecodeGeneralName(arena, ec.encodedGenName[i],					NULL);			if (gn->type == certDNSName) {				char	*dn = ac_alloc(gn->name.other.len + 1);				memcpy(dn, gn->name.other.data,						gn->name.other.len);				dn[gn->name.other.len] = '/0';				if (verbose)					fprintf(stderr,						"Comparing DNS name: /"%s/"/n",						dn);				if (rfc2595_hostname_match(server, dn)						== OKAY) {					ac_free(dn);					goto out;				}				ac_free(dn);			}		}	}	if ((cn = CERT_GetCommonName(&cert->subject)) != NULL) {		if (verbose)			fprintf(stderr, "Comparing common name: /"%s/"/n", cn);		ok = rfc2595_hostname_match(server, cn);	}	if (ok == STOP)		fprintf(stderr, "host certificate does not match /"%s/"/n",				server);out:	if (cn)		PORT_Free(cn);	PORT_FreeArena(arena, PR_FALSE);	CERT_DestroyCertificate(cert);	return ok;}
开发者ID:Babar,项目名称:check_multi,代码行数:63,


示例11: NSS_LoadPublicKey

/** * Loads the public key for the specified cert name from the NSS store. * * @param certData  The DER-encoded X509 certificate to extract the key from. * @param certDataSize The size of certData. * @param publicKey Out parameter for the public key to use. * @return CryptoX_Success on success, CryptoX_Error on error.*/CryptoX_ResultNSS_LoadPublicKey(const unsigned char *certData, unsigned int certDataSize,                  SECKEYPublicKey **publicKey){  CERTCertificate * cert;  SECItem certDataItem = { siBuffer, (unsigned char*) certData, certDataSize };  if (!certData || !publicKey) {    return CryptoX_Error;  }  cert = CERT_NewTempCertificate(CERT_GetDefaultCertDB(), &certDataItem, NULL,                                 PR_FALSE, PR_TRUE);  /* Get the cert and embedded public key out of the database */  if (!cert) {    return CryptoX_Error;  }  *publicKey = CERT_ExtractPublicKey(cert);  CERT_DestroyCertificate(cert);  if (!*publicKey) {    return CryptoX_Error;  }  return CryptoX_Success;}
开发者ID:CloCkWeRX,项目名称:core,代码行数:33,


示例12: nss_get_cert

static X509*nss_get_cert(NSS_CTX *ctx, const char *s) {    X509 *x509 = NULL;    CERTCertificate *cert = NULL;    CALL_TRACE("nss_get_cert.../n");    if (ctx == NULL) {        NSSerr(NSS_F_GET_CERT, NSS_R_INVALID_ARGUMENT);        goto done;    }    if (!NSS_IsInitialized()) {        NSSerr(NSS_F_GET_CERT, NSS_R_DB_IS_NOT_INITIALIZED);        goto done;    }    nss_debug(ctx, "search certificate '%s'", s);    cert = PK11_FindCertFromNickname(s, NULL);    nss_trace(ctx, "found certificate mem='%p'", cert);    if (cert == NULL) goto done;    x509 = X509_from_CERTCertificate(cert);done:    if (cert) CERT_DestroyCertificate(cert);    nss_debug(ctx, "certificate %s", (x509 ? "found": "not found"));    return(x509);}
开发者ID:BackupTheBerlios,项目名称:enss-svn,代码行数:30,


示例13: ssl_PopulateServerCert

static SECStatusssl_PopulateServerCert(sslServerCert *sc, CERTCertificate *cert,                       const CERTCertificateList *certChain){    if (sc->serverCert) {        CERT_DestroyCertificate(sc->serverCert);    }    if (sc->serverCertChain) {        CERT_DestroyCertificateList(sc->serverCertChain);    }    if (!cert) {        sc->serverCert = NULL;        sc->serverCertChain = NULL;        return SECSuccess;    }    sc->serverCert = CERT_DupCertificate(cert);    if (certChain) {        sc->serverCertChain = CERT_DupCertList(certChain);    } else {        sc->serverCertChain =            CERT_CertChainFromCert(sc->serverCert, certUsageSSLServer,                                   PR_TRUE);    }    return sc->serverCertChain ? SECSuccess : SECFailure;}
开发者ID:lazyparser,项目名称:gecko-dev,代码行数:27,


示例14: SecCmsSignerInfoDestroy

/* * SecCmsSignerInfoDestroy - destroy a SignerInfo data structure */voidSecCmsSignerInfoDestroy(SecCmsSignerInfoRef si){    if (si->cert != NULL) {	dprintfRC("SecCmsSignerInfoDestroy top: certp %p cert.rc %d/n",	    si->cert, (int)CFGetRetainCount(si->cert));	CERT_DestroyCertificate(si->cert);    }    if (si->certList != NULL) {	dprintfRC("SecCmsSignerInfoDestroy top: certList.rc %d/n",	    (int)CFGetRetainCount(si->certList));	CFRelease(si->certList);    }    if (si->timestampCertList != NULL) {	dprintfRC("SecCmsSignerInfoDestroy top: timestampCertList.rc %d/n",	    (int)CFGetRetainCount(si->timestampCertList));	CFRelease(si->timestampCertList);    }    if (si->hashAgilityAttrValue != NULL) {        dprintfRC("SecCmsSignerInfoDestroy top: hashAgilityAttrValue.rc %d/n",                  (int)CFGetRetainCount(si->hashAgilityAttrValue));        CFRelease(si->hashAgilityAttrValue);    }    /* XXX storage ??? */}
开发者ID:darlinghq,项目名称:darling-security,代码行数:28,


示例15: mySSLAuthCertificate

/* This invokes the "default" AuthCert handler in libssl.** The only reason to use this one is that it prints out info as it goes. */static SECStatusmySSLAuthCertificate(void *arg, PRFileDesc *fd, PRBool checkSig,		     PRBool isServer){    SECStatus rv;    CERTCertificate *    peerCert;    const SECItemArray *csa;    if (MakeCertOK>=2) {        return SECSuccess;    }    peerCert = SSL_PeerCertificate(fd);    PRINTF("strsclnt: Subject: %s/nstrsclnt: Issuer : %s/n",            peerCert->subjectName, peerCert->issuerName);     csa = SSL_PeerStapledOCSPResponses(fd);    if (csa) {        PRINTF("Received %d Cert Status items (OCSP stapled data)/n",               csa->len);    }    /* invoke the "default" AuthCert handler. */    rv = SSL_AuthCertificate(arg, fd, checkSig, isServer);    PR_ATOMIC_INCREMENT(&certsTested);    if (rv == SECSuccess) {	fputs("strsclnt: -- SSL: Server Certificate Validated./n", stderr);    }    CERT_DestroyCertificate(peerCert);    /* error, if any, will be displayed by the Bad Cert Handler. */    return rv;  }
开发者ID:abhishekvp,项目名称:gecko-dev,代码行数:34,


示例16: NSS_CMSSignedData_VerifyCertsOnly

/* * NSS_CMSSignedData_VerifyCertsOnly - verify the certs in a certs-only message */SECStatusNSS_CMSSignedData_VerifyCertsOnly(NSSCMSSignedData *sigd,                                  CERTCertDBHandle *certdb,                                  SECCertUsage usage){    CERTCertificate *cert;    SECStatus rv = SECSuccess;    int i;    int count;    PRTime now;    if (!sigd || !certdb || !sigd->rawCerts) {        PORT_SetError(SEC_ERROR_INVALID_ARGS);        return SECFailure;    }    count = NSS_CMSArray_Count((void**)sigd->rawCerts);    now = PR_Now();    for (i=0; i < count; i++) {        if (sigd->certs && sigd->certs[i]) {            cert = CERT_DupCertificate(sigd->certs[i]);        } else {            cert = CERT_FindCertByDERCert(certdb, sigd->rawCerts[i]);            if (!cert) {                rv = SECFailure;                break;            }        }        rv |= CERT_VerifyCert(certdb, cert, PR_TRUE, usage, now,                              NULL, NULL);        CERT_DestroyCertificate(cert);    }    return rv;}
开发者ID:rhencke,项目名称:mozilla-cvs-history,代码行数:38,


示例17: sxi_vcrypt_print_cert_info

int sxi_vcrypt_print_cert_info(sxc_client_t *sx, const char *file, int batch_mode){    struct PK11_ctx ctx;    CERTCertificate *cert = load_cert_file(sx, file, &ctx);    if(!cert) {        free_PK11_ctx(&ctx);        return -1;    }    if (cert && !batch_mode) {        char *subject = CERT_NameToAscii(&cert->subject);        char *issuer = CERT_NameToAscii(&cert->issuer);        char *common_name = CERT_GetCommonName(&cert->subject);        struct sxi_fmt fmt;        char hash[SXI_SHA1_TEXT_LEN+1];        sxi_fmt_start(&fmt);        sxi_fmt_msg(&fmt, "/tSubject: %s/n", subject);        sxi_fmt_msg(&fmt, "/tIssuer: %s/n", issuer);        if (!sxi_conns_hashcalc_core(sx, NULL, 0,                                     cert->derCert.data,                                     cert->derCert.len, hash)) {            sxi_fmt_msg(&fmt, "/tSHA1 Fingerprint: %s/n", hash);        }        sxi_info(sx, "%s", fmt.buf);        PR_Free(subject);        PR_Free(issuer);        PR_Free(common_name);    }    CERT_DestroyCertificate(cert);    free_PK11_ctx(&ctx);    return 0;}
开发者ID:flashfoxter,项目名称:sx,代码行数:35,


示例18: trust_prompt_free_certificate

static voidtrust_prompt_free_certificate (gpointer cert){	if (!cert)		return;	CERT_DestroyCertificate (cert);}
开发者ID:jdapena,项目名称:evolution-data-server,代码行数:8,


示例19: add_to_subject_list

static voidadd_to_subject_list(CERTCertList *certList, CERTCertificate *cert,                    PRBool validOnly, PRTime sorttime){    SECStatus secrv;    if (!validOnly ||        CERT_CheckCertValidTimes(cert, sorttime, PR_FALSE) ==            secCertTimeValid) {        secrv = CERT_AddCertToListSorted(certList, cert, CERT_SortCBValidity,                                         (void *)&sorttime);        if (secrv != SECSuccess) {            CERT_DestroyCertificate(cert);        }    } else {        CERT_DestroyCertificate(cert);    }}
开发者ID:MekliCZ,项目名称:positron,代码行数:17,


示例20: __pkcs11h_crypto_nss_certificate_is_issuer

staticint__pkcs11h_crypto_nss_certificate_is_issuer (	IN void * const global_data,	IN const unsigned char * const issuer_blob,	IN const size_t issuer_blob_size,	IN const unsigned char * const cert_blob,	IN const size_t cert_blob_size) {	PKCS11H_BOOL is_issuer = FALSE;	CERTCertificate *cert = NULL;	CERTCertificate *issuer = NULL;	(void)global_data;	/*_PKCS11H_ASSERT (global_data!=NULL); NOT NEEDED*/	_PKCS11H_ASSERT (issuer_blob!=NULL);	_PKCS11H_ASSERT (cert_blob!=NULL);	if ((issuer = CERT_DecodeCertFromPackage ((char *)issuer_blob, issuer_blob_size)) == NULL) {		goto cleanup;	}	if ((cert = CERT_DecodeCertFromPackage ((char *)cert_blob, cert_blob_size)) == NULL) {		goto cleanup;	}	is_issuer = CERT_VerifySignedDataWithPublicKeyInfo (		&cert->signatureWrap,		&issuer->subjectPublicKeyInfo,		NULL	) == SECSuccess;cleanup:	if (cert != NULL) {		CERT_DestroyCertificate (cert);	}	if (issuer != NULL) {		CERT_DestroyCertificate (issuer);	}	return is_issuer;}
开发者ID:Kjuly,项目名称:Tunnelblick,代码行数:45,


示例21: pkix_pl_OcspResponse_Destroy

/* * FUNCTION: pkix_pl_OcspResponse_Destroy * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) */static PKIX_Error *pkix_pl_OcspResponse_Destroy(        PKIX_PL_Object *object,        void *plContext){        PKIX_PL_OcspResponse *ocspRsp = NULL;        const SEC_HttpClientFcn *httpClient = NULL;        const SEC_HttpClientFcnV1 *hcv1 = NULL;        PKIX_ENTER(OCSPRESPONSE, "pkix_pl_OcspResponse_Destroy");        PKIX_NULLCHECK_ONE(object);        PKIX_CHECK(pkix_CheckType(object, PKIX_OCSPRESPONSE_TYPE, plContext),                    PKIX_OBJECTNOTANOCSPRESPONSE);        ocspRsp = (PKIX_PL_OcspResponse *)object;        if (ocspRsp->nssOCSPResponse != NULL) {                CERT_DestroyOCSPResponse(ocspRsp->nssOCSPResponse);                ocspRsp->nssOCSPResponse = NULL;        }        if (ocspRsp->signerCert != NULL) {                CERT_DestroyCertificate(ocspRsp->signerCert);                ocspRsp->signerCert = NULL;        }        httpClient = (const SEC_HttpClientFcn *)(ocspRsp->httpClient);        if (httpClient && (httpClient->version == 1)) {                hcv1 = &(httpClient->fcnTable.ftable1);                if (ocspRsp->sessionRequest != NULL) {                    (*hcv1->freeFcn)(ocspRsp->sessionRequest);                    ocspRsp->sessionRequest = NULL;                }                if (ocspRsp->serverSession != NULL) {                    (*hcv1->freeSessionFcn)(ocspRsp->serverSession);                    ocspRsp->serverSession = NULL;                }        }        if (ocspRsp->arena != NULL) {                PORT_FreeArena(ocspRsp->arena, PR_FALSE);                ocspRsp->arena = NULL;        }	PKIX_DECREF(ocspRsp->producedAtDate);	PKIX_DECREF(ocspRsp->pkixSignerCert);	PKIX_DECREF(ocspRsp->request);cleanup:        PKIX_RETURN(OCSPRESPONSE);}
开发者ID:rn10950,项目名称:RetroZilla,代码行数:61,


示例22: BadCertHandler

static SECStatus BadCertHandler(void *arg, PRFileDesc *sock){  SECStatus result = SECFailure;  struct connectdata *conn = (struct connectdata *)arg;  PRErrorCode err = PR_GetError();  CERTCertificate *cert = NULL;  char *subject, *subject_cn, *issuer;  conn->data->set.ssl.certverifyresult=err;  cert = SSL_PeerCertificate(sock);  subject = CERT_NameToAscii(&cert->subject);  subject_cn = CERT_GetCommonName(&cert->subject);  issuer = CERT_NameToAscii(&cert->issuer);  CERT_DestroyCertificate(cert);  switch(err) {  case SEC_ERROR_CA_CERT_INVALID:    infof(conn->data, "Issuer certificate is invalid: '%s'/n", issuer);    break;  case SEC_ERROR_UNTRUSTED_ISSUER:    infof(conn->data, "Certificate is signed by an untrusted issuer: '%s'/n",          issuer);    break;  case SSL_ERROR_BAD_CERT_DOMAIN:    if(conn->data->set.ssl.verifyhost) {      failf(conn->data, "SSL: certificate subject name '%s' does not match "            "target host name '%s'", subject_cn, conn->host.dispname);    }    else {      result = SECSuccess;      infof(conn->data, "warning: SSL: certificate subject name '%s' does not "            "match target host name '%s'/n", subject_cn, conn->host.dispname);    }    break;  case SEC_ERROR_EXPIRED_CERTIFICATE:    infof(conn->data, "Remote Certificate has expired./n");    break;  case SEC_ERROR_UNKNOWN_ISSUER:    infof(conn->data, "Peer's certificate issuer is not recognized: '%s'/n",          issuer);    break;  default:    infof(conn->data, "Bad certificate received. Subject = '%s', "          "Issuer = '%s'/n", subject, issuer);    break;  }  if(result == SECSuccess)    infof(conn->data, "SSL certificate verify ok./n");  PR_Free(subject);  PR_Free(subject_cn);  PR_Free(issuer);  return result;}
开发者ID:CedricCabessa,项目名称:curl-android,代码行数:54,


示例23: main

int main(int argc, char **argv){  if (NSS_NoDB_Init(NULL) != SECSuccess) {    printf(" >>> NSS_NoDB_Init() failed./n");    return 1;  }  if (argc < 3) {    printf(" >>> I need a DER encoded file to read and have to know what to do with it [decode, private]!/n");    return 1;  }  PRFileDesc* file = PR_Open(argv[1], PR_RDONLY, 0);  SECItem data = {0, NULL, 0};  if (SECU_ReadDERFromFile(&data, file, PR_FALSE, PR_FALSE) != SECSuccess) {    printf(" >>> SECU_ReadDERFromFile() failed./n");    return 1;  }  PR_Close(file);  if (strcmp(argv[2], "decode") == 0) {    CERTCertificate *cert = CERT_DecodeCertFromPackage((char*)data.data, data.len);    if (cert){      printf(" >>> read cert!/n");      printf(" >>> SN: %s/n", cert->subjectName);      printf(" >>> IN: %s/n", cert->issuerName);      CERT_DestroyCertificate(cert);    } else {      printf(" >>> CERT_DecodeCertFromPackage failed./n");      SECITEM_FreeItem(&data, PR_FALSE);      return 1;    }  }  if (argv[2] == "private") {    PK11SlotInfo* slot = PK11_GetInternalSlot();    if (!slot) {      printf(" >>> PK11_GetInternalSlot() failed./n");      SECITEM_FreeItem(&data, PR_FALSE);      return 1;    }    SECKEYPrivateKey* privKey;    if (PK11_ImportDERPrivateKeyInfoAndReturnKey(slot, &data, NULL, NULL, PR_FALSE, PR_FALSE, KU_ALL, &privKey, NULL) != SECSuccess) {      printf(" >>> PK11_ImportDERPrivateKeyInfoAndReturnKey() failed./n");      SECITEM_FreeItem(&data, PR_FALSE);      return 1;    }  }  printf(" !!! Done./n");  return 0;}
开发者ID:franziskuskiefer,项目名称:nss-examples,代码行数:54,


示例24: NSS_CMSSignerInfo_Destroy

/* * NSS_CMSSignerInfo_Destroy - destroy a SignerInfo data structure */voidNSS_CMSSignerInfo_Destroy(NSSCMSSignerInfo *si){    if (si->cert != NULL)	CERT_DestroyCertificate(si->cert);    if (si->certList != NULL) 	CERT_DestroyCertificateList(si->certList);    /* XXX storage ??? */}
开发者ID:MekliCZ,项目名称:positron,代码行数:14,


示例25: BadCertHandler

static SECStatus BadCertHandler(void *arg, PRFileDesc *sock){  SECStatus success = SECSuccess;  struct connectdata *conn = (struct connectdata *)arg;  PRErrorCode err = PR_GetError();  CERTCertificate *cert = NULL;  char *subject, *issuer;  if(conn->data->set.ssl.certverifyresult!=0)    return success;  conn->data->set.ssl.certverifyresult=err;  cert = SSL_PeerCertificate(sock);  subject = CERT_NameToAscii(&cert->subject);  issuer = CERT_NameToAscii(&cert->issuer);  CERT_DestroyCertificate(cert);  switch(err) {  case SEC_ERROR_CA_CERT_INVALID:    infof(conn->data, "Issuer certificate is invalid: '%s'/n", issuer);    if(conn->data->set.ssl.verifypeer)      success = SECFailure;    break;  case SEC_ERROR_UNTRUSTED_ISSUER:    if(conn->data->set.ssl.verifypeer)      success = SECFailure;    infof(conn->data, "Certificate is signed by an untrusted issuer: '%s'/n",          issuer);    break;  case SSL_ERROR_BAD_CERT_DOMAIN:    if(conn->data->set.ssl.verifypeer)      success = SECFailure;    infof(conn->data, "common name: %s (does not match '%s')/n",          subject, conn->host.dispname);    break;  case SEC_ERROR_EXPIRED_CERTIFICATE:    if(conn->data->set.ssl.verifypeer)      success = SECFailure;    infof(conn->data, "Remote Certificate has expired./n");    break;  default:    if(conn->data->set.ssl.verifypeer)      success = SECFailure;    infof(conn->data, "Bad certificate received. Subject = '%s', "          "Issuer = '%s'/n", subject, issuer);    break;  }  if(success == SECSuccess)    infof(conn->data, "SSL certificate verify ok./n");  PR_Free(subject);  PR_Free(issuer);  return success;}
开发者ID:heavilessrose,项目名称:my-sync,代码行数:54,


示例26: CERT_DistNamesFromNicknames

CERTDistNames *CERT_DistNamesFromNicknames(CERTCertDBHandle *handle, char **nicknames,                            int nnames){    CERTDistNames *dnames = NULL;    PLArenaPool *arena;    int i, rv;    SECItem *names = NULL;    CERTCertificate *cert = NULL;    arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);    if (arena == NULL)        goto loser;    dnames = PORT_ArenaZNew(arena, CERTDistNames);    if (dnames == NULL)        goto loser;    dnames->arena = arena;    dnames->nnames = nnames;    dnames->names = names = PORT_ArenaZNewArray(arena, SECItem, nnames);    if (names == NULL)        goto loser;    for (i = 0; i < nnames; i++) {        cert = CERT_FindCertByNicknameOrEmailAddr(handle, nicknames[i]);        if (cert == NULL)            goto loser;        rv = SECITEM_CopyItem(arena, &names[i], &cert->derSubject);        if (rv == SECFailure)            goto loser;        CERT_DestroyCertificate(cert);    }    return dnames;loser:    if (cert != NULL)        CERT_DestroyCertificate(cert);    if (arena != NULL)        PORT_FreeArena(arena, PR_FALSE);    return NULL;}
开发者ID:subsevenx2001,项目名称:gecko-dev,代码行数:41,


示例27: CERT_DestroyCertificate

CERTVerifyLogContentsCleaner::~CERTVerifyLogContentsCleaner(){  if (!m_cvl)    return;  CERTVerifyLogNode *i_node;  for (i_node = m_cvl->head; i_node; i_node = i_node->next)  {    if (i_node->cert)      CERT_DestroyCertificate(i_node->cert);  }}
开发者ID:Akin-Net,项目名称:mozilla-central,代码行数:12,



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


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