⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecparam.c

📁 mediastreamer2是开源的网络传输媒体流的库
💻 C
📖 第 1 页 / 共 2 页
字号:
/* apps/ecparam.c *//* * Written by Nils Larsch for the OpenSSL project. *//* ==================================================================== * Copyright (c) 1998-2005 The OpenSSL Project.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. All advertising materials mentioning features or use of this *    software must display the following acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to *    endorse or promote products derived from this software without *    prior written permission. For written permission, please contact *    openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" *    nor may "OpenSSL" appear in their names without prior written *    permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com).  This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * *//* ==================================================================== * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. * * Portions of the attached software ("Contribution") are developed by  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. * * The Contribution is licensed pursuant to the OpenSSL open source * license provided above. * * The elliptic curve binary polynomial software is originally written by  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. * */#include <openssl/opensslconf.h>#ifndef OPENSSL_NO_EC#include <assert.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include "apps.h"#include <openssl/bio.h>#include <openssl/err.h>#include <openssl/bn.h>#include <openssl/ec.h>#include <openssl/x509.h>#include <openssl/pem.h>#undef PROG#define PROG	ecparam_main/* -inform arg      - input format - default PEM (DER or PEM) * -outform arg     - output format - default PEM * -in  arg         - input file  - default stdin * -out arg         - output file - default stdout * -noout           - do not print the ec parameter * -text            - print the ec parameters in text form * -check           - validate the ec parameters * -C               - print a 'C' function creating the parameters * -name arg        - use the ec parameters with 'short name' name * -list_curves     - prints a list of all currently available curve 'short names' * -conv_form arg   - specifies the point conversion form  *                  - possible values: compressed *                                     uncompressed (default) *                                     hybrid * -param_enc arg   - specifies the way the ec parameters are encoded *                    in the asn1 der encoding *                    possible values: named_curve (default) *                                     explicit * -no_seed         - if 'explicit' parameters are choosen do not use the seed * -genkey          - generate ec key * -rand file       - files to use for random number input * -engine e        - use engine e, possibly a hardware device */static int ecparam_print_var(BIO *,BIGNUM *,const char *,int,unsigned char *);int MAIN(int, char **);int MAIN(int argc, char **argv)	{	EC_GROUP *group = NULL;	point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED; 	int 	new_form = 0;	int 	asn1_flag = OPENSSL_EC_NAMED_CURVE;	int 	new_asn1_flag = 0;	char 	*curve_name = NULL, *inrand = NULL;	int	list_curves = 0, no_seed = 0, check = 0,		badops = 0, text = 0, i, need_rand = 0, genkey = 0;	char	*infile = NULL, *outfile = NULL, *prog;	BIO 	*in = NULL, *out = NULL;	int 	informat, outformat, noout = 0, C = 0, ret = 1;#ifndef OPENSSL_NO_ENGINE	ENGINE	*e = NULL;#endif	char	*engine = NULL;	BIGNUM	*ec_p = NULL, *ec_a = NULL, *ec_b = NULL,		*ec_gen = NULL, *ec_order = NULL, *ec_cofactor = NULL;	unsigned char *buffer = NULL;	apps_startup();	if (bio_err == NULL)		if ((bio_err=BIO_new(BIO_s_file())) != NULL)			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);	if (!load_config(bio_err, NULL))		goto end;	informat=FORMAT_PEM;	outformat=FORMAT_PEM;	prog=argv[0];	argc--;	argv++;	while (argc >= 1)		{		if 	(strcmp(*argv,"-inform") == 0)			{			if (--argc < 1) goto bad;			informat=str2fmt(*(++argv));			}		else if (strcmp(*argv,"-outform") == 0)			{			if (--argc < 1) goto bad;			outformat=str2fmt(*(++argv));			}		else if (strcmp(*argv,"-in") == 0)			{			if (--argc < 1) goto bad;			infile= *(++argv);			}		else if (strcmp(*argv,"-out") == 0)			{			if (--argc < 1) goto bad;			outfile= *(++argv);			}		else if (strcmp(*argv,"-text") == 0)			text = 1;		else if (strcmp(*argv,"-C") == 0)			C = 1;		else if (strcmp(*argv,"-check") == 0)			check = 1;		else if (strcmp (*argv, "-name") == 0)			{			if (--argc < 1)				goto bad;			curve_name = *(++argv);			}		else if (strcmp(*argv, "-list_curves") == 0)			list_curves = 1;		else if (strcmp(*argv, "-conv_form") == 0)			{			if (--argc < 1)				goto bad;			++argv;			new_form = 1;			if (strcmp(*argv, "compressed") == 0)				form = POINT_CONVERSION_COMPRESSED;			else if (strcmp(*argv, "uncompressed") == 0)				form = POINT_CONVERSION_UNCOMPRESSED;			else if (strcmp(*argv, "hybrid") == 0)				form = POINT_CONVERSION_HYBRID;			else				goto bad;			}		else if (strcmp(*argv, "-param_enc") == 0)			{			if (--argc < 1)				goto bad;			++argv;			new_asn1_flag = 1;			if (strcmp(*argv, "named_curve") == 0)				asn1_flag = OPENSSL_EC_NAMED_CURVE;			else if (strcmp(*argv, "explicit") == 0)				asn1_flag = 0;			else				goto bad;			}		else if (strcmp(*argv, "-no_seed") == 0)			no_seed = 1;		else if (strcmp(*argv, "-noout") == 0)			noout=1;		else if (strcmp(*argv,"-genkey") == 0)			{			genkey=1;			need_rand=1;			}		else if (strcmp(*argv, "-rand") == 0)			{			if (--argc < 1) goto bad;			inrand= *(++argv);			need_rand=1;			}		else if(strcmp(*argv, "-engine") == 0)			{			if (--argc < 1) goto bad;			engine = *(++argv);			}			else			{			BIO_printf(bio_err,"unknown option %s\n",*argv);			badops=1;			break;			}		argc--;		argv++;		}	if (badops)		{bad:		BIO_printf(bio_err, "%s [options] <infile >outfile\n",prog);		BIO_printf(bio_err, "where options are\n");		BIO_printf(bio_err, " -inform arg       input format - "				"default PEM (DER or PEM)\n");		BIO_printf(bio_err, " -outform arg      output format - "				"default PEM\n");		BIO_printf(bio_err, " -in  arg          input file  - "				"default stdin\n");		BIO_printf(bio_err, " -out arg          output file - "				"default stdout\n");		BIO_printf(bio_err, " -noout            do not print the "				"ec parameter\n");		BIO_printf(bio_err, " -text             print the ec "				"parameters in text form\n");		BIO_printf(bio_err, " -check            validate the ec "				"parameters\n");		BIO_printf(bio_err, " -C                print a 'C' "				"function creating the parameters\n");		BIO_printf(bio_err, " -name arg         use the "				"ec parameters with 'short name' name\n");		BIO_printf(bio_err, " -list_curves      prints a list of "				"all currently available curve 'short names'\n");		BIO_printf(bio_err, " -conv_form arg    specifies the "				"point conversion form \n");		BIO_printf(bio_err, "                   possible values:"				" compressed\n");		BIO_printf(bio_err, "                                   "				" uncompressed (default)\n");		BIO_printf(bio_err, "                                   "				" hybrid\n");		BIO_printf(bio_err, " -param_enc arg    specifies the way"				" the ec parameters are encoded\n");		BIO_printf(bio_err, "                   in the asn1 der "				"encoding\n");		BIO_printf(bio_err, "                   possible values:"				" named_curve (default)\n");		BIO_printf(bio_err, "                                   "				" explicit\n");		BIO_printf(bio_err, " -no_seed          if 'explicit'"				" parameters are choosen do not"				" use the seed\n");		BIO_printf(bio_err, " -genkey           generate ec"				" key\n");		BIO_printf(bio_err, " -rand file        files to use for"				" random number input\n");		BIO_printf(bio_err, " -engine e         use engine e, "				"possibly a hardware device\n");		goto end;		}	ERR_load_crypto_strings();	in=BIO_new(BIO_s_file());	out=BIO_new(BIO_s_file());	if ((in == NULL) || (out == NULL))		{		ERR_print_errors(bio_err);		goto end;		}	if (infile == NULL)		BIO_set_fp(in,stdin,BIO_NOCLOSE);	else		{		if (BIO_read_filename(in,infile) <= 0)			{			perror(infile);			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;			}		}#ifndef OPENSSL_NO_ENGINE	e = setup_engine(bio_err, engine, 0);#endif	if (list_curves)		{		EC_builtin_curve *curves = NULL;		size_t crv_len = 0;		size_t n = 0;		crv_len = EC_get_builtin_curves(NULL, 0);		curves = OPENSSL_malloc((int)(sizeof(EC_builtin_curve) * crv_len));		if (curves == NULL)			goto end;		if (!EC_get_builtin_curves(curves, crv_len))			{			OPENSSL_free(curves);			goto end;			}		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -