@ -99,7 +99,7 @@ static int certify(X509 **xret, const char *infile, int informat,
const char * enddate ,
long days , int batch , const char * ext_sect , CONF * conf ,
int verbose , unsigned long certopt , unsigned long nameopt ,
int default_op , int ext_copy , int selfsign );
int default_op , int ext_copy , int selfsign , unsigned long dateopt );
static int certify_cert ( X509 * * xret , const char * infile , int certformat ,
const char * passin , EVP_PKEY * pkey , X509 * x509 ,
const char * dgst ,
@ -110,7 +110,7 @@ static int certify_cert(X509 **xret, const char *infile, int certformat,
int multirdn , int email_dn , const char * startdate ,
const char * enddate , long days , int batch , const char * ext_sect ,
CONF * conf , int verbose , unsigned long certopt ,
unsigned long nameopt , int default_op , int ext_copy );
unsigned long nameopt , int default_op , int ext_copy , unsigned long dateopt );
static int certify_spkac ( X509 * * xret , const char * infile , EVP_PKEY * pkey ,
X509 * x509 , const char * dgst ,
STACK_OF ( OPENSSL_STRING ) * sigopts ,
@ -119,7 +119,7 @@ static int certify_spkac(X509 **xret, const char *infile, EVP_PKEY *pkey,
int multirdn , int email_dn , const char * startdate ,
const char * enddate , long days , const char * ext_sect , CONF * conf ,
int verbose , unsigned long certopt ,
unsigned long nameopt , int default_op , int ext_copy );
unsigned long nameopt , int default_op , int ext_copy , unsigned long dateopt );
static int do_body ( X509 * * xret , EVP_PKEY * pkey , X509 * x509 ,
const char * dgst , STACK_OF ( OPENSSL_STRING ) * sigopts ,
STACK_OF ( CONF_VALUE ) * policy , CA_DB * db , BIGNUM * serial ,
@ -127,7 +127,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509,
int email_dn , const char * startdate , const char * enddate , long days ,
int batch , int verbose , X509_REQ * req , const char * ext_sect ,
CONF * conf , unsigned long certopt , unsigned long nameopt ,
int default_op , int ext_copy , int selfsign );
int default_op , int ext_copy , int selfsign , unsigned long dateopt );
static int get_certificate_status ( const char * ser_status , CA_DB * db ) ;
static int do_updatedb ( CA_DB * db ) ;
static int check_time_format ( const char * str ) ;
@ -148,7 +148,7 @@ typedef enum OPTION_choice {
OPT_CREATE_SERIAL , OPT_MULTIVALUE_RDN , OPT_STARTDATE , OPT_ENDDATE ,
OPT_DAYS , OPT_MD , OPT_POLICY , OPT_KEYFILE , OPT_KEYFORM , OPT_PASSIN ,
OPT_KEY , OPT_CERT , OPT_CERTFORM , OPT_SELFSIGN ,
OPT_IN , OPT_INFORM , OPT_OUT , OPT_ OUTDIR, OPT_VFYOPT ,
OPT_IN , OPT_INFORM , OPT_OUT , OPT_ DATEOPT, OPT_ OUTDIR, OPT_VFYOPT ,
OPT_SIGOPT , OPT_NOTEXT , OPT_BATCH , OPT_PRESERVEDN , OPT_NOEMAILDN ,
OPT_GENCRL , OPT_MSIE_HACK , OPT_CRL_LASTUPDATE , OPT_CRL_NEXTUPDATE ,
OPT_CRLDAYS , OPT_CRLHOURS , OPT_CRLSEC ,
@ -171,6 +171,7 @@ const OPTIONS ca_options[] = {
{ " inform " , OPT_INFORM , ' F ' , " CSR input format (DER or PEM); default PEM " } ,
{ " infiles " , OPT_INFILES , ' - ' , " The last argument, requests to process " } ,
{ " out " , OPT_OUT , ' > ' , " Where to put the output file(s) " } ,
{ " dateopt " , OPT_DATEOPT , ' s ' , " Datetime format used for printing. (rfc_822/iso_8601). Default is rfc_822. " } ,
{ " notext " , OPT_NOTEXT , ' - ' , " Do not print the generated certificate " } ,
{ " batch " , OPT_BATCH , ' - ' , " Don't ask questions " } ,
{ " msie_hack " , OPT_MSIE_HACK , ' - ' ,
@ -275,6 +276,7 @@ int ca_main(int argc, char **argv)
char * dgst = NULL , * policy = NULL , * keyfile = NULL ;
char * certfile = NULL , * crl_ext = NULL , * crlnumberfile = NULL ;
int certformat = FORMAT_UNDEF , informat = FORMAT_UNDEF ;
unsigned long dateopt = ASN1_DTFLGS_RFC822 ;
const char * infile = NULL , * spkac_file = NULL , * ss_cert_file = NULL ;
const char * extensions = NULL , * extfile = NULL , * passinarg = NULL ;
char * passin = NULL ;
@ -323,6 +325,10 @@ opthelp:
case OPT_OUT :
outfile = opt_arg ( ) ;
break ;
case OPT_DATEOPT :
if ( ! set_dateopt ( & dateopt , opt_arg ( ) ) )
goto opthelp ;
break ;
case OPT_VERBOSE :
verbose = 1 ;
break ;
@ -947,7 +953,7 @@ end_of_options:
attribs , db , serial , subj , chtype , multirdn ,
email_dn , startdate , enddate , days , extensions ,
conf , verbose , certopt , get_nameopt ( ) , default_op ,
ext_copy );
ext_copy , dateopt );
if ( j < 0 )
goto end ;
if ( j > 0 ) {
@ -968,7 +974,7 @@ end_of_options:
db , serial , subj , chtype , multirdn , email_dn ,
startdate , enddate , days , batch , extensions ,
conf , verbose , certopt , get_nameopt ( ) , default_op ,
ext_copy );
ext_copy , dateopt );
if ( j < 0 )
goto end ;
if ( j > 0 ) {
@ -988,7 +994,7 @@ end_of_options:
sigopts , vfyopts , attribs , db ,
serial , subj , chtype , multirdn , email_dn , startdate ,
enddate , days , batch , extensions , conf , verbose ,
certopt , get_nameopt ( ) , default_op , ext_copy , selfsign );
certopt , get_nameopt ( ) , default_op , ext_copy , selfsign , dateopt );
if ( j < 0 )
goto end ;
if ( j > 0 ) {
@ -1009,7 +1015,7 @@ end_of_options:
attribs , db ,
serial , subj , chtype , multirdn , email_dn , startdate ,
enddate , days , batch , extensions , conf , verbose ,
certopt , get_nameopt ( ) , default_op , ext_copy , selfsign );
certopt , get_nameopt ( ) , default_op , ext_copy , selfsign , dateopt );
if ( j < 0 )
goto end ;
if ( j > 0 ) {
@ -1357,7 +1363,7 @@ static int certify(X509 **xret, const char *infile, int informat,
const char * enddate ,
long days , int batch , const char * ext_sect , CONF * lconf ,
int verbose , unsigned long certopt , unsigned long nameopt ,
int default_op , int ext_copy , int selfsign )
int default_op , int ext_copy , int selfsign , unsigned long dateopt )
{
X509_REQ * req = NULL ;
EVP_PKEY * pktmp = NULL ;
@ -1396,7 +1402,7 @@ static int certify(X509 **xret, const char *infile, int informat,
ok = do_body ( xret , pkey , x509 , dgst , sigopts , policy , db , serial , subj ,
chtype , multirdn , email_dn , startdate , enddate , days , batch ,
verbose , req , ext_sect , lconf , certopt , nameopt , default_op ,
ext_copy , selfsign );
ext_copy , selfsign , dateopt );
end :
ERR_print_errors ( bio_err ) ;
@ -1414,7 +1420,7 @@ static int certify_cert(X509 **xret, const char *infile, int certformat,
int multirdn , int email_dn , const char * startdate ,
const char * enddate , long days , int batch , const char * ext_sect ,
CONF * lconf , int verbose , unsigned long certopt ,
unsigned long nameopt , int default_op , int ext_copy )
unsigned long nameopt , int default_op , int ext_copy , unsigned long dateopt )
{
X509 * template_cert = NULL ;
X509_REQ * rreq = NULL ;
@ -1453,7 +1459,7 @@ static int certify_cert(X509 **xret, const char *infile, int certformat,
ok = do_body ( xret , pkey , x509 , dgst , sigopts , policy , db , serial , subj ,
chtype , multirdn , email_dn , startdate , enddate , days , batch ,
verbose , rreq , ext_sect , lconf , certopt , nameopt , default_op ,
ext_copy , 0 );
ext_copy , 0 , dateopt );
end :
X509_REQ_free ( rreq ) ;
@ -1468,7 +1474,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509,
int email_dn , const char * startdate , const char * enddate , long days ,
int batch , int verbose , X509_REQ * req , const char * ext_sect ,
CONF * lconf , unsigned long certopt , unsigned long nameopt ,
int default_op , int ext_copy , int selfsign )
int default_op , int ext_copy , int selfsign , unsigned long dateopt )
{
const X509_NAME * name = NULL ;
X509_NAME * CAname = NULL , * subject = NULL ;
@ -1877,7 +1883,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509,
}
BIO_printf ( bio_err , " Certificate is to be certified until " ) ;
ASN1_TIME_print ( bio_err , X509_get0_notAfter ( ret ) ) ;
ASN1_TIME_print _ex ( bio_err , X509_get0_notAfter ( ret ) , dateopt ) ;
if ( days )
BIO_printf ( bio_err , " (%ld days) " , days ) ;
BIO_printf ( bio_err , " \n " ) ;
@ -1970,7 +1976,7 @@ static int certify_spkac(X509 **xret, const char *infile, EVP_PKEY *pkey,
int multirdn , int email_dn , const char * startdate ,
const char * enddate , long days , const char * ext_sect ,
CONF * lconf , int verbose , unsigned long certopt ,
unsigned long nameopt , int default_op , int ext_copy )
unsigned long nameopt , int default_op , int ext_copy , unsigned long dateopt )
{
STACK_OF ( CONF_VALUE ) * sk = NULL ;
LHASH_OF ( CONF_VALUE ) * parms = NULL ;
@ -2083,7 +2089,7 @@ static int certify_spkac(X509 **xret, const char *infile, EVP_PKEY *pkey,
ok = do_body ( xret , pkey , x509 , dgst , sigopts , policy , db , serial , subj ,
chtype , multirdn , email_dn , startdate , enddate , days , 1 ,
verbose , req , ext_sect , lconf , certopt , nameopt , default_op ,
ext_copy , 0 );
ext_copy , 0 , dateopt );
end :
X509_REQ_free ( req ) ;
CONF_free ( parms ) ;