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

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

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

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

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

示例1: MAIN

//.........这里部分代码省略.........				e, "key file");		if (!sigkey)			{			/* load_[pub]key() has already printed an appropriate			   message */			goto end;			}		}	if (mac_name)		{		EVP_PKEY_CTX *mac_ctx = NULL;		int r = 0;		if (!init_gen_str(bio_err, &mac_ctx, mac_name,e, 0))			goto mac_end;		if (macopts)			{			char *macopt;			for (i = 0; i < sk_OPENSSL_STRING_num(macopts); i++)				{				macopt = sk_OPENSSL_STRING_value(macopts, i);				if (pkey_ctrl_string(mac_ctx, macopt) <= 0)					{					BIO_printf(bio_err,						"MAC parameter error /"%s/"/n",						macopt);					ERR_print_errors(bio_err);					goto mac_end;					}				}			}		if (EVP_PKEY_keygen(mac_ctx, &sigkey) <= 0)			{			BIO_puts(bio_err, "Error generating key/n");			ERR_print_errors(bio_err);			goto mac_end;			}		r = 1;		mac_end:		if (mac_ctx)			EVP_PKEY_CTX_free(mac_ctx);		if (r == 0)			goto end;		}	if (non_fips_allow)		{		EVP_MD_CTX *md_ctx;		BIO_get_md_ctx(bmd,&md_ctx);		EVP_MD_CTX_set_flags(md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);		}	if (hmac_key)		{		sigkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, e,					(unsigned char *)hmac_key, -1);		if (!sigkey)			goto end;		}	if (sigkey)		{		EVP_MD_CTX *mctx = NULL;		EVP_PKEY_CTX *pctx = NULL;		int r;		if (!BIO_get_md_ctx(bmd, &mctx))
开发者ID:0x0B501E7E,项目名称:platform_external_openssl,代码行数:67,


示例2: cms_main

//.........这里部分代码省略.........            from = opt_arg();            break;        case OPT_SUBJECT:            subject = opt_arg();            break;        case OPT_CERTSOUT:            certsoutfile = opt_arg();            break;        case OPT_MD:            if (!opt_md(opt_arg(), &sign_md))                goto end;            break;        case OPT_SIGNER:            /* If previous -signer argument add signer to list */            if (signerfile) {                if (sksigners == NULL                    && (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)                    goto end;                sk_OPENSSL_STRING_push(sksigners, signerfile);                if (keyfile == NULL)                    keyfile = signerfile;                if (skkeys == NULL                    && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)                    goto end;                sk_OPENSSL_STRING_push(skkeys, keyfile);                keyfile = NULL;            }            signerfile = opt_arg();            break;        case OPT_INKEY:            /* If previous -inkey arument add signer to list */            if (keyfile) {                if (signerfile == NULL) {                    BIO_puts(bio_err, "Illegal -inkey without -signer/n");                    goto end;                }                if (sksigners == NULL                    && (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)                    goto end;                sk_OPENSSL_STRING_push(sksigners, signerfile);                signerfile = NULL;                if (skkeys == NULL                    && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)                    goto end;                sk_OPENSSL_STRING_push(skkeys, keyfile);            }            keyfile = opt_arg();            break;        case OPT_KEYFORM:            if (!opt_format(opt_arg(), OPT_FMT_ANY, &keyform))                goto opthelp;            break;        case OPT_RECIP:            if (operation == SMIME_ENCRYPT) {                if (encerts == NULL && (encerts = sk_X509_new_null()) == NULL)                    goto end;                cert = load_cert(opt_arg(), FORMAT_PEM, NULL, e,                                 "recipient certificate file");                if (cert == NULL)                    goto end;                sk_X509_push(encerts, cert);                cert = NULL;            } else                recipfile = opt_arg();            break;        case OPT_CIPHER:
开发者ID:Golcoin,项目名称:openssl,代码行数:67,


示例3: nullf_puts

static int nullf_puts(BIO *bp, const char *str){    if (bp->next_bio == NULL) return(0);    return(BIO_puts(bp->next_bio,str));}
开发者ID:2wce,项目名称:Signal-Android,代码行数:5,


示例4: MAIN

//.........这里部分代码省略.........    }    if (p7 == NULL) {        BIO_printf(bio_err, "unable to load PKCS7 object/n");        ERR_print_errors(bio_err);        goto end;    }    if (outfile == NULL) {        BIO_set_fp(out, stdout, BIO_NOCLOSE);#ifdef OPENSSL_SYS_VMS        {            BIO *tmpbio = BIO_new(BIO_f_linebuffer());            out = BIO_push(tmpbio, out);        }#endif    } else {        if (BIO_write_filename(out, outfile) <= 0) {            perror(outfile);            goto end;        }    }    if (p7_print)        PKCS7_print_ctx(out, p7, 0, NULL);    if (print_certs) {        STACK_OF(X509) *certs = NULL;        STACK_OF(X509_CRL) *crls = NULL;        i = OBJ_obj2nid(p7->type);        switch (i) {        case NID_pkcs7_signed:            certs = p7->d.sign->cert;            crls = p7->d.sign->crl;            break;        case NID_pkcs7_signedAndEnveloped:            certs = p7->d.signed_and_enveloped->cert;            crls = p7->d.signed_and_enveloped->crl;            break;        default:            break;        }        if (certs != NULL) {            X509 *x;            for (i = 0; i < sk_X509_num(certs); i++) {                x = sk_X509_value(certs, i);                if (text)                    X509_print(out, x);                else                    dump_cert_text(out, x);                if (!noout)                    PEM_write_bio_X509(out, x);                BIO_puts(out, "/n");            }        }        if (crls != NULL) {            X509_CRL *crl;            for (i = 0; i < sk_X509_CRL_num(crls); i++) {                crl = sk_X509_CRL_value(crls, i);                X509_CRL_print(out, crl);                if (!noout)                    PEM_write_bio_X509_CRL(out, crl);                BIO_puts(out, "/n");            }        }        ret = 0;        goto end;    }    if (!noout) {        if (outformat == FORMAT_ASN1)            i = i2d_PKCS7_bio(out, p7);        else if (outformat == FORMAT_PEM)            i = PEM_write_bio_PKCS7(out, p7);        else {            BIO_printf(bio_err, "bad output format specified for outfile/n");            goto end;        }        if (!i) {            BIO_printf(bio_err, "unable to write pkcs7 object/n");            ERR_print_errors(bio_err);            goto end;        }    }    ret = 0; end:    PKCS7_free(p7);    BIO_free(in);    BIO_free_all(out);    apps_shutdown();    OPENSSL_EXIT(ret);}
开发者ID:Convey-Compliance,项目名称:openssl,代码行数:101,


示例5: crl_main

//.........这里部分代码省略.........		}		pkey = X509_get_pubkey(xobj.data.x509);		X509_OBJECT_free_contents(&xobj);		if (!pkey) {			BIO_printf(bio_err,			    "Error getting CRL issuer public key/n");			goto end;		}		i = X509_CRL_verify(x, pkey);		EVP_PKEY_free(pkey);		if (i < 0)			goto end;		if (i == 0)			BIO_printf(bio_err, "verify failure/n");		else			BIO_printf(bio_err, "verify OK/n");	}	/* Print requested information the order that the flags were given. */	for (i = 1; i <= argc; i++) {		if (crl_config.issuer == i) {			print_name(bio_out, "issuer=",			    X509_CRL_get_issuer(x), nmflag);		}		if (crl_config.crlnumber == i) {			ASN1_INTEGER *crlnum;			crlnum = X509_CRL_get_ext_d2i(x,			    NID_crl_number, NULL, NULL);			BIO_printf(bio_out, "crlNumber=");			if (crlnum) {				i2a_ASN1_INTEGER(bio_out, crlnum);				ASN1_INTEGER_free(crlnum);			} else				BIO_puts(bio_out, "<NONE>");			BIO_printf(bio_out, "/n");		}		if (crl_config.hash == i) {			BIO_printf(bio_out, "%08lx/n",			    X509_NAME_hash(X509_CRL_get_issuer(x)));		}#ifndef OPENSSL_NO_MD5		if (crl_config.hash_old == i) {			BIO_printf(bio_out, "%08lx/n",			    X509_NAME_hash_old(X509_CRL_get_issuer(x)));		}#endif		if (crl_config.lastupdate == i) {			BIO_printf(bio_out, "lastUpdate=");			ASN1_TIME_print(bio_out,			    X509_CRL_get_lastUpdate(x));			BIO_printf(bio_out, "/n");		}		if (crl_config.nextupdate == i) {			BIO_printf(bio_out, "nextUpdate=");			if (X509_CRL_get_nextUpdate(x))				ASN1_TIME_print(bio_out,				    X509_CRL_get_nextUpdate(x));			else				BIO_printf(bio_out, "NONE");			BIO_printf(bio_out, "/n");		}		if (crl_config.fingerprint == i) {			int j;			unsigned int n;			unsigned char md[EVP_MAX_MD_SIZE];
开发者ID:bbbrumley,项目名称:openbsd,代码行数:66,


示例6: verify_callback

int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx){    X509 *err_cert;    int err, depth;    err_cert = X509_STORE_CTX_get_current_cert(ctx);    err = X509_STORE_CTX_get_error(ctx);    depth = X509_STORE_CTX_get_error_depth(ctx);    if (!verify_quiet || !ok) {        BIO_printf(bio_err, "depth=%d ", depth);        if (err_cert) {            X509_NAME_print_ex(bio_err,                               X509_get_subject_name(err_cert),                               0, XN_FLAG_ONELINE);            BIO_puts(bio_err, "/n");        } else            BIO_puts(bio_err, "<no cert>/n");    }    if (!ok) {        BIO_printf(bio_err, "verify error:num=%d:%s/n", err,                   X509_verify_cert_error_string(err));        if (verify_depth >= depth) {            if (!verify_return_error)                ok = 1;            verify_error = X509_V_OK;        } else {            ok = 0;            verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG;        }    }    switch (err) {    case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:        BIO_puts(bio_err, "issuer= ");        X509_NAME_print_ex(bio_err, X509_get_issuer_name(err_cert),                           0, XN_FLAG_ONELINE);        BIO_puts(bio_err, "/n");        break;    case X509_V_ERR_CERT_NOT_YET_VALID:    case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:        BIO_printf(bio_err, "notBefore=");        ASN1_TIME_print(bio_err, X509_get_notBefore(err_cert));        BIO_printf(bio_err, "/n");        break;    case X509_V_ERR_CERT_HAS_EXPIRED:    case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:        BIO_printf(bio_err, "notAfter=");        ASN1_TIME_print(bio_err, X509_get_notAfter(err_cert));        BIO_printf(bio_err, "/n");        break;    case X509_V_ERR_NO_EXPLICIT_POLICY:        if (!verify_quiet)            policies_print(bio_err, ctx);        break;    }    if (err == X509_V_OK && ok == 2 && !verify_quiet)        policies_print(bio_err, ctx);    if (ok && !verify_quiet)        BIO_printf(bio_err, "verify return:%d/n", ok);    return (ok);}
开发者ID:johnjohnsp1,项目名称:opensgx,代码行数:61,


示例7: x509_main

//.........这里部分代码省略.........		for (i = 0; i < sk_ASN1_OBJECT_num(reject); i++) {			objtmp = sk_ASN1_OBJECT_value(reject, i);			X509_add1_reject_object(x, objtmp);		}	}	if (num) {		for (i = 1; i <= num; i++) {			if (issuer == i) {				print_name(STDout, "issuer= ",				    X509_get_issuer_name(x), nmflag);			} else if (subject == i) {				print_name(STDout, "subject= ",				    X509_get_subject_name(x), nmflag);			} else if (serial == i) {				BIO_printf(STDout, "serial=");				i2a_ASN1_INTEGER(STDout,				    X509_get_serialNumber(x));				BIO_printf(STDout, "/n");			} else if (next_serial == i) {				BIGNUM *bnser;				ASN1_INTEGER *ser;				ser = X509_get_serialNumber(x);				bnser = ASN1_INTEGER_to_BN(ser, NULL);				if (!bnser)					goto end;				if (!BN_add_word(bnser, 1))					goto end;				ser = BN_to_ASN1_INTEGER(bnser, NULL);				if (!ser)					goto end;				BN_free(bnser);				i2a_ASN1_INTEGER(out, ser);				ASN1_INTEGER_free(ser);				BIO_puts(out, "/n");			} else if ((email == i) || (ocsp_uri == i)) {				int j;				STACK_OF(OPENSSL_STRING) *emlst;				if (email == i)					emlst = X509_get1_email(x);				else					emlst = X509_get1_ocsp(x);				for (j = 0; j < sk_OPENSSL_STRING_num(emlst); j++)					BIO_printf(STDout, "%s/n",					    sk_OPENSSL_STRING_value(emlst, j));				X509_email_free(emlst);			} else if (aliasout == i) {				unsigned char *alstr;				alstr = X509_alias_get0(x, NULL);				if (alstr)					BIO_printf(STDout, "%s/n", alstr);				else					BIO_puts(STDout, "<No Alias>/n");			} else if (subject_hash == i) {				BIO_printf(STDout, "%08lx/n", X509_subject_name_hash(x));			}#ifndef OPENSSL_NO_MD5			else if (subject_hash_old == i) {				BIO_printf(STDout, "%08lx/n", X509_subject_name_hash_old(x));			}#endif			else if (issuer_hash == i) {				BIO_printf(STDout, "%08lx/n", X509_issuer_name_hash(x));			}#ifndef OPENSSL_NO_MD5			else if (issuer_hash_old == i) {				BIO_printf(STDout, "%08lx/n", X509_issuer_name_hash_old(x));
开发者ID:LucaBongiorni,项目名称:nextgen,代码行数:67,


示例8: util_verbose

static int util_verbose(ENGINE * e, int verbose, BIO * bio_out, const char *indent){	static const int line_wrap = 78;	int num;	int ret = 0;	char *name = NULL;	char *desc = NULL;	int flags;	int xpos = 0;	STACK_OF(OPENSSL_STRING) * cmds = NULL;	if (!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||	    ((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,			0, NULL, NULL)) <= 0)) {#if 0		BIO_printf(bio_out, "%s<no control commands>/n", indent);#endif		return 1;	}	cmds = sk_OPENSSL_STRING_new_null();	if (!cmds)		goto err;	do {		int len;		/* Get the command input flags */		if ((flags = ENGINE_ctrl(e, ENGINE_CTRL_GET_CMD_FLAGS, num,			    NULL, NULL)) < 0)			goto err;		if (!(flags & ENGINE_CMD_FLAG_INTERNAL) || verbose >= 4) {			/* Get the command name */			if ((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_LEN_FROM_CMD, num,				    NULL, NULL)) <= 0)				goto err;			if ((name = malloc(len + 1)) == NULL)				goto err;			if (ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_FROM_CMD, num, name,				NULL) <= 0)				goto err;			/* Get the command description */			if ((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_LEN_FROM_CMD, num,				    NULL, NULL)) < 0)				goto err;			if (len > 0) {				if ((desc = malloc(len + 1)) == NULL)					goto err;				if (ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_FROM_CMD, num, desc,					NULL) <= 0)					goto err;			}			/* Now decide on the output */			if (xpos == 0)				/* Do an indent */				xpos = BIO_puts(bio_out, indent);			else				/* Otherwise prepend a ", " */				xpos += BIO_printf(bio_out, ", ");			if (verbose == 1) {				/* We're just listing names, comma-delimited */				if ((xpos > (int) strlen(indent)) &&				    (xpos + (int) strlen(name) > line_wrap)) {					BIO_printf(bio_out, "/n");					xpos = BIO_puts(bio_out, indent);				}				xpos += BIO_printf(bio_out, "%s", name);			} else {				/* We're listing names plus descriptions */				BIO_printf(bio_out, "%s: %s/n", name,				    (desc == NULL) ? "<no description>" : desc);				/* ... and sometimes input flags */				if ((verbose >= 3) && !util_flags(bio_out, flags,					indent))					goto err;				xpos = 0;			}		}		free(name);		name = NULL;		if (desc) {			free(desc);			desc = NULL;		}		/* Move to the next command */		num = ENGINE_ctrl(e, ENGINE_CTRL_GET_NEXT_CMD_TYPE,		    num, NULL, NULL);	} while (num > 0);	if (xpos > 0)		BIO_printf(bio_out, "/n");	ret = 1;err:	if (cmds)		sk_OPENSSL_STRING_pop_free(cmds, identity);	if (name)		free(name);	if (desc)		free(desc);	return ret;}
开发者ID:awakecoding,项目名称:libressl,代码行数:98,


示例9: MAIN

int MAIN(int argc, char **argv)	{	ENGINE *e = NULL;	char **args, *outfile = NULL;	char *passarg = NULL;	BIO *in = NULL, *out = NULL;	const EVP_CIPHER *cipher = NULL;	int outformat;	int text = 0;	EVP_PKEY *pkey=NULL;	EVP_PKEY_CTX *ctx = NULL;	char *pass = NULL;	int badarg = 0;	int ret = 1, rv;	int do_param = 0;	if (bio_err == NULL)		bio_err = BIO_new_fp (OPENSSL_TYPE__FILE_STDERR, BIO_NOCLOSE);	if (!load_config(bio_err, NULL))		goto end;	outformat=FORMAT_PEM;	ERR_load_crypto_strings();	OpenSSL_add_all_algorithms();	args = argv + 1;	while (!badarg && *args && *args[0] == '-')		{		if (!TINYCLR_SSL_STRCMP(*args,"-outform"))			{			if (args[1])				{				args++;				outformat=str2fmt(*args);				}			else badarg = 1;			}		else if (!TINYCLR_SSL_STRCMP(*args,"-pass"))			{			if (!args[1]) goto bad;			passarg= *(++args);			}#ifndef OPENSSL_NO_ENGINE		else if (TINYCLR_SSL_STRCMP(*args,"-engine") == 0)			{			if (!args[1])				goto bad;        		e = setup_engine(bio_err, *(++args), 0);			}#endif		else if (!TINYCLR_SSL_STRCMP (*args, "-paramfile"))			{			if (!args[1])				goto bad;			args++;			if (do_param == 1)				goto bad;			if (!init_keygen_file(bio_err, &ctx, *args, e))				goto end;			}		else if (!TINYCLR_SSL_STRCMP (*args, "-out"))			{			if (args[1])				{				args++;				outfile = *args;				}			else badarg = 1;			}		else if (TINYCLR_SSL_STRCMP(*args,"-algorithm") == 0)			{			if (!args[1])				goto bad;			if (!init_gen_str(bio_err, &ctx, *(++args),e, do_param))				goto end;			}		else if (TINYCLR_SSL_STRCMP(*args,"-pkeyopt") == 0)			{			if (!args[1])				goto bad;			if (!ctx)				{				BIO_puts(bio_err, "No keytype specified/n");				goto bad;				}			else if (pkey_ctrl_string(ctx, *(++args)) <= 0)				{				BIO_puts(bio_err, "parameter setting error/n");				ERR_print_errors(bio_err);				goto end;				}			}		else if (TINYCLR_SSL_STRCMP(*args,"-genparam") == 0)			{			if (ctx)				goto bad;			do_param = 1;			}//.........这里部分代码省略.........
开发者ID:AustinWise,项目名称:Netduino-Micro-Framework,代码行数:101,


示例10: OCSP_RESPONSE_print

int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags){    int i, ret = 0;    long l;    OCSP_CERTID *cid = NULL;    OCSP_BASICRESP *br = NULL;    OCSP_RESPID *rid = NULL;    OCSP_RESPDATA *rd = NULL;    OCSP_CERTSTATUS *cst = NULL;    OCSP_REVOKEDINFO *rev = NULL;    OCSP_SINGLERESP *single = NULL;    OCSP_RESPBYTES *rb = o->responseBytes;    if (BIO_puts(bp, "OCSP Response Data:/n") <= 0)        goto err;    l = ASN1_ENUMERATED_get(o->responseStatus);    if (BIO_printf(bp, "    OCSP Response Status: %s (0x%lx)/n",                   OCSP_response_status_str(l), l) <= 0)        goto err;    if (rb == NULL)        return 1;    if (BIO_puts(bp, "    Response Type: ") <= 0)        goto err;    if (i2a_ASN1_OBJECT(bp, rb->responseType) <= 0)        goto err;    if (OBJ_obj2nid(rb->responseType) != NID_id_pkix_OCSP_basic) {        BIO_puts(bp, " (unknown response type)/n");        return 1;    }    i = ASN1_STRING_length(rb->response);    if (!(br = OCSP_response_get1_basic(o)))        goto err;    rd = br->tbsResponseData;    l = ASN1_INTEGER_get(rd->version);    if (BIO_printf(bp, "/n    Version: %lu (0x%lx)/n", l + 1, l) <= 0)        goto err;    if (BIO_puts(bp, "    Responder Id: ") <= 0)        goto err;    rid = rd->responderId;    switch (rid->type) {    case V_OCSP_RESPID_NAME:        X509_NAME_print_ex(bp, rid->value.byName, 0, XN_FLAG_ONELINE);        break;    case V_OCSP_RESPID_KEY:        i2a_ASN1_STRING(bp, rid->value.byKey, V_ASN1_OCTET_STRING);        break;    }    if (BIO_printf(bp, "/n    Produced At: ") <= 0)        goto err;    if (!ASN1_GENERALIZEDTIME_print(bp, rd->producedAt))        goto err;    if (BIO_printf(bp, "/n    Responses:/n") <= 0)        goto err;    for (i = 0; i < sk_OCSP_SINGLERESP_num(rd->responses); i++) {        if (!sk_OCSP_SINGLERESP_value(rd->responses, i))            continue;        single = sk_OCSP_SINGLERESP_value(rd->responses, i);        cid = single->certId;        if (ocsp_certid_print(bp, cid, 4) <= 0)            goto err;        cst = single->certStatus;        if (BIO_printf(bp, "    Cert Status: %s",                       OCSP_cert_status_str(cst->type)) <= 0)            goto err;        if (cst->type == V_OCSP_CERTSTATUS_REVOKED) {            rev = cst->value.revoked;            if (BIO_printf(bp, "/n    Revocation Time: ") <= 0)                goto err;            if (!ASN1_GENERALIZEDTIME_print(bp, rev->revocationTime))                goto err;            if (rev->revocationReason) {                l = ASN1_ENUMERATED_get(rev->revocationReason);                if (BIO_printf(bp,                               "/n    Revocation Reason: %s (0x%lx)",                               OCSP_crl_reason_str(l), l) <= 0)                    goto err;            }        }        if (BIO_printf(bp, "/n    This Update: ") <= 0)            goto err;        if (!ASN1_GENERALIZEDTIME_print(bp, single->thisUpdate))            goto err;        if (single->nextUpdate) {            if (BIO_printf(bp, "/n    Next Update: ") <= 0)                goto err;            if (!ASN1_GENERALIZEDTIME_print(bp, single->nextUpdate))                goto err;        }        if (BIO_write(bp, "/n", 1) <= 0)            goto err;        if (!X509V3_extensions_print(bp,                                     "Response Single Extensions",                                     single->singleExtensions, flags, 8))            goto err;        if (BIO_write(bp, "/n", 1) <= 0)            goto err;    }//.........这里部分代码省略.........
开发者ID:2014lh,项目名称:node-v0.x-archive,代码行数:101,


示例11: main

	return NULL;#endif}int main(void) {	unsigned char *abuf = NULL;	//const EC_POINT *public_key;	int i, alen, aout, jj = 0;	int sockfd, new_fd;  // listen on sock_fd, new connection on new_fd	struct sockaddr_in my_addr;    // my address information	struct sockaddr_in their_addr; // connector's address information	socklen_t sin_size;	int yes = 1, numbytes;	char buf[MAXDATASIZE];	/*//////////////////////////////////////////////////////////////Generating Keys/////////////////////////////////////*/	BN_CTX *ctx = NULL;	int nid;	BIO *out;	CRYPTO_malloc_debug_init();	CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);	CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);	const char *text = "NIST Prime-Curve P-192";#ifdef OPENSSL_SYS_WIN32	CRYPTO_malloc_init();#endif	RAND_seed(rnd_seed, sizeof rnd_seed);	out = BIO_new(BIO_s_file());	if (out == NULL)		EXIT(1);	BIO_set_fp(out, stdout, BIO_NOCLOSE);	if ((ctx = BN_CTX_new()) == NULL)		goto err;	nid = NID_X9_62_prime192v1;	EC_KEY *a = NULL;    //EC_KEY is a structure	BIGNUM *x_a = NULL, *y_a = NULL;	const BIGNUM *BIG = NULL;	char *buff;	//unsigned char *abuf=NULL,*bbuf=NULL;	const EC_GROUP *group;	a = EC_KEY_new_by_curve_name(nid);	if (a == NULL)		goto err;	group = EC_KEY_get0_group(a);	//	aa=EC_POINT_new(group);	if ((x_a = BN_new()) == NULL)		goto err;	//BN_new returns a pointer to the bignum	if ((y_a = BN_new()) == NULL)		goto err;	//	if ((BIG=BN_new()) == NULL) goto err;	BIO_puts(out, "Testing key generation with ");	BIO_puts(out, text);	if (!EC_KEY_generate_key(a))		goto err;	printf("/n1 ) generating keys/n");	if (EC_METHOD_get_field_type(EC_GROUP_method_of(group))			== NID_X9_62_prime_field) {		if (!EC_POINT_get_affine_coordinates_GFp(group,				EC_KEY_get0_public_key(a), x_a, y_a, ctx))			goto err;	}	//returns the public key	else {		if (!EC_POINT_get_affine_coordinates_GF2m(group,				EC_KEY_get0_public_key(a), x_a, y_a, ctx))			goto err;	}	BIO_puts(out, "  pri 1=");	BN_print(out, EC_KEY_get0_private_key(a));	BIO_puts(out, "/n  pub 1=");	BN_print(out, x_a);	BIO_puts(out, ",");	BN_print(out, y_a);	BIO_puts(out, "/n");	/*	 printf("importnt work/n");	 //BN_print(out,x_a);	 buff=BN_bn2dec(x_a);	 printf("%s/n",buff);	 BN_dec2bn(&(x_a),buff);	 printf("%s/n",buff);	 BN_print(out,x_a);	 */	/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*///.........这里部分代码省略.........
开发者ID:AIdrifter,项目名称:EllipticCurveCryptography,代码行数:101,


示例12: proxy_puts

int proxy_puts (BIO *b, const char *str){  return BIO_puts (b->next_bio, str);}
开发者ID:DonnchaC,项目名称:tlsdate,代码行数:4,


示例13: http_serve

static int http_serve(SSL *ssl, int s){	char buf[BUFSIZZ];	int r,len;	BIO *io,*ssl_bio;	io=BIO_new(BIO_f_buffer());	ssl_bio=BIO_new(BIO_f_ssl());	BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);	BIO_push(io,ssl_bio);	while(1){		r=BIO_gets(io,buf,BUFSIZZ-1);		switch(SSL_get_error(ssl,r)){		case SSL_ERROR_NONE:			len=r;			break;		case SSL_ERROR_ZERO_RETURN:			goto shutdown;			break;		default:			berr_exit("SSL read problem");		}		/* Look for the blank line that signals		   the end of the HTTP headers */		if(!strcmp(buf,"/r/n") ||			!strcmp(buf,"/n"))			break;	}	/* Now perform renegotiation if requested */	if(client_auth==CLIENT_AUTH_REHANDSHAKE){		SSL_set_verify(ssl,SSL_VERIFY_PEER |			SSL_VERIFY_FAIL_IF_NO_PEER_CERT,0);		/* Stop the client from just resuming the		   un-authenticated session */		SSL_set_session_id_context(ssl,			(void *)&s_server_auth_session_id_context,			sizeof(s_server_auth_session_id_context));		if(SSL_renegotiate(ssl)<=0)			berr_exit("SSL renegotiation error");		if(SSL_do_handshake(ssl)<=0)			berr_exit("SSL renegotiation error");		ssl->state=SSL_ST_ACCEPT;		if(SSL_do_handshake(ssl)<=0)			berr_exit("SSL renegotiation error");	}	if((r=BIO_puts			(io,"HTTP/1.0 200 OK/r/n"))<=0)		err_exit("Write error");	if((r=BIO_puts			(io,"Server: EKRServer/r/n/r/n"))<=0)		err_exit("Write error");	if((r=BIO_puts			(io,"Server test page/r/n"))<=0)		err_exit("Write error");	if((r=BIO_flush(io))<0)		err_exit("Error flushing BIO");shutdown:	r=SSL_shutdown(ssl);	if(!r){		/* If we called SSL_shutdown() first then		   we always get return value of '0'. In		   this case, try again, but first send a		   TCP FIN to trigger the other side's		   close_notify*/		shutdown(s,1);		r=SSL_shutdown(ssl);	}	switch(r){  	case 1:		break; /* Success */	case 0:	case -1:	default:		berr_exit("Shutdown failed");	}	SSL_free(ssl);	close(s);	return(0);}
开发者ID:tecknicaltom,项目名称:ciphersuites.com,代码行数:92,


示例14: X509_REQ_print_ex

int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags,                      unsigned long cflag){    long l;    int i;    EVP_PKEY *pkey;    STACK_OF(X509_EXTENSION) *exts;    char mlch = ' ';    int nmindent = 0;    if ((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {        mlch = '/n';        nmindent = 12;    }    if (nmflags == X509_FLAG_COMPAT)        nmindent = 16;    if (!(cflag & X509_FLAG_NO_HEADER)) {        if (BIO_write(bp, "Certificate Request:/n", 21) <= 0)            goto err;        if (BIO_write(bp, "    Data:/n", 10) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_VERSION)) {        l = X509_REQ_get_version(x);        if (BIO_printf(bp, "%8sVersion: %ld (0x%lx)/n", "", l + 1, l) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_SUBJECT)) {        if (BIO_printf(bp, "        Subject:%c", mlch) <= 0)            goto err;        if (X509_NAME_print_ex(bp, X509_REQ_get_subject_name(x),            nmindent, nmflags) < 0)            goto err;        if (BIO_write(bp, "/n", 1) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_PUBKEY)) {        X509_PUBKEY *xpkey;        ASN1_OBJECT *koid;        if (BIO_write(bp, "        Subject Public Key Info:/n", 33) <= 0)            goto err;        if (BIO_printf(bp, "%12sPublic Key Algorithm: ", "") <= 0)            goto err;        xpkey = X509_REQ_get_X509_PUBKEY(x);        X509_PUBKEY_get0_param(&koid, NULL, NULL, NULL, xpkey);        if (i2a_ASN1_OBJECT(bp, koid) <= 0)            goto err;        if (BIO_puts(bp, "/n") <= 0)            goto err;        pkey = X509_REQ_get_pubkey(x);        if (pkey == NULL) {            BIO_printf(bp, "%12sUnable to load Public Key/n", "");            ERR_print_errors(bp);        } else {            EVP_PKEY_print_public(bp, pkey, 16, NULL);            EVP_PKEY_free(pkey);        }    }    if (!(cflag & X509_FLAG_NO_ATTRIBUTES)) {        /* may not be */        if (BIO_printf(bp, "%8sAttributes:/n", "") <= 0)            goto err;        if (X509_REQ_get_attr_count(x) == 0) {            if (BIO_printf(bp, "%12sa0:00/n", "") <= 0)                goto err;        } else {            for (i = 0; i < X509_REQ_get_attr_count(x); i++) {                ASN1_TYPE *at;                X509_ATTRIBUTE *a;                ASN1_BIT_STRING *bs = NULL;                ASN1_OBJECT *aobj;                int j, type = 0, count = 1, ii = 0;                a = X509_REQ_get_attr(x, i);                aobj = X509_ATTRIBUTE_get0_object(a);                if (X509_REQ_extension_nid(OBJ_obj2nid(aobj)))                    continue;                if (BIO_printf(bp, "%12s", "") <= 0)                    goto err;                if ((j = i2a_ASN1_OBJECT(bp, aobj)) > 0) {                    ii = 0;                    count = X509_ATTRIBUTE_count(a); get_next:                    at = X509_ATTRIBUTE_get0_type(a, ii);                    type = at->type;                    bs = at->value.asn1_string;                }                for (j = 25 - j; j > 0; j--)                    if (BIO_write(bp, " ", 1) != 1)                        goto err;                if (BIO_puts(bp, ":") <= 0)                    goto err;                if ((type == V_ASN1_PRINTABLESTRING) ||                    (type == V_ASN1_T61STRING) ||                    (type == V_ASN1_IA5STRING)) {//.........这里部分代码省略.........
开发者ID:AndreV84,项目名称:openssl,代码行数:101,


示例15: ssl_print_extension

static int ssl_print_extension(BIO *bio, int indent, int server, int extype,                               const unsigned char *ext, size_t extlen){    size_t xlen;    BIO_indent(bio, indent, 80);    BIO_printf(bio, "extension_type=%s(%d), length=%d/n",               ssl_trace_str(extype, ssl_exts_tbl), extype, (int)extlen);    switch (extype) {    case TLSEXT_TYPE_ec_point_formats:        if (extlen < 1)            return 0;        xlen = ext[0];        if (extlen != xlen + 1)            return 0;        return ssl_trace_list(bio, indent + 2,                              ext + 1, xlen, 1, ssl_point_tbl);    case TLSEXT_TYPE_elliptic_curves:        if (extlen < 2)            return 0;        xlen = (ext[0] << 8) | ext[1];        if (extlen != xlen + 2)            return 0;        return ssl_trace_list(bio, indent + 2,                              ext + 2, xlen, 2, ssl_curve_tbl);    case TLSEXT_TYPE_signature_algorithms:        if (extlen < 2)            return 0;        xlen = (ext[0] << 8) | ext[1];        if (extlen != xlen + 2)            return 0;        if (xlen & 1)            return 0;        ext += 2;        while (xlen > 0) {            BIO_indent(bio, indent + 2, 80);            BIO_printf(bio, "%s+%s (%d+%d)/n",                       ssl_trace_str(ext[0], ssl_md_tbl),                       ssl_trace_str(ext[1], ssl_sig_tbl), ext[0], ext[1]);            xlen -= 2;            ext += 2;        }        break;    case TLSEXT_TYPE_renegotiate:        if (extlen < 1)            return 0;        xlen = ext[0];        if (xlen + 1 != extlen)            return 0;        ext++;        if (xlen) {            if (server) {                if (xlen & 1)                    return 0;                xlen >>= 1;            }            ssl_print_hex(bio, indent + 4, "client_verify_data", ext, xlen);            if (server) {                ext += xlen;                ssl_print_hex(bio, indent + 4,                              "server_verify_data", ext, xlen);            }        } else {            BIO_indent(bio, indent + 4, 80);            BIO_puts(bio, "<EMPTY>/n");        }        break;    case TLSEXT_TYPE_heartbeat:        if (extlen != 1)            return 0;        BIO_indent(bio, indent + 2, 80);        BIO_printf(bio, "HeartbeatMode: %s/n",                   ssl_trace_str(ext[0], ssl_hb_tbl));        break;    case TLSEXT_TYPE_session_ticket:        if (extlen != 0)            ssl_print_hex(bio, indent + 4, "ticket", ext, extlen);        break;    default:        BIO_dump_indent(bio, (char *)ext, extlen, indent + 2);    }
开发者ID:SpongeEdmund,项目名称:openssl,代码行数:87,


示例16: main

//.........这里部分代码省略.........    SSL_library_init();    conf = NCONF_new(NULL);    if (NCONF_load(conf, "connect.cnf", &errline) <= 0) {        if (errline <= 0)            fprintf(stderr, "Error processing config file/n");        else            fprintf(stderr, "Error on line %ld/n", errline);        goto end;    }    sect = NCONF_get_section(conf, "default");    if (sect == NULL) {        fprintf(stderr, "Error retrieving default section/n");        goto end;    }    ctx = SSL_CTX_new(SSLv23_client_method());    cctx = SSL_CONF_CTX_new();    SSL_CONF_CTX_set_flags(cctx, SSL_CONF_FLAG_CLIENT);    SSL_CONF_CTX_set_flags(cctx, SSL_CONF_FLAG_FILE);    SSL_CONF_CTX_set_ssl_ctx(cctx, ctx);    for (i = 0; i < sk_CONF_VALUE_num(sect); i++) {        cnf = sk_CONF_VALUE_value(sect, i);        rv = SSL_CONF_cmd(cctx, cnf->name, cnf->value);        if (rv > 0)            continue;        if (rv != -2) {            fprintf(stderr, "Error processing %s = %s/n",                    cnf->name, cnf->value);            ERR_print_errors_fp(stderr);            goto end;        }        if (!strcmp(cnf->name, "Connect")) {            connect_str = cnf->value;        } else {            fprintf(stderr, "Unknown configuration option %s/n", cnf->name);            goto end;        }    }    if (!SSL_CONF_CTX_finish(cctx)) {        fprintf(stderr, "Finish error/n");        ERR_print_errors_fp(stderr);        goto err;    }    /*     * We'd normally set some stuff like the verify paths and * mode here     * because as things stand this will connect to * any server whose     * certificate is signed by any CA.     */    sbio = BIO_new_ssl_connect(ctx);    BIO_get_ssl(sbio, &ssl);    if (!ssl) {        fprintf(stderr, "Can't locate SSL pointer/n");        goto end;    }    /* Don't want any retries */    SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);    /* We might want to do other things with ssl here */    BIO_set_conn_hostname(sbio, connect_str);    out = BIO_new_fp(stdout, BIO_NOCLOSE);    if (BIO_do_connect(sbio) <= 0) {        fprintf(stderr, "Error connecting to server/n");        ERR_print_errors_fp(stderr);        goto end;    }    if (BIO_do_handshake(sbio) <= 0) {        fprintf(stderr, "Error establishing SSL connection/n");        ERR_print_errors_fp(stderr);        goto end;    }    /* Could examine ssl here to get connection info */    BIO_puts(sbio, "GET / HTTP/1.0/n/n");    for (;;) {        len = BIO_read(sbio, tmpbuf, 1024);        if (len <= 0)            break;        BIO_write(out, tmpbuf, len);    } end:    SSL_CONF_CTX_free(cctx);    BIO_free_all(sbio);    BIO_free(out);    NCONF_free(conf);    return 0;}
开发者ID:Orav,项目名称:kbengine,代码行数:101,


示例17: main

int main(int argc, char *argv[])	{	BN_GENCB _cb;	DH *a;	DH *b=NULL;	char buf[12];	unsigned char *abuf=NULL,*bbuf=NULL;	int i,alen,blen,aout,bout,ret=1;	BIO *out;	CRYPTO_malloc_debug_init();	CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);	CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);#ifdef OPENSSL_SYS_WIN32	CRYPTO_malloc_init();#endif	RAND_seed(rnd_seed, sizeof rnd_seed);	out=BIO_new(BIO_s_file());	if (out == NULL) EXIT(1);	BIO_set_fp(out,stdout,BIO_NOCLOSE);	BN_GENCB_set(&_cb, &cb, out);	if(((a = DH_new()) == NULL) || !DH_generate_parameters_ex(a, 64,				DH_GENERATOR_5, &_cb))		goto err;	if (!DH_check(a, &i)) goto err;	if (i & DH_CHECK_P_NOT_PRIME)		BIO_puts(out, "p value is not prime/n");	if (i & DH_CHECK_P_NOT_SAFE_PRIME)		BIO_puts(out, "p value is not a safe prime/n");	if (i & DH_UNABLE_TO_CHECK_GENERATOR)		BIO_puts(out, "unable to check the generator value/n");	if (i & DH_NOT_SUITABLE_GENERATOR)		BIO_puts(out, "the g value is not a generator/n");	BIO_puts(out,"/np    =");	BN_print(out,a->p);	BIO_puts(out,"/ng    =");	BN_print(out,a->g);	BIO_puts(out,"/n");	b=DH_new();	if (b == NULL) goto err;	b->p=BN_dup(a->p);	b->g=BN_dup(a->g);	if ((b->p == NULL) || (b->g == NULL)) goto err;	/* Set a to run with normal modexp and b to use constant time */	a->flags &= ~DH_FLAG_NO_EXP_CONSTTIME;	b->flags |= DH_FLAG_NO_EXP_CONSTTIME;	if (!DH_generate_key(a)) goto err;	BIO_puts(out,"pri 1=");	BN_print(out,a->priv_key);	BIO_puts(out,"/npub 1=");	BN_print(out,a->pub_key);	BIO_puts(out,"/n");	if (!DH_generate_key(b)) goto err;	BIO_puts(out,"pri 2=");	BN_print(out,b->priv_key);	BIO_puts(out,"/npub 2=");	BN_print(out,b->pub_key);	BIO_puts(out,"/n");	alen=DH_size(a);	abuf=(unsigned char *)OPENSSL_malloc(alen);	aout=DH_compute_key(abuf,b->pub_key,a);	BIO_puts(out,"key1 =");	for (i=0; i<aout; i++)		{		op_sprintf(buf,"%02X",abuf[i]);		BIO_puts(out,buf);		}	BIO_puts(out,"/n");	blen=DH_size(b);	bbuf=(unsigned char *)OPENSSL_malloc(blen);	bout=DH_compute_key(bbuf,a->pub_key,b);	BIO_puts(out,"key2 =");	for (i=0; i<bout; i++)		{		op_sprintf(buf,"%02X",bbuf[i]);		BIO_puts(out,buf);		}	BIO_puts(out,"/n");	if ((aout < 4) || (bout != aout) || (op_memcmp(abuf,bbuf,aout) != 0))		{		fprintf(stderr,"Error in DH routines/n");		ret=1;		}	else		ret=0;//.........这里部分代码省略.........
开发者ID:prestocore,项目名称:browser,代码行数:101,


示例18: MAIN

//.........这里部分代码省略.........	if (bio_err == NULL)		bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);	STDout=BIO_new_fp(stdout,BIO_NOCLOSE);#ifdef OPENSSL_SYS_VMS	{	BIO *tmpbio = BIO_new(BIO_f_linebuffer());	STDout = BIO_push(tmpbio, STDout);	}#endif	argc--;	argv++;	while (argc >= 1)		{		if (strcmp(*argv,"-v") == 0)			verbose=1;#ifndef OPENSSL_NO_SSL2		else if (strcmp(*argv,"-ssl2") == 0)			meth=SSLv2_client_method();#endif#ifndef OPENSSL_NO_SSL3		else if (strcmp(*argv,"-ssl3") == 0)			meth=SSLv3_client_method();#endif#ifndef OPENSSL_NO_TLS1		else if (strcmp(*argv,"-tls1") == 0)			meth=TLSv1_client_method();#endif		else if ((strncmp(*argv,"-h",2) == 0) ||			 (strcmp(*argv,"-?") == 0))			{			badops=1;			break;			}		else			{			ciphers= *argv;			}		argc--;		argv++;		}	if (badops)		{		for (pp=ciphers_usage; (*pp != NULL); pp++)			BIO_printf(bio_err,"%s",*pp);		goto end;		}	OpenSSL_add_ssl_algorithms();	ctx=SSL_CTX_new(meth);	if (ctx == NULL) goto err;	if (ciphers != NULL) {		if(!SSL_CTX_set_cipher_list(ctx,ciphers)) {			BIO_printf(bio_err, "Error in cipher list/n");			goto err;		}	}	ssl=SSL_new(ctx);	if (ssl == NULL) goto err;	if (!verbose)		{		for (i=0; ; i++)			{			p=SSL_get_cipher_list(ssl,i);			if (p == NULL) break;			if (i != 0) BIO_printf(STDout,":");			BIO_printf(STDout,"%s",p);			}		BIO_printf(STDout,"/n");		}	else		{		sk=SSL_get_ciphers(ssl);		for (i=0; i<sk_SSL_CIPHER_num(sk); i++)			{			BIO_puts(STDout,SSL_CIPHER_description(				sk_SSL_CIPHER_value(sk,i),				buf,sizeof buf));			}		}	ret=0;	if (0)		{err:		SSL_load_error_strings();		ERR_print_errors(bio_err);		}end:	if (ctx != NULL) SSL_CTX_free(ctx);	if (ssl != NULL) SSL_free(ssl);	if (STDout != NULL) BIO_free_all(STDout);	apps_shutdown();	OPENSSL_EXIT(ret);	}
开发者ID:LucidOne,项目名称:Rovio,代码行数:101,


示例19: X509_print_ex

//.........这里部分代码省略.........    }    if (!(cflag & X509_FLAG_NO_SIGNAME)) {        const X509_ALGOR *tsig_alg = X509_get0_tbs_sigalg(x);        if (X509_signature_print(bp, tsig_alg, NULL) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_ISSUER)) {        if (BIO_printf(bp, "        Issuer:%c", mlch) <= 0)            goto err;        if (X509_NAME_print_ex(bp, X509_get_issuer_name(x), nmindent, nmflags)            < 0)            goto err;        if (BIO_write(bp, "/n", 1) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_VALIDITY)) {        if (BIO_write(bp, "        Validity/n", 17) <= 0)            goto err;        if (BIO_write(bp, "            Not Before: ", 24) <= 0)            goto err;        if (!ASN1_TIME_print(bp, X509_get0_notBefore(x)))            goto err;        if (BIO_write(bp, "/n            Not After : ", 25) <= 0)            goto err;        if (!ASN1_TIME_print(bp, X509_get0_notAfter(x)))            goto err;        if (BIO_write(bp, "/n", 1) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_SUBJECT)) {        if (BIO_printf(bp, "        Subject:%c", mlch) <= 0)            goto err;        if (X509_NAME_print_ex            (bp, X509_get_subject_name(x), nmindent, nmflags) < 0)            goto err;        if (BIO_write(bp, "/n", 1) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_PUBKEY)) {        X509_PUBKEY *xpkey = X509_get_X509_PUBKEY(x);        ASN1_OBJECT *xpoid;        X509_PUBKEY_get0_param(&xpoid, NULL, NULL, NULL, xpkey);        if (BIO_write(bp, "        Subject Public Key Info:/n", 33) <= 0)            goto err;        if (BIO_printf(bp, "%12sPublic Key Algorithm: ", "") <= 0)            goto err;        if (i2a_ASN1_OBJECT(bp, xpoid) <= 0)            goto err;        if (BIO_puts(bp, "/n") <= 0)            goto err;        pkey = X509_get0_pubkey(x);        if (pkey == NULL) {            BIO_printf(bp, "%12sUnable to load Public Key/n", "");            ERR_print_errors(bp);        } else {            EVP_PKEY_print_public(bp, pkey, 16, NULL);        }    }    if (!(cflag & X509_FLAG_NO_IDS)) {        const ASN1_BIT_STRING *iuid, *suid;        X509_get0_uids(x, &iuid, &suid);        if (iuid != NULL) {            if (BIO_printf(bp, "%8sIssuer Unique ID: ", "") <= 0)                goto err;            if (!X509_signature_dump(bp, iuid, 12))                goto err;        }        if (suid != NULL) {            if (BIO_printf(bp, "%8sSubject Unique ID: ", "") <= 0)                goto err;            if (!X509_signature_dump(bp, suid, 12))                goto err;        }    }    if (!(cflag & X509_FLAG_NO_EXTENSIONS))        X509V3_extensions_print(bp, "X509v3 extensions",                                X509_get0_extensions(x), cflag, 8);    if (!(cflag & X509_FLAG_NO_SIGDUMP)) {        const X509_ALGOR *sig_alg;        const ASN1_BIT_STRING *sig;        X509_get0_signature(&sig, &sig_alg, x);        if (X509_signature_print(bp, sig_alg, sig) <= 0)            goto err;    }    if (!(cflag & X509_FLAG_NO_AUX)) {        if (!X509_aux_print(bp, x, 0))            goto err;    }    ret = 1; err:    OPENSSL_free(m);    return ret;}
开发者ID:lullajd,项目名称:openssl,代码行数:101,


示例20: rand_main

int rand_main(int argc, char **argv){    ENGINE *e = NULL;    BIO *out = NULL;    char *outfile = NULL, *prog;    OPTION_CHOICE o;    int format = FORMAT_BINARY, i, num = -1, r, ret = 1;    prog = opt_init(argc, argv, rand_options);    while ((o = opt_next()) != OPT_EOF) {        switch (o) {        case OPT_EOF:        case OPT_ERR: opthelp:            BIO_printf(bio_err, "%s: Use -help for summary./n", prog);            goto end;        case OPT_HELP:            opt_help(rand_options);            ret = 0;            goto end;        case OPT_OUT:            outfile = opt_arg();            break;        case OPT_ENGINE:            e = setup_engine(opt_arg(), 0);            break;        case OPT_R_CASES:            if (!opt_rand(o))                goto end;            break;        case OPT_BASE64:            format = FORMAT_BASE64;            break;        case OPT_HEX:            format = FORMAT_TEXT;            break;        }    }    argc = opt_num_rest();    argv = opt_rest();    if (argc != 1 || !opt_int(argv[0], &num) || num < 0)        goto opthelp;    out = bio_open_default(outfile, 'w', format);    if (out == NULL)        goto end;    if (format == FORMAT_BASE64) {        BIO *b64 = BIO_new(BIO_f_base64());        if (b64 == NULL)            goto end;        out = BIO_push(b64, out);    }    while (num > 0) {        unsigned char buf[4096];        int chunk;        chunk = num;        if (chunk > (int)sizeof(buf))            chunk = sizeof buf;        r = RAND_bytes(buf, chunk);        if (r <= 0)            goto end;        if (format != FORMAT_TEXT) {            if (BIO_write(out, buf, chunk) != chunk)                goto end;        } else {            for (i = 0; i < chunk; i++)                if (BIO_printf(out, "%02x", buf[i]) != 2)                    goto end;        }        num -= chunk;    }    if (format == FORMAT_TEXT)        BIO_puts(out, "/n");    if (BIO_flush(out) <= 0)        goto end;    ret = 0; end:    if (ret != 0)        ERR_print_errors(bio_err);    release_engine(e);    BIO_free_all(out);    return (ret);}
开发者ID:Vonage,项目名称:openssl,代码行数:89,


示例21: MAIN

//.........这里部分代码省略.........		X509_OBJECT_free_contents(&xobj);		if(!pkey) {			BIO_printf(bio_err,				"Error getting CRL issuer public key/n");			goto end;		}		i = X509_CRL_verify(x, pkey);		EVP_PKEY_free(pkey);		if(i < 0) goto end;		if(i == 0) BIO_printf(bio_err, "verify failure/n");		else BIO_printf(bio_err, "verify OK/n");	}	if (num)		{		for (i=1; i<=num; i++)			{			if (issuer == i)				{				print_name(bio_out, "issuer=", X509_CRL_get_issuer(x), nmflag);				}			if (crlnumber == i)				{				ASN1_INTEGER *crlnum;				crlnum = X509_CRL_get_ext_d2i(x, NID_crl_number,							      NULL, NULL);				BIO_printf(bio_out,"crlNumber=");				if (crlnum)					{					i2a_ASN1_INTEGER(bio_out, crlnum);					ASN1_INTEGER_free(crlnum);					}				else					BIO_puts(bio_out, "<NONE>");				BIO_printf(bio_out,"/n");				}			if (hash == i)				{				BIO_printf(bio_out,"%08lx/n",					X509_NAME_hash(X509_CRL_get_issuer(x)));				}			if (lastupdate == i)				{				BIO_printf(bio_out,"lastUpdate=");				ASN1_TIME_print(bio_out,						X509_CRL_get_lastUpdate(x));				BIO_printf(bio_out,"/n");				}			if (nextupdate == i)				{				BIO_printf(bio_out,"nextUpdate=");				if (X509_CRL_get_nextUpdate(x)) 					ASN1_TIME_print(bio_out,						X509_CRL_get_nextUpdate(x));				else					BIO_printf(bio_out,"NONE");				BIO_printf(bio_out,"/n");				}			if (fingerprint == i)				{				int j;				unsigned int n;				unsigned char md[EVP_MAX_MD_SIZE];				if (!X509_CRL_digest(x,digest,md,&n))					{
开发者ID:002301,项目名称:node,代码行数:67,


示例22: sess_id_main

intsess_id_main(int argc, char **argv){	SSL_SESSION *x = NULL;	X509 *peer = NULL;	int ret = 1, i;	BIO *out = NULL;	memset(&sess_id_config, 0, sizeof(sess_id_config));	sess_id_config.informat = FORMAT_PEM;	sess_id_config.outformat = FORMAT_PEM;	if (options_parse(argc, argv, sess_id_options, NULL, NULL) != 0) {		sess_id_usage();		return (1);	}	x = load_sess_id(sess_id_config.infile, sess_id_config.informat);	if (x == NULL) {		goto end;	}	peer = SSL_SESSION_get0_peer(x);	if (sess_id_config.context) {		size_t ctx_len = strlen(sess_id_config.context);		if (ctx_len > SSL_MAX_SID_CTX_LENGTH) {			BIO_printf(bio_err, "Context too long/n");			goto end;		}		SSL_SESSION_set1_id_context(x,		    (unsigned char *)sess_id_config.context, ctx_len);	}	if (!sess_id_config.noout || sess_id_config.text) {		out = BIO_new(BIO_s_file());		if (out == NULL) {			ERR_print_errors(bio_err);			goto end;		}		if (sess_id_config.outfile == NULL) {			BIO_set_fp(out, stdout, BIO_NOCLOSE);		} else {			if (BIO_write_filename(out, sess_id_config.outfile)			    <= 0) {				perror(sess_id_config.outfile);				goto end;			}		}	}	if (sess_id_config.text) {		SSL_SESSION_print(out, x);		if (sess_id_config.cert) {			if (peer == NULL)				BIO_puts(out, "No certificate present/n");			else				X509_print(out, peer);		}	}	if (!sess_id_config.noout && !sess_id_config.cert) {		if (sess_id_config.outformat == FORMAT_ASN1)			i = i2d_SSL_SESSION_bio(out, x);		else if (sess_id_config.outformat == FORMAT_PEM)			i = PEM_write_bio_SSL_SESSION(out, x);		else {			BIO_printf(bio_err,			    "bad output format specified for outfile/n");			goto end;		}		if (!i) {			BIO_printf(bio_err, "unable to write SSL_SESSION/n");			goto end;		}	} else if (!sess_id_config.noout && (peer != NULL)) {		/* just print the certificate */		if (sess_id_config.outformat == FORMAT_ASN1)			i = (int) i2d_X509_bio(out, peer);		else if (sess_id_config.outformat == FORMAT_PEM)			i = PEM_write_bio_X509(out, peer);		else {			BIO_printf(bio_err,			    "bad output format specified for outfile/n");			goto end;		}		if (!i) {			BIO_printf(bio_err, "unable to write X509/n");			goto end;		}	}	ret = 0;end:	BIO_free_all(out);	SSL_SESSION_free(x);	return (ret);}
开发者ID:Heratom,项目名称:Firefly-project,代码行数:98,


示例23: x509_main

//.........这里部分代码省略.........    if (badsig) {        const ASN1_BIT_STRING *signature;        X509_get0_signature(&signature, NULL, x);        corrupt_signature(signature);    }    if (num) {        for (i = 1; i <= num; i++) {            if (issuer == i) {                print_name(out, "issuer=", X509_get_issuer_name(x), nmflag);            } else if (subject == i) {                print_name(out, "subject=",                           X509_get_subject_name(x), nmflag);            } else if (serial == i) {                BIO_printf(out, "serial=");                i2a_ASN1_INTEGER(out, X509_get_serialNumber(x));                BIO_printf(out, "/n");            } else if (next_serial == i) {                ASN1_INTEGER *ser = X509_get_serialNumber(x);                BIGNUM *bnser = ASN1_INTEGER_to_BN(ser, NULL);                if (!bnser)                    goto end;                if (!BN_add_word(bnser, 1))                    goto end;                ser = BN_to_ASN1_INTEGER(bnser, NULL);                if (!ser)                    goto end;                BN_free(bnser);                i2a_ASN1_INTEGER(out, ser);                ASN1_INTEGER_free(ser);                BIO_puts(out, "/n");            } else if ((email == i) || (ocsp_uri == i)) {                int j;                STACK_OF(OPENSSL_STRING) *emlst;                if (email == i)                    emlst = X509_get1_email(x);                else                    emlst = X509_get1_ocsp(x);                for (j = 0; j < sk_OPENSSL_STRING_num(emlst); j++)                    BIO_printf(out, "%s/n",                               sk_OPENSSL_STRING_value(emlst, j));                X509_email_free(emlst);            } else if (aliasout == i) {                unsigned char *alstr;                alstr = X509_alias_get0(x, NULL);                if (alstr)                    BIO_printf(out, "%s/n", alstr);                else                    BIO_puts(out, "<No Alias>/n");            } else if (subject_hash == i) {                BIO_printf(out, "%08lx/n", X509_subject_name_hash(x));            }#ifndef OPENSSL_NO_MD5            else if (subject_hash_old == i) {                BIO_printf(out, "%08lx/n", X509_subject_name_hash_old(x));            }#endif            else if (issuer_hash == i) {                BIO_printf(out, "%08lx/n", X509_issuer_name_hash(x));            }#ifndef OPENSSL_NO_MD5            else if (issuer_hash_old == i) {                BIO_printf(out, "%08lx/n", X509_issuer_name_hash_old(x));
开发者ID:hydnoracoin,项目名称:Open-Source-Cryptocurrency-Exchange,代码行数:67,


示例24: MAIN

//.........这里部分代码省略.........#endif        else if ((strncmp(*argv, "-h", 2) == 0) || (strcmp(*argv, "-?") == 0)) {            badops = 1;            break;        } else {            ciphers = *argv;        }        argc--;        argv++;    }    if (badops) {        for (pp = ciphers_usage; (*pp != NULL); pp++)            BIO_printf(bio_err, "%s", *pp);        goto end;    }    OpenSSL_add_ssl_algorithms();    ctx = SSL_CTX_new(meth);    if (ctx == NULL)        goto err;    if (ciphers != NULL) {        if (!SSL_CTX_set_cipher_list(ctx, ciphers)) {            BIO_printf(bio_err, "Error in cipher list/n");            goto err;        }    }    ssl = SSL_new(ctx);    if (ssl == NULL)        goto err;    if (!verbose) {        for (i = 0;; i++) {            p = SSL_get_cipher_list(ssl, i);            if (p == NULL)                break;            if (i != 0)                BIO_printf(STDout, ":");            BIO_printf(STDout, "%s", p);        }        BIO_printf(STDout, "/n");    } else {                    /* verbose */        sk = SSL_get_ciphers(ssl);        for (i = 0; i < sk_SSL_CIPHER_num(sk); i++) {            SSL_CIPHER *c;            c = sk_SSL_CIPHER_value(sk, i);            if (Verbose) {                unsigned long id = SSL_CIPHER_get_id(c);                int id0 = (int)(id >> 24);                int id1 = (int)((id >> 16) & 0xffL);                int id2 = (int)((id >> 8) & 0xffL);                int id3 = (int)(id & 0xffL);                if ((id & 0xff000000L) == 0x02000000L) {                    /* SSL2 cipher */                    BIO_printf(STDout, "     0x%02X,0x%02X,0x%02X - ", id1,                               id2, id3);                } else if ((id & 0xff000000L) == 0x03000000L) {                    /* SSL3 cipher */                    BIO_printf(STDout, "          0x%02X,0x%02X - ", id2,                               id3);                } else {                    /* whatever */                    BIO_printf(STDout, "0x%02X,0x%02X,0x%02X,0x%02X - ", id0,                               id1, id2, id3);                }            }#ifndef OPENSSL_NO_SSL_TRACE            if (stdname) {                const char *nm = SSL_CIPHER_standard_name(c);                if (nm == NULL)                    nm = "UNKNOWN";                BIO_printf(STDout, "%s - ", nm);            }#endif            BIO_puts(STDout, SSL_CIPHER_description(c, buf, sizeof buf));        }    }    ret = 0;    if (0) { err:        SSL_load_error_strings();        ERR_print_errors(bio_err);    } end:    if (ctx != NULL)        SSL_CTX_free(ctx);    if (ssl != NULL)        SSL_free(ssl);    if (STDout != NULL)        BIO_free_all(STDout);    apps_shutdown();    OPENSSL_EXIT(ret);}
开发者ID:119120119,项目名称:node,代码行数:101,


示例25: X509_print_ex

int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)	{	long l;	int ret=0,i;	char *m=NULL,mlch = ' ';	int nmindent = 0;	X509_CINF *ci;	ASN1_INTEGER *bs;	EVP_PKEY *pkey=NULL;	const char *neg;	if((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {			mlch = '/n';			nmindent = 12;	}	if(nmflags == X509_FLAG_COMPAT)		nmindent = 16;	ci=x->cert_info;	if(!(cflag & X509_FLAG_NO_HEADER))		{		if (BIO_write(bp,"Certificate:/n",13) <= 0) goto err;		if (BIO_write(bp,"    Data:/n",10) <= 0) goto err;		}	if(!(cflag & X509_FLAG_NO_VERSION))		{		l=X509_get_version(x);		if (BIO_printf(bp,"%8sVersion: %lu (0x%lx)/n","",l+1,l) <= 0) goto err;		}	if(!(cflag & X509_FLAG_NO_SERIAL))		{		if (BIO_write(bp,"        Serial Number:",22) <= 0) goto err;		bs=X509_get_serialNumber(x);		if (bs->length <= (int)sizeof(long))			{			l=ASN1_INTEGER_get(bs);			if (bs->type == V_ASN1_NEG_INTEGER)				{				l= -l;				neg="-";				}			else				neg="";			if (BIO_printf(bp," %s%lu (%s0x%lx)/n",neg,l,neg,l) <= 0)				goto err;			}		else			{			neg=(bs->type == V_ASN1_NEG_INTEGER)?" (Negative)":"";			if (BIO_printf(bp,"/n%12s%s","",neg) <= 0) goto err;			for (i=0; i<bs->length; i++)				{				if (BIO_printf(bp,"%02x%c",bs->data[i],					((i+1 == bs->length)?'/n':':')) <= 0)					goto err;				}			}		}	if(!(cflag & X509_FLAG_NO_SIGNAME))		{		if (X509_signature_print(bp, ci->signature, NULL) <= 0)			goto err;		}	if(!(cflag & X509_FLAG_NO_ISSUER))		{		if (BIO_printf(bp,"        Issuer:%c",mlch) <= 0) goto err;		if (X509_NAME_print_ex(bp,X509_get_issuer_name(x),nmindent, nmflags) < 0) goto err;		if (BIO_write(bp,"/n",1) <= 0) goto err;		}	if(!(cflag & X509_FLAG_NO_VALIDITY))		{		if (BIO_write(bp,"        Validity/n",17) <= 0) goto err;		if (BIO_write(bp,"            Not Before: ",24) <= 0) goto err;		if (!ASN1_TIME_print(bp,X509_get_notBefore(x))) goto err;		if (BIO_write(bp,"/n            Not After : ",25) <= 0) goto err;		if (!ASN1_TIME_print(bp,X509_get_notAfter(x))) goto err;		if (BIO_write(bp,"/n",1) <= 0) goto err;		}	if(!(cflag & X509_FLAG_NO_SUBJECT))		{		if (BIO_printf(bp,"        Subject:%c",mlch) <= 0) goto err;		if (X509_NAME_print_ex(bp,X509_get_subject_name(x),nmindent, nmflags) < 0) goto err;		if (BIO_write(bp,"/n",1) <= 0) goto err;		}	if(!(cflag & X509_FLAG_NO_PUBKEY))		{		if (BIO_write(bp,"        Subject Public Key Info:/n",33) <= 0)			goto err;		if (BIO_printf(bp,"%12sPublic Key Algorithm: ","") <= 0)			goto err;		if (i2a_ASN1_OBJECT(bp, ci->key->algor->algorithm) <= 0)			goto err;		if (BIO_puts(bp, "/n") <= 0)//.........这里部分代码省略.........
开发者ID:360ground,项目名称:Meda.et,代码行数:101,


示例26: test_ecdh_curve

static int test_ecdh_curve(int nid, BN_CTX *ctx, BIO *out){    EC_KEY *a = NULL;    EC_KEY *b = NULL;    BIGNUM *x_a = NULL, *y_a = NULL, *x_b = NULL, *y_b = NULL;    char buf[12];    unsigned char *abuf = NULL, *bbuf = NULL;    int i, alen, blen, aout, bout, ret = 0;    const EC_GROUP *group;    a = EC_KEY_new_by_curve_name(nid);    b = EC_KEY_new_by_curve_name(nid);    if (a == NULL || b == NULL)        goto err;    group = EC_KEY_get0_group(a);    if ((x_a = BN_new()) == NULL)        goto err;    if ((y_a = BN_new()) == NULL)        goto err;    if ((x_b = BN_new()) == NULL)        goto err;    if ((y_b = BN_new()) == NULL)        goto err;    BIO_puts(out, "Testing key generation with ");    BIO_puts(out, OBJ_nid2sn(nid));# ifdef NOISY    BIO_puts(out, "/n");# else    (void)BIO_flush(out);# endif    if (!EC_KEY_generate_key(a))        goto err;    if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) ==        NID_X9_62_prime_field) {        if (!EC_POINT_get_affine_coordinates_GFp            (group, EC_KEY_get0_public_key(a), x_a, y_a, ctx))            goto err;    }# ifndef OPENSSL_NO_EC2M    else {        if (!EC_POINT_get_affine_coordinates_GF2m(group,                                                  EC_KEY_get0_public_key(a),                                                  x_a, y_a, ctx))            goto err;    }# endif# ifdef NOISY    BIO_puts(out, "  pri 1=");    BN_print(out, a->priv_key);    BIO_puts(out, "/n  pub 1=");    BN_print(out, x_a);    BIO_puts(out, ",");    BN_print(out, y_a);    BIO_puts(out, "/n");# else    BIO_printf(out, " .");    (void)BIO_flush(out);# endif    if (!EC_KEY_generate_key(b))        goto err;    if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) ==        NID_X9_62_prime_field) {        if (!EC_POINT_get_affine_coordinates_GFp            (group, EC_KEY_get0_public_key(b), x_b, y_b, ctx))            goto err;    }# ifndef OPENSSL_NO_EC2M    else {        if (!EC_POINT_get_affine_coordinates_GF2m(group,                                                  EC_KEY_get0_public_key(b),                                                  x_b, y_b, ctx))            goto err;    }# endif# ifdef NOISY    BIO_puts(out, "  pri 2=");    BN_print(out, b->priv_key);    BIO_puts(out, "/n  pub 2=");    BN_print(out, x_b);    BIO_puts(out, ",");    BN_print(out, y_b);    BIO_puts(out, "/n");# else    BIO_printf(out, ".");    (void)BIO_flush(out);# endif    alen = KDF1_SHA1_len;    abuf = OPENSSL_malloc(alen);    aout =        ECDH_compute_key(abuf, alen, EC_KEY_get0_public_key(b), a, KDF1_SHA1);//.........这里部分代码省略.........
开发者ID:277800076,项目名称:openssl,代码行数:101,


示例27: MAIN

//.........这里部分代码省略.........            if (!hex)                hex = 1;            else                badopt = 1;        } else if (isdigit((unsigned char)argv[i][0])) {            if (num < 0) {                r = sscanf(argv[i], "%d", &num);                if (r == 0 || num < 0)                    badopt = 1;            } else                badopt = 1;        } else            badopt = 1;    }    if (hex && base64)        badopt = 1;    if (num < 0)        badopt = 1;    if (badopt) {        BIO_printf(bio_err, "Usage: rand [options] num/n");        BIO_printf(bio_err, "where options are/n");        BIO_printf(bio_err, "-out file             - write to file/n");#ifndef OPENSSL_NO_ENGINE        BIO_printf(bio_err,                   "-engine e             - use engine e, possibly a hardware device./n");#endif        BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from files/n",                   LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);        BIO_printf(bio_err, "-base64               - base64 encode output/n");        BIO_printf(bio_err, "-hex                  - hex encode output/n");        goto err;    }#ifndef OPENSSL_NO_ENGINE    setup_engine(bio_err, engine, 0);#endif    app_RAND_load_file(NULL, bio_err, (inrand != NULL));    if (inrand != NULL)        BIO_printf(bio_err, "%ld semi-random bytes loaded/n",                   app_RAND_load_files(inrand));    out = BIO_new(BIO_s_file());    if (out == NULL)        goto err;    if (outfile != NULL)        r = BIO_write_filename(out, outfile);    else {        r = BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT);#ifdef OPENSSL_SYS_VMS        {            BIO *tmpbio = BIO_new(BIO_f_linebuffer());            out = BIO_push(tmpbio, out);        }#endif    }    if (r <= 0)        goto err;    if (base64) {        BIO *b64 = BIO_new(BIO_f_base64());        if (b64 == NULL)            goto err;        out = BIO_push(b64, out);    }    while (num > 0) {        unsigned char buf[4096];        int chunk;        chunk = num;        if (chunk > (int)sizeof(buf))            chunk = sizeof buf;        r = RAND_bytes(buf, chunk);        if (r <= 0)            goto err;        if (!hex)            BIO_write(out, buf, chunk);        else {            for (i = 0; i < chunk; i++)                BIO_printf(out, "%02x", buf[i]);        }        num -= chunk;    }    if (hex)        BIO_puts(out, "/n");    (void)BIO_flush(out);    app_RAND_write_file(NULL, bio_err);    ret = 0; err:    ERR_print_errors(bio_err);    if (out)        BIO_free_all(out);    apps_shutdown();    OPENSSL_EXIT(ret);}
开发者ID:1Project,项目名称:SafeBoardMessenger,代码行数:101,


示例28: ecdh_cavs_kat

/* * NIST SP800-56A co-factor ECDH tests. * KATs taken from NIST documents with parameters: * * - (QCAVSx,QCAVSy) is the public key for CAVS. * - dIUT is the private key for IUT. * - (QIUTx,QIUTy) is the public key for IUT. * - ZIUT is the shared secret KAT. * * CAVS: Cryptographic Algorithm Validation System * IUT: Implementation Under Test * * This function tests two things: * * 1. dIUT * G = (QIUTx,QIUTy) *    i.e. public key for IUT computes correctly. * 2. x-coord of cofactor * dIUT * (QCAVSx,QCAVSy) = ZIUT *    i.e. co-factor ECDH key computes correctly. * * returns zero on failure or unsupported curve. One otherwise. */static int ecdh_cavs_kat(BIO *out, const ecdh_cavs_kat_t *kat){    int rv = 0, is_char_two = 0;    EC_KEY *key1 = NULL;    EC_POINT *pub = NULL;    const EC_GROUP *group = NULL;    BIGNUM *bnz = NULL, *x = NULL, *y = NULL;    unsigned char *Ztmp = NULL, *Z = NULL;    size_t Ztmplen, Zlen;    BIO_puts(out, "Testing ECC CDH Primitive SP800-56A with ");    BIO_puts(out, OBJ_nid2sn(kat->nid));    /* dIUT is IUT's private key */    if ((key1 = mk_eckey(kat->nid, kat->dIUT)) == NULL)        goto err;    /* these are cofactor ECDH KATs */    EC_KEY_set_flags(key1, EC_FLAG_COFACTOR_ECDH);    if ((group = EC_KEY_get0_group(key1)) == NULL)        goto err;    if ((pub = EC_POINT_new(group)) == NULL)        goto err;    if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) == NID_X9_62_characteristic_two_field)        is_char_two = 1;    /* (QIUTx, QIUTy) is IUT's public key */    if(!BN_hex2bn(&x, kat->QIUTx))        goto err;    if(!BN_hex2bn(&y, kat->QIUTy))        goto err;    if (is_char_two) {#ifdef OPENSSL_NO_EC2M        goto err;#else        if (!EC_POINT_set_affine_coordinates_GF2m(group, pub, x, y, NULL))            goto err;#endif    }    else {        if (!EC_POINT_set_affine_coordinates_GFp(group, pub, x, y, NULL))            goto err;    }    /* dIUT * G = (QIUTx, QIUTy) should hold */    if (EC_POINT_cmp(group, EC_KEY_get0_public_key(key1), pub, NULL))        goto err;    /* (QCAVSx, QCAVSy) is CAVS's public key */    if(!BN_hex2bn(&x, kat->QCAVSx))        goto err;    if(!BN_hex2bn(&y, kat->QCAVSy))        goto err;    if (is_char_two) {#ifdef OPENSSL_NO_EC2M        goto err;#else        if (!EC_POINT_set_affine_coordinates_GF2m(group, pub, x, y, NULL))            goto err;#endif    }    else {        if (!EC_POINT_set_affine_coordinates_GFp(group, pub, x, y, NULL))            goto err;    }    /* ZIUT is the shared secret */    if(!BN_hex2bn(&bnz, kat->ZIUT))        goto err;    Ztmplen = (EC_GROUP_get_degree(EC_KEY_get0_group(key1)) + 7) / 8;    Zlen = BN_num_bytes(bnz);    if (Zlen > Ztmplen)        goto err;    if((Ztmp = OPENSSL_zalloc(Ztmplen)) == NULL)        goto err;    if((Z = OPENSSL_zalloc(Ztmplen)) == NULL)        goto err;    if(!BN_bn2binpad(bnz, Z, Ztmplen))        goto err;    if (!ECDH_compute_key(Ztmp, Ztmplen, pub, key1, 0))//.........这里部分代码省略.........
开发者ID:277800076,项目名称:openssl,代码行数:101,


示例29: t_puts

int t_puts(BIO *bp, const char *str){	printf("t_read/n");	return BIO_puts(bp->next_bio,str);}
开发者ID:luzi82,项目名称:codelog.crypto,代码行数:4,


示例30: asn1_parse2

static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offset,	     int depth, int indent, int dump)	{	const unsigned char *p,*ep,*tot,*op,*opp;	long len;	int tag,xclass,ret=0;	int nl,hl,j,r;	ASN1_OBJECT *o=NULL;	ASN1_OCTET_STRING *os=NULL;	/* ASN1_BMPSTRING *bmp=NULL;*/	int dump_indent;#if 0	dump_indent = indent;#else	dump_indent = 6;	/* Because we know BIO_dump_indent() */#endif	p= *pp;	tot=p+length;	op=p-1;	while ((p < tot) && (op < p))		{		op=p;		j=ASN1_get_object(&p,&len,&tag,&xclass,length);#ifdef LINT		j=j;#endif		if (j & 0x80)			{			if (BIO_puts(bp, "Error in encoding/n") <= 0)				goto end;			ret=0;			goto end;			}		hl=(p-op);		length-=hl;		/* if j == 0x21 it is a constructed indefinite length object */		if (BIO_printf(bp,"%5ld:",(long)offset+(long)(op- *pp))			<= 0) goto end;		if (j != (V_ASN1_CONSTRUCTED | 1))			{			if (BIO_printf(bp,"d=%-2d hl=%ld l=%4ld ",				depth,(long)hl,len) <= 0)				goto end;			}		else			{			if (BIO_printf(bp,"d=%-2d hl=%ld l=inf  ",				depth,(long)hl) <= 0)				goto end;			}		if (!asn1_print_info(bp,tag,xclass,j,(indent)?depth:0))			goto end;		if (j & V_ASN1_CONSTRUCTED)			{			ep=p+len;			if (BIO_puts(bp, "/n") <= 0) goto end;			if (len > length)				{				BIO_printf(bp,					"length is greater than %ld/n",length);				ret=0;				goto end;				}			if ((j == 0x21) && (len == 0))				{				for (;;)					{					r=asn1_parse2(bp,&p,(long)(tot-p),						offset+(p - *pp),depth+1,						indent,dump);					if (r == 0) { ret=0; goto end; }					if ((r == 2) || (p >= tot)) break;					}				}			else				while (p < ep)					{					r=asn1_parse2(bp,&p,(long)len,						offset+(p - *pp),depth+1,						indent,dump);					if (r == 0) { ret=0; goto end; }					}			}		else if (xclass != 0)			{			p+=len;			if (BIO_puts(bp, "/n") <= 0) goto end;			}		else			{			nl=0;			if (	(tag == V_ASN1_PRINTABLESTRING) ||				(tag == V_ASN1_T61STRING) ||				(tag == V_ASN1_IA5STRING) ||				(tag == V_ASN1_VISIBLESTRING) ||				(tag == V_ASN1_NUMERICSTRING) ||				(tag == V_ASN1_UTF8STRING) ||				(tag == V_ASN1_UTCTIME) ||//.........这里部分代码省略.........
开发者ID:360ground,项目名称:Meda.et,代码行数:101,



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


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