这篇教程C++ ASN1_INTEGER_to_BN函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中ASN1_INTEGER_to_BN函数的典型用法代码示例。如果您正苦于以下问题:C++ ASN1_INTEGER_to_BN函数的具体用法?C++ ASN1_INTEGER_to_BN怎么用?C++ ASN1_INTEGER_to_BN使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了ASN1_INTEGER_to_BN函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: validate_signature_block/** * Validates the format of the boot signature block, and checks that * the length in authenticated attributes matches the actual length of * the image. * @param bs The boot signature block to validate * @param length The actual length of the boot image without the signature */static int validate_signature_block(const BootSignature *bs, uint64_t length){ BIGNUM expected; BIGNUM value; int rc = -1; if (!bs) { return -1; } BN_init(&expected); BN_init(&value); /* Confirm that formatVersion matches our supported version */ if (!BN_set_word(&expected, FORMAT_VERSION)) { ERR_print_errors(g_error); goto vsb_done; } ASN1_INTEGER_to_BN(bs->formatVersion, &value); if (BN_cmp(&expected, &value) != 0) { printf("Unsupported signature version/n"); goto vsb_done; } BN_clear(&expected); BN_clear(&value); /* Confirm that the length of the image matches with the length in the authenticated attributes */ length = htobe64(length); BN_bin2bn((const unsigned char *) &length, sizeof(length), &expected); ASN1_INTEGER_to_BN(bs->authenticatedAttributes->length, &value); if (BN_cmp(&expected, &value) != 0) { printf("Image length doesn't match signature attributes/n"); goto vsb_done; } rc = 0;vsb_done: BN_free(&expected); BN_free(&value); return rc;}
开发者ID:AOSP-JF-MM,项目名称:platform_system_extras,代码行数:56,
示例2: dh_cms_set_peerkeystatic int dh_cms_set_peerkey(EVP_PKEY_CTX *pctx, X509_ALGOR *alg, ASN1_BIT_STRING *pubkey){ ASN1_OBJECT *aoid; int atype; void *aval; ASN1_INTEGER *public_key = NULL; int rv = 0; EVP_PKEY *pkpeer = NULL, *pk = NULL; DH *dhpeer = NULL; const unsigned char *p; int plen; X509_ALGOR_get0(&aoid, &atype, &aval, alg); if (OBJ_obj2nid(aoid) != NID_dhpublicnumber) goto err; /* Only absent parameters allowed in RFC XXXX */ if (atype != V_ASN1_UNDEF && atype == V_ASN1_NULL) goto err; pk = EVP_PKEY_CTX_get0_pkey(pctx); if (!pk) goto err; if (pk->type != EVP_PKEY_DHX) goto err; /* Get parameters from parent key */ dhpeer = DHparams_dup(pk->pkey.dh); /* We have parameters now set public key */ plen = ASN1_STRING_length(pubkey); p = ASN1_STRING_data(pubkey); if (!p || !plen) goto err; if (!(public_key = d2i_ASN1_INTEGER(NULL, &p, plen))) { DHerr(DH_F_DH_CMS_SET_PEERKEY, DH_R_DECODE_ERROR); goto err; } /* We have parameters now set public key */ if (!(dhpeer->pub_key = ASN1_INTEGER_to_BN(public_key, NULL))) { DHerr(DH_F_DH_CMS_SET_PEERKEY, DH_R_BN_DECODE_ERROR); goto err; } pkpeer = EVP_PKEY_new(); if (!pkpeer) goto err; EVP_PKEY_assign(pkpeer, pk->ameth->pkey_id, dhpeer); dhpeer = NULL; if (EVP_PKEY_derive_set_peer(pctx, pkpeer) > 0) rv = 1; err: if (public_key) ASN1_INTEGER_free(public_key); if (pkpeer) EVP_PKEY_free(pkpeer); if (dhpeer) DH_free(dhpeer); return rv;}
开发者ID:Orav,项目名称:kbengine,代码行数:60,
示例3: ssl_x509_serial_copyrand/* * Copy the serial number from src certificate to dst certificate * and modify it by a random offset. * If reading the serial fails for some reason, generate a new * random serial and store it in the dst certificate. * Using the same serial is not a good idea since some SSL stacks * check for duplicate certificate serials. * Returns 0 on success, -1 on error. */intssl_x509_serial_copyrand(X509 *dstcrt, X509 *srccrt){ ASN1_INTEGER *srcptr, *dstptr; BIGNUM *bnserial; unsigned int rand; int rv;#ifndef PURIFY rv = ssl_rand(&rand, sizeof(rand));#else /* PURIFY */ rand = 0xF001; rv = 0;#endif /* PURIFY */ dstptr = X509_get_serialNumber(dstcrt); srcptr = X509_get_serialNumber(srccrt); if ((rv == -1) || !dstptr || !srcptr) return -1; bnserial = ASN1_INTEGER_to_BN(srcptr, NULL); if (!bnserial) { /* random 32-bit serial */ ASN1_INTEGER_set(dstptr, rand); } else { /* original serial plus random 32-bit offset */ BN_add_word(bnserial, rand); BN_to_ASN1_INTEGER(bnserial, dstptr); BN_free(bnserial); } return 0;}
开发者ID:caidongyun,项目名称:backup,代码行数:39,
示例4: x509_get_serial_numberDatum x509_get_serial_number(PG_FUNCTION_ARGS) { bytea *raw; bytea *result; BIGNUM *bn; X509 *cert; // check for null value. raw = PG_GETARG_BYTEA_P(0); if (raw == NULL || VARSIZE(raw) == VARHDRSZ) { PG_RETURN_NULL(); } cert = x509_from_bytea(raw); if (cert == NULL) { ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), errmsg( "unable to decode X509 record"))); } bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(cert), NULL); result = bn_to_bytea(bn); BN_free(bn); X509_free(cert); PG_RETURN_BYTEA_P(result);}
开发者ID:beargiles,项目名称:pgopenssltypes,代码行数:26,
示例5: tls_parse_bigint/* Convert ASN1_INTEGER to decimal string string */static inttls_parse_bigint(struct tls *ctx, const ASN1_INTEGER *asn1int, const char **dst_p){ long small; BIGNUM *big; char *tmp, buf[64]; *dst_p = NULL; small = ASN1_INTEGER_get(asn1int); if (small < 0) { big = ASN1_INTEGER_to_BN(asn1int, NULL); if (big) { tmp = BN_bn2dec(big); if (tmp) *dst_p = strdup(tmp); OPENSSL_free(tmp); } BN_free(big); } else { snprintf(buf, sizeof buf, "%lu", small); *dst_p = strdup(buf); } if (*dst_p) return 0; tls_set_errorx(ctx, "cannot parse serial"); return -1;}
开发者ID:greenplum-db,项目名称:libusual,代码行数:29,
示例6: modssl_X509_getBC/* retrieve basic constraints ingredients */BOOL modssl_X509_getBC(X509 *cert, int *ca, int *pathlen){ BASIC_CONSTRAINTS *bc; BIGNUM *bn = NULL; char *cp; bc = X509_get_ext_d2i(cert, NID_basic_constraints, NULL, NULL); if (bc == NULL) return FALSE; *ca = bc->ca; *pathlen = -1 /* unlimited */; if (bc->pathlen != NULL) { if ((bn = ASN1_INTEGER_to_BN(bc->pathlen, NULL)) == NULL) { BASIC_CONSTRAINTS_free(bc); return FALSE; } if ((cp = BN_bn2dec(bn)) == NULL) { BN_free(bn); BASIC_CONSTRAINTS_free(bc); return FALSE; } *pathlen = atoi(cp); OPENSSL_free(cp); BN_free(bn); } BASIC_CONSTRAINTS_free(bc); return TRUE;}
开发者ID:pexip,项目名称:os-apache2,代码行数:29,
示例7: asn1integer_to_numVALUEasn1integer_to_num(ASN1_INTEGER *ai){ BIGNUM *bn;#if DO_IT_VIA_RUBY char *txt;#endif VALUE num; if (!ai) { ossl_raise(rb_eTypeError, "ASN1_INTEGER is NULL!"); } if (!(bn = ASN1_INTEGER_to_BN(ai, NULL))) { ossl_raise(eOSSLError, NULL); }#if DO_IT_VIA_RUBY if (!(txt = BN_bn2dec(bn))) { BN_free(bn); ossl_raise(eOSSLError, NULL); } num = rb_cstr_to_inum(txt, 10, Qtrue); OPENSSL_free(txt);#else num = ossl_bn_new(bn);#endif BN_free(bn); return num;}
开发者ID:DocPsy,项目名称:MacRuby,代码行数:29,
示例8: SSL_X509_getBC/* retrieve basic constraints ingredients */BOOL SSL_X509_getBC(X509 *cert, int *ca, int *pathlen){ X509_EXTENSION *ext; BASIC_CONSTRAINTS *bc; int idx; BIGNUM *bn = NULL; char *cp; if ((idx = X509_get_ext_by_NID(cert, NID_basic_constraints, -1)) < 0) return FALSE; ext = X509_get_ext(cert, idx); if (ext == NULL) return FALSE; if ((bc = (BASIC_CONSTRAINTS *)X509V3_EXT_d2i(ext)) == NULL) return FALSE; *ca = bc->ca; *pathlen = -1 /* unlimited */; if (bc->pathlen != NULL) { if ((bn = ASN1_INTEGER_to_BN(bc->pathlen, NULL)) == NULL) return FALSE; if ((cp = BN_bn2dec(bn)) == NULL) return FALSE; *pathlen = atoi(cp); OPENSSL_free(cp); BN_free(bn); } BASIC_CONSTRAINTS_free(bc); return TRUE;}
开发者ID:AzerTyQsdF,项目名称:osx,代码行数:30,
示例9: openssl_revoked_serialNumberstatic int openssl_revoked_serialNumber(lua_State* L){ X509_REVOKED* revoked = CHECK_OBJECT(1, X509_REVOKED, "openssl.x509_revoked"); BIGNUM *bn = ASN1_INTEGER_to_BN(revoked->serialNumber, NULL); PUSH_ASN1_INTEGER(L, revoked->serialNumber); PUSH_OBJECT(bn, "openssl.bn"); return 2;}
开发者ID:sdgdsffdsfff,项目名称:lua-openssl,代码行数:8,
示例10: ASN1_INTEGER_to_BNa1int &a1int::operator ++ (void){ BIGNUM *bn = ASN1_INTEGER_to_BN(in, NULL); BN_add(bn, bn, BN_value_one()); BN_to_ASN1_INTEGER(bn, in); BN_free(bn); return *this;}
开发者ID:LiTianjue,项目名称:xca,代码行数:8,
示例11: dsa_pub_decodestatic int dsa_pub_decode(EVP_PKEY *pkey, X509_PUBKEY *pubkey) { const uint8_t *p, *pm; int pklen, pmlen; int ptype; void *pval; ASN1_STRING *pstr; X509_ALGOR *palg; ASN1_INTEGER *public_key = NULL; DSA *dsa = NULL; if (!X509_PUBKEY_get0_param(NULL, &p, &pklen, &palg, pubkey)) { return 0; } X509_ALGOR_get0(NULL, &ptype, &pval, palg); if (ptype == V_ASN1_SEQUENCE) { pstr = pval; pm = pstr->data; pmlen = pstr->length; dsa = d2i_DSAparams(NULL, &pm, pmlen); if (dsa == NULL) { OPENSSL_PUT_ERROR(EVP, EVP_R_DECODE_ERROR); goto err; } } else if (ptype == V_ASN1_NULL || ptype == V_ASN1_UNDEF) { dsa = DSA_new(); if (dsa == NULL) { OPENSSL_PUT_ERROR(EVP, ERR_R_MALLOC_FAILURE); goto err; } } else { OPENSSL_PUT_ERROR(EVP, EVP_R_PARAMETER_ENCODING_ERROR); goto err; } public_key = d2i_ASN1_INTEGER(NULL, &p, pklen); if (public_key == NULL) { OPENSSL_PUT_ERROR(EVP, EVP_R_DECODE_ERROR); goto err; } dsa->pub_key = ASN1_INTEGER_to_BN(public_key, NULL); if (dsa->pub_key == NULL) { OPENSSL_PUT_ERROR(EVP, EVP_R_BN_DECODE_ERROR); goto err; } ASN1_INTEGER_free(public_key); EVP_PKEY_assign_DSA(pkey, dsa); return 1;err: ASN1_INTEGER_free(public_key); DSA_free(dsa); return 0;}
开发者ID:bheesham,项目名称:boringssl,代码行数:58,
示例12: dsa_pub_decodestatic int dsa_pub_decode(EVP_PKEY *pkey, X509_PUBKEY *pubkey){ const unsigned char *p, *pm; int pklen, pmlen; int ptype; void *pval; ASN1_STRING *pstr; X509_ALGOR *palg; ASN1_INTEGER *public_key = NULL; DSA *dsa = NULL; if (!X509_PUBKEY_get0_param(NULL, &p, &pklen, &palg, pubkey)) return 0; X509_ALGOR_get0(NULL, &ptype, &pval, palg); if (ptype == V_ASN1_SEQUENCE) { pstr = pval; pm = pstr->data; pmlen = pstr->length; if (!(dsa = d2i_DSAparams(NULL, &pm, pmlen))) { DSAerr(DSA_F_DSA_PUB_DECODE, DSA_R_DECODE_ERROR); goto err; } } else if ((ptype == V_ASN1_NULL) || (ptype == V_ASN1_UNDEF)) { if (!(dsa = DSA_new())) { DSAerr(DSA_F_DSA_PUB_DECODE, ERR_R_MALLOC_FAILURE); goto err; } } else { DSAerr(DSA_F_DSA_PUB_DECODE, DSA_R_PARAMETER_ENCODING_ERROR); goto err; } if (!(public_key = d2i_ASN1_INTEGER(NULL, &p, pklen))) { DSAerr(DSA_F_DSA_PUB_DECODE, DSA_R_DECODE_ERROR); goto err; } if (!(dsa->pub_key = ASN1_INTEGER_to_BN(public_key, NULL))) { DSAerr(DSA_F_DSA_PUB_DECODE, DSA_R_BN_DECODE_ERROR); goto err; } ASN1_INTEGER_free(public_key); EVP_PKEY_assign_DSA(pkey, dsa); return 1; err: if (public_key) ASN1_INTEGER_free(public_key); if (dsa) DSA_free(dsa); return 0;}
开发者ID:1Project,项目名称:SafeBoardMessenger,代码行数:58,
示例13: dh_pub_decodestatic int dh_pub_decode(EVP_PKEY *pkey, X509_PUBKEY *pubkey) { const unsigned char *p, *pm; int pklen, pmlen; int ptype; void *pval; ASN1_STRING *pstr; X509_ALGOR *palg; ASN1_INTEGER *public_key = NULL; DH *dh = NULL; if (!X509_PUBKEY_get0_param(NULL, &p, &pklen, &palg, pubkey)) return 0; X509_ALGOR_get0(NULL, &ptype, &pval, palg); if (ptype != V_ASN1_SEQUENCE) { DHerr(DH_F_DH_PUB_DECODE, DH_R_PARAMETER_ENCODING_ERROR); goto err; } pstr = pval; pm = pstr->data; pmlen = pstr->length; if (!(dh = d2i_DHparams(NULL, &pm, pmlen))) { DHerr(DH_F_DH_PUB_DECODE, DH_R_DECODE_ERROR); goto err; } if (!(public_key=d2i_ASN1_INTEGER(NULL, &p, pklen))) { DHerr(DH_F_DH_PUB_DECODE, DH_R_DECODE_ERROR); goto err; } /* We have parameters now set public key */ if (!(dh->pub_key = ASN1_INTEGER_to_BN(public_key, NULL))) { DHerr(DH_F_DH_PUB_DECODE, DH_R_BN_DECODE_ERROR); goto err; } ASN1_INTEGER_free(public_key); EVP_PKEY_assign_DH(pkey, dh); return 1; err: if (public_key) ASN1_INTEGER_free(public_key); if (dh) DH_free(dh); return 0; }
开发者ID:002301,项目名称:node,代码行数:57,
示例14: dh_priv_decodestatic int dh_priv_decode (EVP_PKEY * pkey, PKCS8_PRIV_KEY_INFO * p8){ const unsigned char *p, *pm; int pklen, pmlen; int ptype; void *pval; ASN1_STRING *pstr; X509_ALGOR *palg; ASN1_INTEGER *privkey = NULL; DH *dh = NULL; if (!PKCS8_pkey_get0 (NULL, &p, &pklen, &palg, p8)) return 0; X509_ALGOR_get0 (NULL, &ptype, &pval, palg); if (ptype != V_ASN1_SEQUENCE) goto decerr; if (!(privkey = d2i_ASN1_INTEGER (NULL, &p, pklen))) goto decerr; pstr = pval; pm = pstr->data; pmlen = pstr->length; if (!(dh = d2i_DHparams (NULL, &pm, pmlen))) goto decerr; /* We have parameters now set private key */ if (!(dh->priv_key = ASN1_INTEGER_to_BN (privkey, NULL))) { DHerr (DH_F_DH_PRIV_DECODE, DH_R_BN_ERROR); goto dherr; } /* Calculate public key */ if (!DH_generate_key (dh)) goto dherr; EVP_PKEY_assign_DH (pkey, dh); ASN1_INTEGER_free (privkey); return 1; decerr: DHerr (DH_F_DH_PRIV_DECODE, EVP_R_DECODE_ERROR); dherr: DH_free (dh); return 0;}
开发者ID:274914765,项目名称:C,代码行数:57,
示例15: priv_decode_gost/* ------------------ private key functions -----------------------------*/static int priv_decode_gost( EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf) { const unsigned char *pkey_buf = NULL,*p=NULL; int priv_len = 0; BIGNUM *pk_num=NULL; int ret =0; X509_ALGOR *palg =NULL; ASN1_OBJECT *palg_obj = NULL; ASN1_INTEGER *priv_key=NULL; if (!PKCS8_pkey_get0(&palg_obj,&pkey_buf,&priv_len,&palg,p8inf)) return 0; p = pkey_buf; if (!decode_gost_algor_params(pk,palg)) { return 0; } if (V_ASN1_OCTET_STRING == *p) { /* New format - Little endian octet string */ unsigned char rev_buf[32]; int i; ASN1_OCTET_STRING *s = d2i_ASN1_OCTET_STRING(NULL,&p,priv_len); if (!s||s->length !=32) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } for (i=0;i<32;i++) { rev_buf[31-i]=s->data[i]; } ASN1_STRING_free(s); pk_num = getbnfrombuf(rev_buf,32); } else { priv_key=d2i_ASN1_INTEGER(NULL,&p,priv_len); if (!priv_key) return 0; ret= ((pk_num = ASN1_INTEGER_to_BN(priv_key, NULL))!=NULL) ; ASN1_INTEGER_free(priv_key); if (!ret) { GOSTerr(GOST_F_PRIV_DECODE_GOST, EVP_R_DECODE_ERROR); return 0; } } ret= gost_set_priv_key(pk,pk_num); BN_free(pk_num); return ret; }
开发者ID:0culus,项目名称:openssl,代码行数:55,
示例16: X509_get_serialNumberconst byteArray X509Certificate_OpenSSL::getSerialNumber() const{ ASN1_INTEGER *serial = X509_get_serialNumber(m_data->cert); BIGNUM *bnser = ASN1_INTEGER_to_BN(serial, NULL); int n = BN_num_bytes(bnser); byte_t* outbuf = new byte_t[n]; BN_bn2bin(bnser, outbuf); byteArray ser(outbuf, outbuf + n); delete [] outbuf; BN_free(bnser); return ser;}
开发者ID:SalmonProject,项目名称:SalmonWindowsClient,代码行数:12,
示例17: handle_serialstatic char *handle_serial (char * serial){ int hex = NULL != strchr (serial, ':'); /* Convert serial to a decimal serial when input is a hexidecimal representation of the serial */ if (hex) { unsigned int i,ii; char *tmp_serial = (char*) calloc (strlen (serial) + 1,1); for (i=0,ii=0; '/0'!=serial[i];i++) { if (':'!=serial[i]) tmp_serial[ii++]=serial[i]; } serial=tmp_serial; } else { unsigned int i; for (i=0; ! hex && '/0' != serial[i]; i++) hex = 'a'==serial[i]||'b'==serial[i]||'c'==serial[i]||'d'==serial[i]||'e'==serial[i]||'f'==serial[i]; } if (hex) { ASN1_INTEGER* ai; BIGNUM *ret; BIO* in = BIO_new_mem_buf(serial, -1); char buf[1025]; ai=ASN1_INTEGER_new(); if (ai == NULL) return NULL; if (!a2i_ASN1_INTEGER(in,ai,buf,1024)) { return NULL; } ret=ASN1_INTEGER_to_BN(ai,NULL); if (ret == NULL) { return NULL; } else { serial = BN_bn2dec(ret); } } return serial;} /* handle_serial */
开发者ID:flomar,项目名称:sscep,代码行数:51,
示例18: meth_serial/** * Return the serial number. */static int meth_serial(lua_State *L){ char *tmp; BIGNUM *bn; ASN1_INTEGER *serial; X509* cert = lsec_checkx509(L, 1); serial = X509_get_serialNumber(cert); bn = ASN1_INTEGER_to_BN(serial, NULL); tmp = BN_bn2hex(bn); lua_pushstring(L, tmp); BN_free(bn); OPENSSL_free(tmp); return 1;}
开发者ID:horazont,项目名称:luasec,代码行数:17,
示例19: x509_get_serialchar *x509_get_serial (x509_cert_t *cert){ ASN1_INTEGER *asn1_i; BIGNUM *bignum; char *serial; asn1_i = X509_get_serialNumber(cert); bignum = ASN1_INTEGER_to_BN(asn1_i, NULL); serial = BN_bn2dec(bignum); BN_free(bignum); return serial;}
开发者ID:alshalan,项目名称:Mobile-OpenVPN,代码行数:14,
示例20: cert_string_from_asn1_integerstd::string cert_string_from_asn1_integer(ASN1_INTEGER* value){ std::string result; BIGNUM *bn = ASN1_INTEGER_to_BN(value, NULL); if(bn) { char * ascii_bn = BN_bn2hex(bn); if(ascii_bn) { result = ascii_bn; OPENSSL_free(ascii_bn); } BN_free(bn); } return result;}
开发者ID:OS-Development,项目名称:VW.Zen,代码行数:17,
示例21: x509_get_serialchar *x509_get_serial (openvpn_x509_cert_t *cert, struct gc_arena *gc){ ASN1_INTEGER *asn1_i; BIGNUM *bignum; char *openssl_serial, *serial; asn1_i = X509_get_serialNumber(cert); bignum = ASN1_INTEGER_to_BN(asn1_i, NULL); openssl_serial = BN_bn2dec(bignum); serial = string_alloc(openssl_serial, gc); BN_free(bignum); OPENSSL_free(openssl_serial); return serial;}
开发者ID:alonbl,项目名称:openvpn,代码行数:18,
示例22: THROW_STACK_EXCEPTIONstd::string bdoc::X509Cert::getSerial() const{ std::string serial; ASN1_INTEGER* bs = NULL; if (!(bs = X509_get_serialNumber(cert))) { THROW_STACK_EXCEPTION("Failed to read certificate serial number from X.509 certificate: %s", ERR_reason_error_string(ERR_get_error())); } BIGNUM *bn = ASN1_INTEGER_to_BN(bs, NULL); char *str = BN_bn2dec(bn); serial = std::string(str); BN_free(bn); OPENSSL_free(str); return serial;}
开发者ID:Augustyn,项目名称:evalimine,代码行数:18,
示例23: CheckSerialstatic void CheckSerial(X509 *x509){ ASN1_INTEGER *serial = X509_get_serialNumber(x509); BIGNUM *bn_serial = ASN1_INTEGER_to_BN(serial, NULL); if (BN_is_negative(bn_serial) || BN_is_zero(bn_serial)) { SetError(ERR_SERIAL_NOT_POSITIVE); } if (serial->length > 20) { SetError(ERR_SERIAL_TOO_LARGE); } CheckASN1_integer(serial); BN_free(bn_serial);}
开发者ID:kroeckx,项目名称:x509lint,代码行数:18,
示例24: get_serial_numberstatic PyObject *get_serial_number (certificate_x509 *self, PyObject *args){ PyObject *ret; if (!PyArg_ParseTuple (args, "")) { return NULL; } ASN1_INTEGER *serial_asn = X509_get_serialNumber (self->x509); BIGNUM *bn = ASN1_INTEGER_to_BN (serial_asn, NULL); char *hex = BN_bn2hex (bn); BN_free (bn); ret = PyLong_FromString (hex, NULL, 16); OPENSSL_free (hex); return ret;}
开发者ID:jlsherrill,项目名称:python-rhsm,代码行数:19,
示例25: ERR_clear_errorstatic ASN1_INTEGER *next_serial(const char *serialfile){ int ret = 0; BIO *in = NULL; ASN1_INTEGER *serial = NULL; BIGNUM *bn = NULL; if ((serial = ASN1_INTEGER_new()) == NULL) goto err; if ((in = BIO_new_file(serialfile, "r")) == NULL) { ERR_clear_error(); BIO_printf(bio_err, "Warning: could not open file %s for " "reading, using serial number: 1/n", serialfile); if (!ASN1_INTEGER_set(serial, 1)) goto err; } else { char buf[1024]; if (!a2i_ASN1_INTEGER(in, serial, buf, sizeof(buf))) { BIO_printf(bio_err, "unable to load number from %s/n", serialfile); goto err; } if ((bn = ASN1_INTEGER_to_BN(serial, NULL)) == NULL) goto err; ASN1_INTEGER_free(serial); serial = NULL; if (!BN_add_word(bn, 1)) goto err; if ((serial = BN_to_ASN1_INTEGER(bn, NULL)) == NULL) goto err; } ret = 1; err: if (!ret) { ASN1_INTEGER_free(serial); serial = NULL; } BIO_free_all(in); BN_free(bn); return serial;}
开发者ID:Beatzevo,项目名称:openssl,代码行数:43,
示例26: TS_ASN1_INTEGER_print_bioint TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num){ BIGNUM *num_bn; int result = 0; char *hex; num_bn = BN_new(); if (num_bn == NULL) return -1; ASN1_INTEGER_to_BN(num, num_bn); if ((hex = BN_bn2hex(num_bn))) { result = BIO_write(bio, "0x", 2) > 0; result = result && BIO_write(bio, hex, strlen(hex)) > 0; OPENSSL_free(hex); } BN_free(num_bn); return result;}
开发者ID:AndreV84,项目名称:openssl,代码行数:19,
示例27: output_serialNumberint output_serialNumber (BIO *out, BIO *err, X509 *x) { ASN1_INTEGER *serial ; BIO *b64 ; BIGNUM *bn = NULL ; unsigned char *binserial = NULL ; int len ; int res = 1 ; if ((b64 = BIO_push(BIO_new(BIO_f_base64()), out)) == NULL) { BIO_printf(err, "Error - Cannot initialise Base64 output filter for serial number/n"); goto end ; } BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL) ; serial = X509_get_serialNumber(x) ; bn = ASN1_INTEGER_to_BN (serial, NULL) ; len = BN_num_bytes(bn); binserial = malloc(len) ; if (BN_bn2bin(bn, binserial) != len) { BIO_printf(err, "Error - Cannot get a binary representation of serial number/n"); goto end ; } BIO_printf(out, "4_serial ") ; /* Assuming that serial number is positive, prepend 0x00 if first byte of serial number is >= 0x80 */ if (binserial[0] & 0x80) { BIO_write(b64, "/0", 1); } BIO_write(b64, binserial, len); BIO_flush(b64); BIO_printf(out, "/n") ; res = 0 ;end: if (bn != NULL) BN_free (bn) ; if (binserial != NULL) free (binserial) ; return res ;}
开发者ID:spujadas,项目名称:tp-confiance,代码行数:42,
示例28: throw/** * @return returns X.509 certificate serial number. * @throws IOException exception is thrown if the serial is incorrect. */std::string digidoc::X509Cert::getSerial() const throw(IOException){ std::string serial; BIGNUM *bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(cert), 0); if(bn) { char *str = BN_bn2dec(bn); if(str) serial = str; OPENSSL_free(str); BN_free(bn); } if(serial.empty()) { THROW_IOEXCEPTION("Failed to read certificate serial number from X.509 certificate: %s", ERR_reason_error_string(ERR_get_error())); } return serial;}
开发者ID:Krabi,项目名称:idkaart_public,代码行数:24,
示例29: crypto_X509_get_serial_number@return: Serial number as a Python integer/n/";static PyObject *crypto_X509_get_serial_number(crypto_X509Obj *self, PyObject *args){ ASN1_INTEGER *asn1_i; BIGNUM *bignum; char *hex; PyObject *res; if (!PyArg_ParseTuple(args, ":get_serial_number")) return NULL; asn1_i = X509_get_serialNumber(self->x509); bignum = ASN1_INTEGER_to_BN(asn1_i, NULL); hex = BN_bn2hex(bignum); res = PyLong_FromString(hex, NULL, 16); BN_free(bignum); free(hex); return res;}
开发者ID:15580056814,项目名称:hue,代码行数:22,
注:本文中的ASN1_INTEGER_to_BN函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ASN1_ITEM_ptr函数代码示例 C++ ASN1_INTEGER_set函数代码示例 |