List Info

Thread: OpenSSL: openssl/ CHANGES openssl/apps/ Makefile pkey.c progs.h




OpenSSL: openssl/ CHANGES openssl/apps/ Makefile pkey.c progs.h
user name
2006-03-28 12:34:46
  OpenSSL CVS Repository
  http://cvs.openssl.org/
 
____________________________________________________________
________________

  Server: cvs.openssl.org                  Name:   Dr.
Stephen Henson
  Root:   /v/openssl/cvs                   Email:  steveopenssl.org
  Module: openssl                          Date:  
28-Mar-2006 14:34:45
  Branch: HEAD                             Handle:
2006032813344401

  Added files:
    openssl/apps            pkey.c
  Modified files:
    openssl                 CHANGES
    openssl/apps            Makefile progs.h

  Log:
    New general public key utility 'pkey'.

  Summary:
    Revision    Changes     Path
    1.1294      +4  -0      openssl/CHANGES
    1.15        +5  -5      openssl/apps/Makefile
    1.1         +284 -0     openssl/apps/pkey.c
    1.36        +2  -0      openssl/apps/progs.h
 
____________________________________________________________
________________

  patch -p0 <<' .'
  Index: openssl/CHANGES
 
============================================================
================
  $ cvs diff -u -r1.1293 -r1.1294 CHANGES
  --- openssl/CHANGES	22 Mar 2006 13:09:30 -0000	1.1293
  +++ openssl/CHANGES	28 Mar 2006 12:34:44 -0000	1.1294
   -4,6 +4,10 
   
    Changes between 0.9.8a and 0.9.9  [xx XXX xxxx]
   
  +  *) New utility 'pkey'. This is similar to algorithm
specific utilities
  +     such as 'rsa', 'dsa' etc except it processes any
key type.
  +     [Steve Henson]
  +
     *) Transfer public key printing routines to
EVP_PKEY_ASN1_METHOD. New 
        functions EVP_PKEY_print_public(),
EVP_PKEY_print_private(),
        EVP_PKEY_print_param() to print public key data from
an EVP_PKEY
   .
  patch -p0 <<' .'
  Index: openssl/apps/Makefile
 
============================================================
================
  $ cvs diff -u -r1.14 -r1.15 Makefile
  --- openssl/apps/Makefile	12 Feb 2006 23:21:45 -0000	1.14
  +++ openssl/apps/Makefile	28 Mar 2006 12:34:45 -0000	1.15
   -39,7 +39,7 
   	ca crl rsa rsautl dsa dsaparam ec ecparam \
   	x509 genrsa gendsa s_server s_client speed \
   	s_time version pkcs7 crl2pkcs7 sess_id ciphers nseq
pkcs12 \
  -	pkcs8 spkac smime rand engine ocsp prime ts
  +	pkcs8 pkey spkac smime rand engine ocsp prime ts
   
   PROGS= $(PROGRAM).c
   
   -55,16 +55,16 
   	rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o \
   	x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o
\
   	s_time.o $(A_OBJ) $(S_OBJ) $(RAND_OBJ) version.o
sess_id.o \
  -	ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o
engine.o \
  -	ocsp.o prime.o ts.o
  +	ciphers.o nseq.o pkcs12.o pkcs8.o pkey.o \
  +	spkac.o smime.o rand.o engine.o ocsp.o prime.o ts.o
   
   E_SRC=	verify.c asn1pars.c req.c dgst.c dh.c enc.c
passwd.c gendh.c errstr.c ca.c \
   	pkcs7.c crl2p7.c crl.c \
   	rsa.c rsautl.c dsa.c dsaparam.c ec.c ecparam.c \
   	x509.c genrsa.c gendsa.c s_server.c s_client.c speed.c
\
   	s_time.c $(A_SRC) $(S_SRC) $(RAND_SRC) version.c
sess_id.c \
  -	ciphers.c nseq.c pkcs12.c pkcs8.c spkac.c smime.c rand.c
engine.c \
  -	ocsp.c prime.c ts.c
  +	ciphers.c nseq.c pkcs12.c pkcs8.c pkey.c \
  +	spkac.c smime.c rand.c engine.c ocsp.c prime.c ts.c
   
   SRC=$(E_SRC)
   
   .
  patch -p0 <<' .'
  Index: openssl/apps/pkey.c
 
============================================================
================
  $ cvs diff -u -r0 -r1.1 pkey.c
  --- /dev/null	2006-03-28 14:34:25 +0200
  +++ pkey.c	2006-03-28 14:34:45 +0200
   -0,0 +1,284 
  +/* pkey.c */
  +/* Written by Dr Stephen N Henson (shensonbigfoot.com) for the OpenSSL
  + * project 2006
  + */
  +/*
============================================================
========
  + * Copyright (c) 2006 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
  + *    licensingOpenSSL.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
  + * (eaycryptsoft.com).  This product includes software
written by Tim
  + * Hudson (tjhcryptsoft.com).
  + *
  + */
  +#include <stdio.h>
  +#include <string.h>
  +#include "apps.h"
  +#include <openssl/pem.h>
  +#include <openssl/err.h>
  +#include <openssl/evp.h>
  +
  +#define PROG pkey_main
  +
  +int MAIN(int, char **);
  +
  +int MAIN(int argc, char **argv)
  +	{
  +	ENGINE *e = NULL;
  +	char **args, *infile = NULL, *outfile = NULL;
  +	char *passargin = NULL, *passargout = NULL;
  +	BIO *in = NULL, *out = NULL;
  +	const EVP_CIPHER *cipher = NULL;
  +	int informat, outformat;
  +	int pubin = 0, pubout = 0, pubtext = 0, text = 0, noout
= 0;
  +	EVP_PKEY *pkey=NULL;
  +	char *passin = NULL, *passout = NULL;
  +	int badarg = 0;
  +#ifndef OPENSSL_NO_ENGINE
  +	char *engine=NULL;
  +#endif
  +
  +	if (bio_err == NULL)
  +		bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
  +
  +	if (!load_config(bio_err, NULL))
  +		goto end;
  +
  +	informat=FORMAT_PEM;
  +	outformat=FORMAT_PEM;
  +
  +	ERR_load_crypto_strings();
  +	OpenSSL_add_all_algorithms();
  +	args = argv + 1;
  +	while (!badarg && *args && *args[0] ==
'-')
  +		{
  +		if (!strcmp(*args,"-inform"))
  +			{
  +			if (args[1])
  +				{
  +				args++;
  +				informat=str2fmt(*args);
  +				}
  +			else badarg = 1;
  +			}
  +		else if (!strcmp(*args,"-outform"))
  +			{
  +			if (args[1])
  +				{
  +				args++;
  +				outformat=str2fmt(*args);
  +				}
  +			else badarg = 1;
  +			}
  +		else if (!strcmp(*args,"-passin"))
  +			{
  +			if (!args[1]) goto bad;
  +			passargin= *(++args);
  +			}
  +		else if (!strcmp(*args,"-passout"))
  +			{
  +			if (!args[1]) goto bad;
  +			passargout= *(++args);
  +			}
  +#ifndef OPENSSL_NO_ENGINE
  +		else if (strcmp(*args,"-engine") == 0)
  +			{
  +			if (!args[1]) goto bad;
  +			engine= *(++args);
  +			}
  +#endif
  +		else if (!strcmp (*args, "-in"))
  +			{
  +			if (args[1])
  +				{
  +				args++;
  +				infile = *args;
  +				}
  +			else badarg = 1;
  +			}
  +		else if (!strcmp (*args, "-out"))
  +			{
  +			if (args[1])
  +				{
  +				args++;
  +				outfile = *args;
  +				}
  +			else badarg = 1;
  +			}
  +		else if (strcmp(*args,"-pubin") == 0)
  +			{
  +			pubin=1;
  +			pubout=1;
  +			pubtext=1;
  +			}
  +		else if (strcmp(*args,"-pubout") == 0)
  +			pubout=1;
  +		else if (strcmp(*args,"-text_pub") == 0)
  +			{
  +			pubtext=1;
  +			text=1;
  +			}
  +		else if (strcmp(*args,"-text") == 0)
  +			text=1;
  +		else if (strcmp(*args,"-noout") == 0)
  +			noout=1;
  +		else
  +			{
  +			cipher = EVP_get_cipherbyname(*args + 1);
  +			if (!cipher)
  +				{
  +				BIO_printf(bio_err, "Unknown cipher
%s\n",
  +								*args + 1);
  +				badarg = 1;
  +				}
  +			}
  +		args++;
  +		}
  +
  +	if (badarg)
  +		{
  +		bad:
  +		BIO_printf(bio_err, "Usage pkey
[options]\n");
  +		BIO_printf(bio_err, "where options
are\n");
  +		BIO_printf(bio_err, "-in file        input
file\n");
  +		BIO_printf(bio_err, "-inform X       input format
(DER or PEM)\n");
  +		BIO_printf(bio_err, "-passin arg     input file
pass phrase source\n");
  +		BIO_printf(bio_err, "-outform X      output
format (DER or PEM)\n");
  +		BIO_printf(bio_err, "-out file       output
file\n");
  +		BIO_printf(bio_err, "-passout arg    output file
pass phrase source\n");
  +#ifndef OPENSSL_NO_ENGINE
  +		BIO_printf(bio_err, "-engine e       use engine
e, possibly a hardware device.\n");
  +#endif
  +		return 1;
  +		}
  +
  +#ifndef OPENSSL_NO_ENGINE
  +        e = setup_engine(bio_err, engine, 0);
  +#endif
  +
  +	if (!app_passwd(bio_err, passargin, passargout,
&passin, &passout))
  +		{
  +		BIO_printf(bio_err, "Error getting
passwords\n");
  +		return 1;
  +		}
  +
  +	if (outfile)
  +		{
  +		if (!(out = BIO_new_file (outfile, "wb")))
  +			{
  +			BIO_printf(bio_err,
  +				 "Can't open output file %s\n",
outfile);
  +			return (1);
  +			}
  +		}
  +	else
  +		{
  +		out = BIO_new_fp (stdout, BIO_NOCLOSE);
  +#ifdef OPENSSL_SYS_VMS
  +			{
  +			BIO *tmpbio = BIO_new(BIO_f_linebuffer());
  +			out = BIO_push(tmpbio, out);
  +			}
  +#endif
  +		}
  +
  +	if (pubin)
  +		pkey = load_pubkey(bio_err, infile, informat, 1,
  +			passin, e, "Public Key");
  +	else
  +		pkey = load_key(bio_err, infile, informat, 1,
  +			passin, e, "key");
  +	if (!pkey)
  +		{
  +		BIO_free_all(out);
  +		return 1;
  +		}
  +
  +	if (!noout)
  +		{
  +		if (outformat == FORMAT_PEM) 
  +			{
  +			if (pubout)
  +				PEM_write_bio_PUBKEY(out,pkey);
  +			else
  +				PEM_write_bio_PrivateKey(out, pkey, cipher,
  +							NULL, 0, NULL, passout);
  +			}
  +		else if (outformat == FORMAT_ASN1)
  +			{
  +			if (pubout)
  +				i2d_PUBKEY_bio(out, pkey);
  +			else
  +				i2d_PrivateKey_bio(out, pkey);
  +			}
  +		else
  +			{
  +			BIO_printf(bio_err, "Bad format specified for
key\n");
  +				return (1);
  +			}
  +
  +		}
  +
  +	if (text)
  +		{
  +		if (pubtext)
  +			EVP_PKEY_print_public(out, pkey, 0, NULL);
  +		else
  +			EVP_PKEY_print_private(out, pkey, 0, NULL);
  +		}
  +
  +	end:
  +	EVP_PKEY_free(pkey);
  +	BIO_free_all(out);
  +	BIO_free(in);
  +	if (passin)
  +		OPENSSL_free(passin);
  +	if (passout)
  +		OPENSSL_free(passout);
  +
  +	return (0);
  +	}
   .
  patch -p0 <<' .'
  Index: openssl/apps/progs.h
 
============================================================
================
  $ cvs diff -u -r1.35 -r1.36 progs.h
  --- openssl/apps/progs.h	12 Feb 2006 23:11:20 -0000	1.35
  +++ openssl/apps/progs.h	28 Mar 2006 12:34:45 -0000	1.36
   -34,6 +34,7 
   extern int nseq_main(int argc,char *argv[]);
   extern int pkcs12_main(int argc,char *argv[]);
   extern int pkcs8_main(int argc,char *argv[]);
  +extern int pkey_main(int argc,char *argv[]);
   extern int spkac_main(int argc,char *argv[]);
   extern int smime_main(int argc,char *argv[]);
   extern int rand_main(int argc,char *argv[]);
   -120,6 +121,7 
   	{FUNC_TYPE_GENERAL,"pkcs12",pkcs12_main},
   #endif
   	{FUNC_TYPE_GENERAL,"pkcs8",pkcs8_main},
  +	{FUNC_TYPE_GENERAL,"pkey",pkey_main},
   	{FUNC_TYPE_GENERAL,"spkac",spkac_main},
   	{FUNC_TYPE_GENERAL,"smime",smime_main},
   	{FUNC_TYPE_GENERAL,"rand",rand_main},
   .
____________________________________________________________
__________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                    
openssl-cvsopenssl.org
Automated List Manager                          
majordomoopenssl.org
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )