mirror of https://github.com/lukechilds/node.git
Fedor Indutny
11 years ago
committed by
Timothy J Fontaine
178 changed files with 3469 additions and 6019 deletions
File diff suppressed because it is too large
@ -1,466 +0,0 @@ |
|||
/* crypto/evp/bio_ber.c */ |
|||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
|||
* All rights reserved. |
|||
* |
|||
* This package is an SSL implementation written |
|||
* by Eric Young (eay@cryptsoft.com). |
|||
* The implementation was written so as to conform with Netscapes SSL. |
|||
* |
|||
* This library is free for commercial and non-commercial use as long as |
|||
* the following conditions are aheared to. The following conditions |
|||
* apply to all code found in this distribution, be it the RC4, RSA, |
|||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation |
|||
* included with this distribution is covered by the same copyright terms |
|||
* except that the holder is Tim Hudson (tjh@cryptsoft.com). |
|||
* |
|||
* Copyright remains Eric Young's, and as such any Copyright notices in |
|||
* the code are not to be removed. |
|||
* If this package is used in a product, Eric Young should be given attribution |
|||
* as the author of the parts of the library used. |
|||
* This can be in the form of a textual message at program startup or |
|||
* in documentation (online or textual) provided with the package. |
|||
* |
|||
* 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 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 acknowledgement: |
|||
* "This product includes cryptographic software written by |
|||
* Eric Young (eay@cryptsoft.com)" |
|||
* The word 'cryptographic' can be left out if the rouines from the library |
|||
* being used are not cryptographic related :-). |
|||
* 4. If you include any Windows specific code (or a derivative thereof) from |
|||
* the apps directory (application code) you must include an acknowledgement: |
|||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
|||
* ANY EXPRESS 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 AUTHOR OR 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. |
|||
* |
|||
* The licence and distribution terms for any publically available version or |
|||
* derivative of this code cannot be changed. i.e. this code cannot simply be |
|||
* copied and put under another distribution licence |
|||
* [including the GNU Public Licence.] |
|||
*/ |
|||
|
|||
#include <stdio.h> |
|||
#include <errno.h> |
|||
#include "cryptlib.h" |
|||
#include <openssl/buffer.h> |
|||
#include <openssl/evp.h> |
|||
|
|||
static int ber_write(BIO *h,char *buf,int num); |
|||
static int ber_read(BIO *h,char *buf,int size); |
|||
/*static int ber_puts(BIO *h,char *str); */ |
|||
/*static int ber_gets(BIO *h,char *str,int size); */ |
|||
static long ber_ctrl(BIO *h,int cmd,long arg1,char *arg2); |
|||
static int ber_new(BIO *h); |
|||
static int ber_free(BIO *data); |
|||
static long ber_callback_ctrl(BIO *h,int cmd,void *(*fp)()); |
|||
#define BER_BUF_SIZE (32) |
|||
|
|||
/* This is used to hold the state of the BER objects being read. */ |
|||
typedef struct ber_struct |
|||
{ |
|||
int tag; |
|||
int class; |
|||
long length; |
|||
int inf; |
|||
int num_left; |
|||
int depth; |
|||
} BER_CTX; |
|||
|
|||
typedef struct bio_ber_struct |
|||
{ |
|||
int tag; |
|||
int class; |
|||
long length; |
|||
int inf; |
|||
|
|||
/* most of the following are used when doing non-blocking IO */ |
|||
/* reading */ |
|||
long num_left; /* number of bytes still to read/write in block */ |
|||
int depth; /* used with indefinite encoding. */ |
|||
int finished; /* No more read data */ |
|||
|
|||
/* writting */ |
|||
char *w_addr; |
|||
int w_offset; |
|||
int w_left; |
|||
|
|||
int buf_len; |
|||
int buf_off; |
|||
unsigned char buf[BER_BUF_SIZE]; |
|||
} BIO_BER_CTX; |
|||
|
|||
static BIO_METHOD methods_ber= |
|||
{ |
|||
BIO_TYPE_CIPHER,"cipher", |
|||
ber_write, |
|||
ber_read, |
|||
NULL, /* ber_puts, */ |
|||
NULL, /* ber_gets, */ |
|||
ber_ctrl, |
|||
ber_new, |
|||
ber_free, |
|||
ber_callback_ctrl, |
|||
}; |
|||
|
|||
BIO_METHOD *BIO_f_ber(void) |
|||
{ |
|||
return(&methods_ber); |
|||
} |
|||
|
|||
static int ber_new(BIO *bi) |
|||
{ |
|||
BIO_BER_CTX *ctx; |
|||
|
|||
ctx=(BIO_BER_CTX *)OPENSSL_malloc(sizeof(BIO_BER_CTX)); |
|||
if (ctx == NULL) return(0); |
|||
|
|||
memset((char *)ctx,0,sizeof(BIO_BER_CTX)); |
|||
|
|||
bi->init=0; |
|||
bi->ptr=(char *)ctx; |
|||
bi->flags=0; |
|||
return(1); |
|||
} |
|||
|
|||
static int ber_free(BIO *a) |
|||
{ |
|||
BIO_BER_CTX *b; |
|||
|
|||
if (a == NULL) return(0); |
|||
b=(BIO_BER_CTX *)a->ptr; |
|||
OPENSSL_cleanse(a->ptr,sizeof(BIO_BER_CTX)); |
|||
OPENSSL_free(a->ptr); |
|||
a->ptr=NULL; |
|||
a->init=0; |
|||
a->flags=0; |
|||
return(1); |
|||
} |
|||
|
|||
int bio_ber_get_header(BIO *bio, BIO_BER_CTX *ctx) |
|||
{ |
|||
char buf[64]; |
|||
int i,j,n; |
|||
int ret; |
|||
unsigned char *p; |
|||
unsigned long length |
|||
int tag; |
|||
int class; |
|||
long max; |
|||
|
|||
BIO_clear_retry_flags(b); |
|||
|
|||
/* Pack the buffer down if there is a hole at the front */ |
|||
if (ctx->buf_off != 0) |
|||
{ |
|||
p=ctx->buf; |
|||
j=ctx->buf_off; |
|||
n=ctx->buf_len-j; |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
p[0]=p[j]; |
|||
p++; |
|||
} |
|||
ctx->buf_len-j; |
|||
ctx->buf_off=0; |
|||
} |
|||
|
|||
/* If there is more room, read some more data */ |
|||
i=BER_BUF_SIZE-ctx->buf_len; |
|||
if (i) |
|||
{ |
|||
i=BIO_read(bio->next_bio,&(ctx->buf[ctx->buf_len]),i); |
|||
if (i <= 0) |
|||
{ |
|||
BIO_copy_next_retry(b); |
|||
return(i); |
|||
} |
|||
else |
|||
ctx->buf_len+=i; |
|||
} |
|||
|
|||
max=ctx->buf_len; |
|||
p=ctx->buf; |
|||
ret=ASN1_get_object(&p,&length,&tag,&class,max); |
|||
|
|||
if (ret & 0x80) |
|||
{ |
|||
if ((ctx->buf_len < BER_BUF_SIZE) && |
|||
(ERR_GET_REASON(ERR_peek_error()) == ASN1_R_TOO_LONG)) |
|||
{ |
|||
ERR_clear_error(); /* clear the error */ |
|||
BIO_set_retry_read(b); |
|||
} |
|||
return(-1); |
|||
} |
|||
|
|||
/* We have no error, we have a header, so make use of it */ |
|||
|
|||
if ((ctx->tag >= 0) && (ctx->tag != tag)) |
|||
{ |
|||
BIOerr(BIO_F_BIO_BER_GET_HEADER,BIO_R_TAG_MISMATCH); |
|||
sprintf(buf,"tag=%d, got %d",ctx->tag,tag); |
|||
ERR_add_error_data(1,buf); |
|||
return(-1); |
|||
} |
|||
if (ret & 0x01) |
|||
if (ret & V_ASN1_CONSTRUCTED) |
|||
} |
|||
|
|||
static int ber_read(BIO *b, char *out, int outl) |
|||
{ |
|||
int ret=0,i,n; |
|||
BIO_BER_CTX *ctx; |
|||
|
|||
BIO_clear_retry_flags(b); |
|||
|
|||
if (out == NULL) return(0); |
|||
ctx=(BIO_BER_CTX *)b->ptr; |
|||
|
|||
if ((ctx == NULL) || (b->next_bio == NULL)) return(0); |
|||
|
|||
if (ctx->finished) return(0); |
|||
|
|||
again: |
|||
/* First see if we are half way through reading a block */ |
|||
if (ctx->num_left > 0) |
|||
{ |
|||
if (ctx->num_left < outl) |
|||
n=ctx->num_left; |
|||
else |
|||
n=outl; |
|||
i=BIO_read(b->next_bio,out,n); |
|||
if (i <= 0) |
|||
{ |
|||
BIO_copy_next_retry(b); |
|||
return(i); |
|||
} |
|||
ctx->num_left-=i; |
|||
outl-=i; |
|||
ret+=i; |
|||
if (ctx->num_left <= 0) |
|||
{ |
|||
ctx->depth--; |
|||
if (ctx->depth <= 0) |
|||
ctx->finished=1; |
|||
} |
|||
if (outl <= 0) |
|||
return(ret); |
|||
else |
|||
goto again; |
|||
} |
|||
else /* we need to read another BER header */ |
|||
{ |
|||
} |
|||
} |
|||
|
|||
static int ber_write(BIO *b, char *in, int inl) |
|||
{ |
|||
int ret=0,n,i; |
|||
BIO_ENC_CTX *ctx; |
|||
|
|||
ctx=(BIO_ENC_CTX *)b->ptr; |
|||
ret=inl; |
|||
|
|||
BIO_clear_retry_flags(b); |
|||
n=ctx->buf_len-ctx->buf_off; |
|||
while (n > 0) |
|||
{ |
|||
i=BIO_write(b->next_bio,&(ctx->buf[ctx->buf_off]),n); |
|||
if (i <= 0) |
|||
{ |
|||
BIO_copy_next_retry(b); |
|||
return(i); |
|||
} |
|||
ctx->buf_off+=i; |
|||
n-=i; |
|||
} |
|||
/* at this point all pending data has been written */ |
|||
|
|||
if ((in == NULL) || (inl <= 0)) return(0); |
|||
|
|||
ctx->buf_off=0; |
|||
while (inl > 0) |
|||
{ |
|||
n=(inl > ENC_BLOCK_SIZE)?ENC_BLOCK_SIZE:inl; |
|||
EVP_CipherUpdate(&(ctx->cipher), |
|||
(unsigned char *)ctx->buf,&ctx->buf_len, |
|||
(unsigned char *)in,n); |
|||
inl-=n; |
|||
in+=n; |
|||
|
|||
ctx->buf_off=0; |
|||
n=ctx->buf_len; |
|||
while (n > 0) |
|||
{ |
|||
i=BIO_write(b->next_bio,&(ctx->buf[ctx->buf_off]),n); |
|||
if (i <= 0) |
|||
{ |
|||
BIO_copy_next_retry(b); |
|||
return(i); |
|||
} |
|||
n-=i; |
|||
ctx->buf_off+=i; |
|||
} |
|||
ctx->buf_len=0; |
|||
ctx->buf_off=0; |
|||
} |
|||
BIO_copy_next_retry(b); |
|||
return(ret); |
|||
} |
|||
|
|||
static long ber_ctrl(BIO *b, int cmd, long num, char *ptr) |
|||
{ |
|||
BIO *dbio; |
|||
BIO_ENC_CTX *ctx,*dctx; |
|||
long ret=1; |
|||
int i; |
|||
|
|||
ctx=(BIO_ENC_CTX *)b->ptr; |
|||
|
|||
switch (cmd) |
|||
{ |
|||
case BIO_CTRL_RESET: |
|||
ctx->ok=1; |
|||
ctx->finished=0; |
|||
EVP_CipherInit_ex(&(ctx->cipher),NULL,NULL,NULL,NULL, |
|||
ctx->cipher.berrypt); |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
case BIO_CTRL_EOF: /* More to read */ |
|||
if (ctx->cont <= 0) |
|||
ret=1; |
|||
else |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
case BIO_CTRL_WPENDING: |
|||
ret=ctx->buf_len-ctx->buf_off; |
|||
if (ret <= 0) |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
case BIO_CTRL_PENDING: /* More to read in buffer */ |
|||
ret=ctx->buf_len-ctx->buf_off; |
|||
if (ret <= 0) |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
case BIO_CTRL_FLUSH: |
|||
/* do a final write */ |
|||
again: |
|||
while (ctx->buf_len != ctx->buf_off) |
|||
{ |
|||
i=ber_write(b,NULL,0); |
|||
if (i < 0) |
|||
{ |
|||
ret=i; |
|||
break; |
|||
} |
|||
} |
|||
|
|||
if (!ctx->finished) |
|||
{ |
|||
ctx->finished=1; |
|||
ctx->buf_off=0; |
|||
ret=EVP_CipherFinal_ex(&(ctx->cipher), |
|||
(unsigned char *)ctx->buf, |
|||
&(ctx->buf_len)); |
|||
ctx->ok=(int)ret; |
|||
if (ret <= 0) break; |
|||
|
|||
/* push out the bytes */ |
|||
goto again; |
|||
} |
|||
|
|||
/* Finally flush the underlying BIO */ |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
case BIO_C_GET_CIPHER_STATUS: |
|||
ret=(long)ctx->ok; |
|||
break; |
|||
case BIO_C_DO_STATE_MACHINE: |
|||
BIO_clear_retry_flags(b); |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
BIO_copy_next_retry(b); |
|||
break; |
|||
|
|||
case BIO_CTRL_DUP: |
|||
dbio=(BIO *)ptr; |
|||
dctx=(BIO_ENC_CTX *)dbio->ptr; |
|||
memcpy(&(dctx->cipher),&(ctx->cipher),sizeof(ctx->cipher)); |
|||
dbio->init=1; |
|||
break; |
|||
default: |
|||
ret=BIO_ctrl(b->next_bio,cmd,num,ptr); |
|||
break; |
|||
} |
|||
return(ret); |
|||
} |
|||
|
|||
static long ber_callback_ctrl(BIO *b, int cmd, void *(*fp)()) |
|||
{ |
|||
long ret=1; |
|||
|
|||
if (b->next_bio == NULL) return(0); |
|||
switch (cmd) |
|||
{ |
|||
default: |
|||
ret=BIO_callback_ctrl(b->next_bio,cmd,fp); |
|||
break; |
|||
} |
|||
return(ret); |
|||
} |
|||
|
|||
/*
|
|||
void BIO_set_cipher_ctx(b,c) |
|||
BIO *b; |
|||
EVP_CIPHER_ctx *c; |
|||
{ |
|||
if (b == NULL) return; |
|||
|
|||
if ((b->callback != NULL) && |
|||
(b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,0L) <= 0)) |
|||
return; |
|||
|
|||
b->init=1; |
|||
ctx=(BIO_ENC_CTX *)b->ptr; |
|||
memcpy(ctx->cipher,c,sizeof(EVP_CIPHER_CTX)); |
|||
|
|||
if (b->callback != NULL) |
|||
b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,1L); |
|||
} |
|||
*/ |
|||
|
|||
void BIO_set_cipher(BIO *b, EVP_CIPHER *c, unsigned char *k, unsigned char *i, |
|||
int e) |
|||
{ |
|||
BIO_ENC_CTX *ctx; |
|||
|
|||
if (b == NULL) return; |
|||
|
|||
if ((b->callback != NULL) && |
|||
(b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,0L) <= 0)) |
|||
return; |
|||
|
|||
b->init=1; |
|||
ctx=(BIO_ENC_CTX *)b->ptr; |
|||
EVP_CipherInit_ex(&(ctx->cipher),c,NULL,k,i,e); |
|||
|
|||
if (b->callback != NULL) |
|||
b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,1L); |
|||
} |
|||
|
@ -1,248 +0,0 @@ |
|||
/* crypto/pkcs7/verify.c */ |
|||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
|||
* All rights reserved. |
|||
* |
|||
* This package is an SSL implementation written |
|||
* by Eric Young (eay@cryptsoft.com). |
|||
* The implementation was written so as to conform with Netscapes SSL. |
|||
* |
|||
* This library is free for commercial and non-commercial use as long as |
|||
* the following conditions are aheared to. The following conditions |
|||
* apply to all code found in this distribution, be it the RC4, RSA, |
|||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation |
|||
* included with this distribution is covered by the same copyright terms |
|||
* except that the holder is Tim Hudson (tjh@cryptsoft.com). |
|||
* |
|||
* Copyright remains Eric Young's, and as such any Copyright notices in |
|||
* the code are not to be removed. |
|||
* If this package is used in a product, Eric Young should be given attribution |
|||
* as the author of the parts of the library used. |
|||
* This can be in the form of a textual message at program startup or |
|||
* in documentation (online or textual) provided with the package. |
|||
* |
|||
* 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 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 acknowledgement: |
|||
* "This product includes cryptographic software written by |
|||
* Eric Young (eay@cryptsoft.com)" |
|||
* The word 'cryptographic' can be left out if the rouines from the library |
|||
* being used are not cryptographic related :-). |
|||
* 4. If you include any Windows specific code (or a derivative thereof) from |
|||
* the apps directory (application code) you must include an acknowledgement: |
|||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
|||
* ANY EXPRESS 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 AUTHOR OR 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. |
|||
* |
|||
* The licence and distribution terms for any publically available version or |
|||
* derivative of this code cannot be changed. i.e. this code cannot simply be |
|||
* copied and put under another distribution licence |
|||
* [including the GNU Public Licence.] |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <openssl/bio.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/err.h> |
|||
#include <openssl/asn1.h> |
|||
|
|||
int verify_callback(int ok, X509_STORE_CTX *ctx); |
|||
|
|||
BIO *bio_err=NULL; |
|||
|
|||
int main(argc,argv) |
|||
int argc; |
|||
char *argv[]; |
|||
{ |
|||
char *keyfile=NULL; |
|||
BIO *in; |
|||
EVP_PKEY *pkey; |
|||
X509 *x509; |
|||
PKCS7 *p7; |
|||
PKCS7_SIGNER_INFO *si; |
|||
X509_STORE_CTX cert_ctx; |
|||
X509_STORE *cert_store=NULL; |
|||
BIO *data,*detached=NULL,*p7bio=NULL; |
|||
char buf[1024*4]; |
|||
unsigned char *pp; |
|||
int i,printit=0; |
|||
STACK_OF(PKCS7_SIGNER_INFO) *sk; |
|||
|
|||
OpenSSL_add_all_algorithms(); |
|||
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); |
|||
|
|||
data=BIO_new(BIO_s_file()); |
|||
pp=NULL; |
|||
while (argc > 1) |
|||
{ |
|||
argc--; |
|||
argv++; |
|||
if (strcmp(argv[0],"-p") == 0) |
|||
{ |
|||
printit=1; |
|||
} |
|||
else if ((strcmp(argv[0],"-k") == 0) && (argc >= 2)) { |
|||
keyfile = argv[1]; |
|||
argc-=1; |
|||
argv+=1; |
|||
} else if ((strcmp(argv[0],"-d") == 0) && (argc >= 2)) |
|||
{ |
|||
detached=BIO_new(BIO_s_file()); |
|||
if (!BIO_read_filename(detached,argv[1])) |
|||
goto err; |
|||
argc-=1; |
|||
argv+=1; |
|||
} |
|||
else break; |
|||
} |
|||
|
|||
if (!BIO_read_filename(data,argv[0])) goto err; |
|||
|
|||
if(!keyfile) { |
|||
fprintf(stderr, "No private key file specified\n"); |
|||
goto err; |
|||
} |
|||
|
|||
if ((in=BIO_new_file(keyfile,"r")) == NULL) goto err; |
|||
if ((x509=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL) goto err; |
|||
BIO_reset(in); |
|||
if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL,NULL)) == NULL) |
|||
goto err; |
|||
BIO_free(in); |
|||
|
|||
if (pp == NULL) |
|||
BIO_set_fp(data,stdin,BIO_NOCLOSE); |
|||
|
|||
|
|||
/* Load the PKCS7 object from a file */ |
|||
if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL,NULL)) == NULL) goto err; |
|||
|
|||
|
|||
|
|||
/* This stuff is being setup for certificate verification.
|
|||
* When using SSL, it could be replaced with a |
|||
* cert_stre=SSL_CTX_get_cert_store(ssl_ctx); */ |
|||
cert_store=X509_STORE_new(); |
|||
X509_STORE_set_default_paths(cert_store); |
|||
X509_STORE_load_locations(cert_store,NULL,"../../certs"); |
|||
X509_STORE_set_verify_cb_func(cert_store,verify_callback); |
|||
|
|||
ERR_clear_error(); |
|||
|
|||
/* We need to process the data */ |
|||
/* We cannot support detached encryption */ |
|||
p7bio=PKCS7_dataDecode(p7,pkey,detached,x509); |
|||
|
|||
if (p7bio == NULL) |
|||
{ |
|||
printf("problems decoding\n"); |
|||
goto err; |
|||
} |
|||
|
|||
/* We now have to 'read' from p7bio to calculate digests etc. */ |
|||
for (;;) |
|||
{ |
|||
i=BIO_read(p7bio,buf,sizeof(buf)); |
|||
/* print it? */ |
|||
if (i <= 0) break; |
|||
fwrite(buf,1, i, stdout); |
|||
} |
|||
|
|||
/* We can now verify signatures */ |
|||
sk=PKCS7_get_signer_info(p7); |
|||
if (sk == NULL) |
|||
{ |
|||
fprintf(stderr, "there are no signatures on this data\n"); |
|||
} |
|||
else |
|||
{ |
|||
/* Ok, first we need to, for each subject entry,
|
|||
* see if we can verify */ |
|||
ERR_clear_error(); |
|||
for (i=0; i<sk_PKCS7_SIGNER_INFO_num(sk); i++) |
|||
{ |
|||
si=sk_PKCS7_SIGNER_INFO_value(sk,i); |
|||
i=PKCS7_dataVerify(cert_store,&cert_ctx,p7bio,p7,si); |
|||
if (i <= 0) |
|||
goto err; |
|||
else |
|||
fprintf(stderr,"Signature verified\n"); |
|||
} |
|||
} |
|||
X509_STORE_free(cert_store); |
|||
|
|||
exit(0); |
|||
err: |
|||
ERR_load_crypto_strings(); |
|||
ERR_print_errors_fp(stderr); |
|||
exit(1); |
|||
} |
|||
|
|||
/* should be X509 * but we can just have them as char *. */ |
|||
int verify_callback(int ok, X509_STORE_CTX *ctx) |
|||
{ |
|||
char buf[256]; |
|||
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); |
|||
|
|||
X509_NAME_oneline(X509_get_subject_name(err_cert),buf,256); |
|||
BIO_printf(bio_err,"depth=%d %s\n",depth,buf); |
|||
if (!ok) |
|||
{ |
|||
BIO_printf(bio_err,"verify error:num=%d:%s\n",err, |
|||
X509_verify_cert_error_string(err)); |
|||
if (depth < 6) |
|||
{ |
|||
ok=1; |
|||
X509_STORE_CTX_set_error(ctx,X509_V_OK); |
|||
} |
|||
else |
|||
{ |
|||
ok=0; |
|||
X509_STORE_CTX_set_error(ctx,X509_V_ERR_CERT_CHAIN_TOO_LONG); |
|||
} |
|||
} |
|||
switch (ctx->error) |
|||
{ |
|||
case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: |
|||
X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),buf,256); |
|||
BIO_printf(bio_err,"issuer= %s\n",buf); |
|||
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_UTCTIME_print(bio_err,X509_get_notBefore(ctx->current_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_UTCTIME_print(bio_err,X509_get_notAfter(ctx->current_cert)); |
|||
BIO_printf(bio_err,"\n"); |
|||
break; |
|||
} |
|||
BIO_printf(bio_err,"verify return:%d\n",ok); |
|||
return(ok); |
|||
} |
@ -1,15 +0,0 @@ |
|||
|
|||
MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG |
|||
A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD |
|||
ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEC2vXI1xQDW6lUHM3zQ |
|||
/9uBEBOO5A3TtkrklAXq7v01gsIC21t52qSk36REXY+slhNZ0OQ349tgkTsoETHFLoEwMIHw |
|||
AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI |
|||
QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU |
|||
UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR9MA0G |
|||
CSqGSIb3DQEBAQUABEB8ujxbabxXUYJhopuDm3oDq4JNqX6Io4p3ro+ShqfIndsXTZ1v5a2N |
|||
WtLLCWlHn/habjBwZ/DgQgcKASbZ7QxNMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA |
|||
oAQIbsL5v1wX98KggAQoAaJ4WHm68fXY1WE5OIjfVBIDpO1K+i8dmKhjnAjrjoyZ9Bwc8rDL |
|||
lgQg4CXb805h5xl+GfvSwUaHJayte1m2mcOhs3J2YyqbQ+MEIMIiJQccmhO3oDKm36CFvYR8 |
|||
5PjpclVcZyX2ngbwPFMnBAgy0clOAE6UKAAAAAAAAAAAAAA= |
|||
|
@ -1,24 +0,0 @@ |
|||
int PKCS7_set_content_type(PKCS7 *p7, int type); |
|||
Call to set the type of PKCS7 object we are working on |
|||
|
|||
int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, |
|||
EVP_MD *dgst); |
|||
Use this to setup a signer info |
|||
There will also be functions to add signed and unsigned attributes. |
|||
|
|||
int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); |
|||
Add a signer info to the content. |
|||
|
|||
int PKCS7_add_certificae(PKCS7 *p7, X509 *x509); |
|||
int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); |
|||
|
|||
---- |
|||
|
|||
p7=PKCS7_new(); |
|||
PKCS7_set_content_type(p7,NID_pkcs7_signed); |
|||
|
|||
signer=PKCS7_SINGNER_INFO_new(); |
|||
PKCS7_SIGNER_INFO_set(signer,x509,pkey,EVP_md5()); |
|||
PKCS7_add_signer(py,signer); |
|||
|
|||
we are now setup. |
@ -1,174 +0,0 @@ |
|||
/* crypto/pkcs7/enc.c */ |
|||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
|||
* All rights reserved. |
|||
* |
|||
* This package is an SSL implementation written |
|||
* by Eric Young (eay@cryptsoft.com). |
|||
* The implementation was written so as to conform with Netscapes SSL. |
|||
* |
|||
* This library is free for commercial and non-commercial use as long as |
|||
* the following conditions are aheared to. The following conditions |
|||
* apply to all code found in this distribution, be it the RC4, RSA, |
|||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation |
|||
* included with this distribution is covered by the same copyright terms |
|||
* except that the holder is Tim Hudson (tjh@cryptsoft.com). |
|||
* |
|||
* Copyright remains Eric Young's, and as such any Copyright notices in |
|||
* the code are not to be removed. |
|||
* If this package is used in a product, Eric Young should be given attribution |
|||
* as the author of the parts of the library used. |
|||
* This can be in the form of a textual message at program startup or |
|||
* in documentation (online or textual) provided with the package. |
|||
* |
|||
* 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 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 acknowledgement: |
|||
* "This product includes cryptographic software written by |
|||
* Eric Young (eay@cryptsoft.com)" |
|||
* The word 'cryptographic' can be left out if the rouines from the library |
|||
* being used are not cryptographic related :-). |
|||
* 4. If you include any Windows specific code (or a derivative thereof) from |
|||
* the apps directory (application code) you must include an acknowledgement: |
|||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
|||
* ANY EXPRESS 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 AUTHOR OR 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. |
|||
* |
|||
* The licence and distribution terms for any publically available version or |
|||
* derivative of this code cannot be changed. i.e. this code cannot simply be |
|||
* copied and put under another distribution licence |
|||
* [including the GNU Public Licence.] |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#include <openssl/bio.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/err.h> |
|||
|
|||
int main(argc,argv) |
|||
int argc; |
|||
char *argv[]; |
|||
{ |
|||
X509 *x509; |
|||
PKCS7 *p7; |
|||
BIO *in; |
|||
BIO *data,*p7bio; |
|||
char buf[1024*4]; |
|||
int i; |
|||
int nodetach=1; |
|||
char *keyfile = NULL; |
|||
const EVP_CIPHER *cipher=NULL; |
|||
STACK_OF(X509) *recips=NULL; |
|||
|
|||
OpenSSL_add_all_algorithms(); |
|||
|
|||
data=BIO_new(BIO_s_file()); |
|||
while(argc > 1) |
|||
{ |
|||
if (strcmp(argv[1],"-nd") == 0) |
|||
{ |
|||
nodetach=1; |
|||
argv++; argc--; |
|||
} |
|||
else if ((strcmp(argv[1],"-c") == 0) && (argc >= 2)) { |
|||
if(!(cipher = EVP_get_cipherbyname(argv[2]))) { |
|||
fprintf(stderr, "Unknown cipher %s\n", argv[2]); |
|||
goto err; |
|||
} |
|||
argc-=2; |
|||
argv+=2; |
|||
} else if ((strcmp(argv[1],"-k") == 0) && (argc >= 2)) { |
|||
keyfile = argv[2]; |
|||
argc-=2; |
|||
argv+=2; |
|||
if (!(in=BIO_new_file(keyfile,"r"))) goto err; |
|||
if (!(x509=PEM_read_bio_X509(in,NULL,NULL,NULL))) |
|||
goto err; |
|||
if(!recips) recips = sk_X509_new_null(); |
|||
sk_X509_push(recips, x509); |
|||
BIO_free(in); |
|||
} else break; |
|||
} |
|||
|
|||
if(!recips) { |
|||
fprintf(stderr, "No recipients\n"); |
|||
goto err; |
|||
} |
|||
|
|||
if (!BIO_read_filename(data,argv[1])) goto err; |
|||
|
|||
p7=PKCS7_new(); |
|||
#if 0 |
|||
BIO_reset(in); |
|||
if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL)) == NULL) goto err; |
|||
BIO_free(in); |
|||
PKCS7_set_type(p7,NID_pkcs7_signedAndEnveloped); |
|||
|
|||
if (PKCS7_add_signature(p7,x509,pkey,EVP_sha1()) == NULL) goto err; |
|||
/* we may want to add more */ |
|||
PKCS7_add_certificate(p7,x509); |
|||
#else |
|||
PKCS7_set_type(p7,NID_pkcs7_enveloped); |
|||
#endif |
|||
if(!cipher) { |
|||
#ifndef OPENSSL_NO_DES |
|||
cipher = EVP_des_ede3_cbc(); |
|||
#else |
|||
fprintf(stderr, "No cipher selected\n"); |
|||
goto err; |
|||
#endif |
|||
} |
|||
|
|||
if (!PKCS7_set_cipher(p7,cipher)) goto err; |
|||
for(i = 0; i < sk_X509_num(recips); i++) { |
|||
if (!PKCS7_add_recipient(p7,sk_X509_value(recips, i))) goto err; |
|||
} |
|||
sk_X509_pop_free(recips, X509_free); |
|||
|
|||
/* Set the content of the signed to 'data' */ |
|||
/* PKCS7_content_new(p7,NID_pkcs7_data); not used in envelope */ |
|||
|
|||
/* could be used, but not in this version :-)
|
|||
if (!nodetach) PKCS7_set_detached(p7,1); |
|||
*/ |
|||
|
|||
if ((p7bio=PKCS7_dataInit(p7,NULL)) == NULL) goto err; |
|||
|
|||
for (;;) |
|||
{ |
|||
i=BIO_read(data,buf,sizeof(buf)); |
|||
if (i <= 0) break; |
|||
BIO_write(p7bio,buf,i); |
|||
} |
|||
BIO_flush(p7bio); |
|||
|
|||
if (!PKCS7_dataFinal(p7,p7bio)) goto err; |
|||
BIO_free(p7bio); |
|||
|
|||
PEM_write_PKCS7(stdout,p7); |
|||
PKCS7_free(p7); |
|||
|
|||
exit(0); |
|||
err: |
|||
ERR_load_crypto_strings(); |
|||
ERR_print_errors_fp(stderr); |
|||
exit(1); |
|||
} |
|||
|
@ -1,66 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG |
|||
A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD |
|||
ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0GCSqGSIb3DQEBAQUABEDWak0y/5XZJhQJeCLo |
|||
KECcHXkTEbjzYkYNHIinbiPmRK4QbNfs9z2mA3z/c2ykQ4eAqFR2jyNrUMN/+I5XEiv6MIHw |
|||
AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI |
|||
QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU |
|||
UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR9MA0G |
|||
CSqGSIb3DQEBAQUABEAWg9+KgtCjc77Jdj1Ve4wGgHjVHbbSYEA1ZqKFDoi15vSr9hfpHmC4 |
|||
ycZzcRo16JkTfolefiHZzmyjVz94vSN6MIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA |
|||
oAQI7X4Tk4mcbV6ggASBsHl1mCaJ3RhXWlNPCgCRU53d7M5x6TDZRkvwdtdvW96m1lupT03F |
|||
XtonkBqk7oMkH7kGfs5/REQOPjx0QE2Ixmgt1W3szum82EZwA7pZNppcraK7W/odw/7bYZO+ |
|||
II3HPmRklE2N9qiu1LPaPUsnYogkO6SennyeL5tZ382vBweL/8pnG0qsbT1OBb65v+llnsjT |
|||
pa1T/p+fIx/iJJGE6K9fYFokC6gXLQ6ozXRdOu5oBDB8mPCYYvAqKycidM/MrGGUkpEtS4f0 |
|||
lS31PwQi5YTim8Ig3/TOwVpPX32i46FTuEIEIMHkD/OvpfwCCzXUHHJnKnKUAUvIsSY3vGBs |
|||
8ezpUDfBBBj9LHDy32hZ2tQilkDefP5VM2LLdrWgamYEgfiyITQvn08Ul5lQOQxbFKBheFq5 |
|||
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 |
|||
-----END PKCS7----- |
@ -1,329 +0,0 @@ |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <openssl/pkcs7.h> |
|||
#include <openssl/asn1_mac.h> |
|||
#include <openssl/x509.h> |
|||
|
|||
int add_signed_time(PKCS7_SIGNER_INFO *si) |
|||
{ |
|||
ASN1_UTCTIME *sign_time; |
|||
|
|||
/* The last parameter is the amount to add/subtract from the current
|
|||
* time (in seconds) */ |
|||
sign_time=X509_gmtime_adj(NULL,0); |
|||
PKCS7_add_signed_attribute(si,NID_pkcs9_signingTime, |
|||
V_ASN1_UTCTIME,(char *)sign_time); |
|||
return(1); |
|||
} |
|||
|
|||
ASN1_UTCTIME *get_signed_time(PKCS7_SIGNER_INFO *si) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
|
|||
so=PKCS7_get_signed_attribute(si,NID_pkcs9_signingTime); |
|||
if (so->type == V_ASN1_UTCTIME) |
|||
return so->value.utctime; |
|||
return NULL; |
|||
} |
|||
|
|||
static int signed_string_nid= -1; |
|||
|
|||
void add_signed_string(PKCS7_SIGNER_INFO *si, char *str) |
|||
{ |
|||
ASN1_OCTET_STRING *os; |
|||
|
|||
/* To a an object of OID 1.2.3.4.5, which is an octet string */ |
|||
if (signed_string_nid == -1) |
|||
signed_string_nid= |
|||
OBJ_create("1.2.3.4.5","OID_example","Our example OID"); |
|||
os=ASN1_OCTET_STRING_new(); |
|||
ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str)); |
|||
/* When we add, we do not free */ |
|||
PKCS7_add_signed_attribute(si,signed_string_nid, |
|||
V_ASN1_OCTET_STRING,(char *)os); |
|||
} |
|||
|
|||
int get_signed_string(PKCS7_SIGNER_INFO *si, char *buf, int len) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
ASN1_OCTET_STRING *os; |
|||
int i; |
|||
|
|||
if (signed_string_nid == -1) |
|||
signed_string_nid= |
|||
OBJ_create("1.2.3.4.5","OID_example","Our example OID"); |
|||
/* To retrieve */ |
|||
so=PKCS7_get_signed_attribute(si,signed_string_nid); |
|||
if (so != NULL) |
|||
{ |
|||
if (so->type == V_ASN1_OCTET_STRING) |
|||
{ |
|||
os=so->value.octet_string; |
|||
i=os->length; |
|||
if ((i+1) > len) |
|||
i=len-1; |
|||
memcpy(buf,os->data,i); |
|||
return(i); |
|||
} |
|||
} |
|||
return(0); |
|||
} |
|||
|
|||
static int signed_seq2string_nid= -1; |
|||
/* ########################################### */ |
|||
int add_signed_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2) |
|||
{ |
|||
/* To add an object of OID 1.9.999, which is a sequence containing
|
|||
* 2 octet strings */ |
|||
unsigned char *p; |
|||
ASN1_OCTET_STRING *os1,*os2; |
|||
ASN1_STRING *seq; |
|||
unsigned char *data; |
|||
int i,total; |
|||
|
|||
if (signed_seq2string_nid == -1) |
|||
signed_seq2string_nid= |
|||
OBJ_create("1.9.9999","OID_example","Our example OID"); |
|||
|
|||
os1=ASN1_OCTET_STRING_new(); |
|||
os2=ASN1_OCTET_STRING_new(); |
|||
ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1)); |
|||
ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1)); |
|||
i =i2d_ASN1_OCTET_STRING(os1,NULL); |
|||
i+=i2d_ASN1_OCTET_STRING(os2,NULL); |
|||
total=ASN1_object_size(1,i,V_ASN1_SEQUENCE); |
|||
|
|||
data=malloc(total); |
|||
p=data; |
|||
ASN1_put_object(&p,1,i,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL); |
|||
i2d_ASN1_OCTET_STRING(os1,&p); |
|||
i2d_ASN1_OCTET_STRING(os2,&p); |
|||
|
|||
seq=ASN1_STRING_new(); |
|||
ASN1_STRING_set(seq,data,total); |
|||
free(data); |
|||
ASN1_OCTET_STRING_free(os1); |
|||
ASN1_OCTET_STRING_free(os2); |
|||
|
|||
PKCS7_add_signed_attribute(si,signed_seq2string_nid, |
|||
V_ASN1_SEQUENCE,(char *)seq); |
|||
return(1); |
|||
} |
|||
|
|||
/* For this case, I will malloc the return strings */ |
|||
int get_signed_seq2string(PKCS7_SIGNER_INFO *si, char **str1, char **str2) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
|
|||
if (signed_seq2string_nid == -1) |
|||
signed_seq2string_nid= |
|||
OBJ_create("1.9.9999","OID_example","Our example OID"); |
|||
/* To retrieve */ |
|||
so=PKCS7_get_signed_attribute(si,signed_seq2string_nid); |
|||
if (so && (so->type == V_ASN1_SEQUENCE)) |
|||
{ |
|||
ASN1_const_CTX c; |
|||
ASN1_STRING *s; |
|||
long length; |
|||
ASN1_OCTET_STRING *os1,*os2; |
|||
|
|||
s=so->value.sequence; |
|||
c.p=ASN1_STRING_data(s); |
|||
c.max=c.p+ASN1_STRING_length(s); |
|||
if (!asn1_GetSequence(&c,&length)) goto err; |
|||
/* Length is the length of the seqence */ |
|||
|
|||
c.q=c.p; |
|||
if ((os1=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) |
|||
goto err; |
|||
c.slen-=(c.p-c.q); |
|||
|
|||
c.q=c.p; |
|||
if ((os2=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) |
|||
goto err; |
|||
c.slen-=(c.p-c.q); |
|||
|
|||
if (!asn1_const_Finish(&c)) goto err; |
|||
*str1=malloc(os1->length+1); |
|||
*str2=malloc(os2->length+1); |
|||
memcpy(*str1,os1->data,os1->length); |
|||
memcpy(*str2,os2->data,os2->length); |
|||
(*str1)[os1->length]='\0'; |
|||
(*str2)[os2->length]='\0'; |
|||
ASN1_OCTET_STRING_free(os1); |
|||
ASN1_OCTET_STRING_free(os2); |
|||
return(1); |
|||
} |
|||
err: |
|||
return(0); |
|||
} |
|||
|
|||
|
|||
/* #######################################
|
|||
* THE OTHER WAY TO DO THINGS |
|||
* ####################################### |
|||
*/ |
|||
X509_ATTRIBUTE *create_time(void) |
|||
{ |
|||
ASN1_UTCTIME *sign_time; |
|||
X509_ATTRIBUTE *ret; |
|||
|
|||
/* The last parameter is the amount to add/subtract from the current
|
|||
* time (in seconds) */ |
|||
sign_time=X509_gmtime_adj(NULL,0); |
|||
ret=X509_ATTRIBUTE_create(NID_pkcs9_signingTime, |
|||
V_ASN1_UTCTIME,(char *)sign_time); |
|||
return(ret); |
|||
} |
|||
|
|||
ASN1_UTCTIME *sk_get_time(STACK_OF(X509_ATTRIBUTE) *sk) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
PKCS7_SIGNER_INFO si; |
|||
|
|||
si.auth_attr=sk; |
|||
so=PKCS7_get_signed_attribute(&si,NID_pkcs9_signingTime); |
|||
if (so->type == V_ASN1_UTCTIME) |
|||
return so->value.utctime; |
|||
return NULL; |
|||
} |
|||
|
|||
X509_ATTRIBUTE *create_string(char *str) |
|||
{ |
|||
ASN1_OCTET_STRING *os; |
|||
X509_ATTRIBUTE *ret; |
|||
|
|||
/* To a an object of OID 1.2.3.4.5, which is an octet string */ |
|||
if (signed_string_nid == -1) |
|||
signed_string_nid= |
|||
OBJ_create("1.2.3.4.5","OID_example","Our example OID"); |
|||
os=ASN1_OCTET_STRING_new(); |
|||
ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str)); |
|||
/* When we add, we do not free */ |
|||
ret=X509_ATTRIBUTE_create(signed_string_nid, |
|||
V_ASN1_OCTET_STRING,(char *)os); |
|||
return(ret); |
|||
} |
|||
|
|||
int sk_get_string(STACK_OF(X509_ATTRIBUTE) *sk, char *buf, int len) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
ASN1_OCTET_STRING *os; |
|||
int i; |
|||
PKCS7_SIGNER_INFO si; |
|||
|
|||
si.auth_attr=sk; |
|||
|
|||
if (signed_string_nid == -1) |
|||
signed_string_nid= |
|||
OBJ_create("1.2.3.4.5","OID_example","Our example OID"); |
|||
/* To retrieve */ |
|||
so=PKCS7_get_signed_attribute(&si,signed_string_nid); |
|||
if (so != NULL) |
|||
{ |
|||
if (so->type == V_ASN1_OCTET_STRING) |
|||
{ |
|||
os=so->value.octet_string; |
|||
i=os->length; |
|||
if ((i+1) > len) |
|||
i=len-1; |
|||
memcpy(buf,os->data,i); |
|||
return(i); |
|||
} |
|||
} |
|||
return(0); |
|||
} |
|||
|
|||
X509_ATTRIBUTE *add_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2) |
|||
{ |
|||
/* To add an object of OID 1.9.999, which is a sequence containing
|
|||
* 2 octet strings */ |
|||
unsigned char *p; |
|||
ASN1_OCTET_STRING *os1,*os2; |
|||
ASN1_STRING *seq; |
|||
X509_ATTRIBUTE *ret; |
|||
unsigned char *data; |
|||
int i,total; |
|||
|
|||
if (signed_seq2string_nid == -1) |
|||
signed_seq2string_nid= |
|||
OBJ_create("1.9.9999","OID_example","Our example OID"); |
|||
|
|||
os1=ASN1_OCTET_STRING_new(); |
|||
os2=ASN1_OCTET_STRING_new(); |
|||
ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1)); |
|||
ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1)); |
|||
i =i2d_ASN1_OCTET_STRING(os1,NULL); |
|||
i+=i2d_ASN1_OCTET_STRING(os2,NULL); |
|||
total=ASN1_object_size(1,i,V_ASN1_SEQUENCE); |
|||
|
|||
data=malloc(total); |
|||
p=data; |
|||
ASN1_put_object(&p,1,i,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL); |
|||
i2d_ASN1_OCTET_STRING(os1,&p); |
|||
i2d_ASN1_OCTET_STRING(os2,&p); |
|||
|
|||
seq=ASN1_STRING_new(); |
|||
ASN1_STRING_set(seq,data,total); |
|||
free(data); |
|||
ASN1_OCTET_STRING_free(os1); |
|||
ASN1_OCTET_STRING_free(os2); |
|||
|
|||
ret=X509_ATTRIBUTE_create(signed_seq2string_nid, |
|||
V_ASN1_SEQUENCE,(char *)seq); |
|||
return(ret); |
|||
} |
|||
|
|||
/* For this case, I will malloc the return strings */ |
|||
int sk_get_seq2string(STACK_OF(X509_ATTRIBUTE) *sk, char **str1, char **str2) |
|||
{ |
|||
ASN1_TYPE *so; |
|||
PKCS7_SIGNER_INFO si; |
|||
|
|||
if (signed_seq2string_nid == -1) |
|||
signed_seq2string_nid= |
|||
OBJ_create("1.9.9999","OID_example","Our example OID"); |
|||
|
|||
si.auth_attr=sk; |
|||
/* To retrieve */ |
|||
so=PKCS7_get_signed_attribute(&si,signed_seq2string_nid); |
|||
if (so->type == V_ASN1_SEQUENCE) |
|||
{ |
|||
ASN1_const_CTX c; |
|||
ASN1_STRING *s; |
|||
long length; |
|||
ASN1_OCTET_STRING *os1,*os2; |
|||
|
|||
s=so->value.sequence; |
|||
c.p=ASN1_STRING_data(s); |
|||
c.max=c.p+ASN1_STRING_length(s); |
|||
if (!asn1_GetSequence(&c,&length)) goto err; |
|||
/* Length is the length of the seqence */ |
|||
|
|||
c.q=c.p; |
|||
if ((os1=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) |
|||
goto err; |
|||
c.slen-=(c.p-c.q); |
|||
|
|||
c.q=c.p; |
|||
if ((os2=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) |
|||
goto err; |
|||
c.slen-=(c.p-c.q); |
|||
|
|||
if (!asn1_const_Finish(&c)) goto err; |
|||
*str1=malloc(os1->length+1); |
|||
*str2=malloc(os2->length+1); |
|||
memcpy(*str1,os1->data,os1->length); |
|||
memcpy(*str2,os2->data,os2->length); |
|||
(*str1)[os1->length]='\0'; |
|||
(*str2)[os2->length]='\0'; |
|||
ASN1_OCTET_STRING_free(os1); |
|||
ASN1_OCTET_STRING_free(os2); |
|||
return(1); |
|||
} |
|||
err: |
|||
return(0); |
|||
} |
|||
|
|||
|
@ -1,57 +0,0 @@ |
|||
issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA |
|||
subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com |
|||
serial :047D |
|||
|
|||
Certificate: |
|||
Data: |
|||
Version: 3 (0x2) |
|||
Serial Number: 1149 (0x47d) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA |
|||
Validity |
|||
Not Before: May 13 05:40:58 1998 GMT |
|||
Not After : May 12 05:40:58 2000 GMT |
|||
Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com |
|||
Subject Public Key Info: |
|||
Public Key Algorithm: rsaEncryption |
|||
Modulus: |
|||
00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: |
|||
73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: |
|||
89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: |
|||
fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: |
|||
e7:e7:0c:4d:0b |
|||
Exponent: 65537 (0x10001) |
|||
X509v3 extensions: |
|||
Netscape Comment: |
|||
Generated with SSLeay |
|||
Signature Algorithm: md5withRSAEncryption |
|||
52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: |
|||
f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: |
|||
d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: |
|||
50:74:ad:92:cb:4e:90:e5:fa:7d |
|||
|
|||
-----BEGIN CERTIFICATE----- |
|||
MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV |
|||
MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE |
|||
ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E |
|||
IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw |
|||
NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK |
|||
UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 |
|||
aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG |
|||
9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf |
|||
lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB |
|||
hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA |
|||
UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 |
|||
4A3ZItobUHStkstOkOX6fQ== |
|||
-----END CERTIFICATE----- |
|||
|
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 |
|||
mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG |
|||
fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ |
|||
zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 |
|||
p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b |
|||
bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk |
|||
IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG |
|||
-----END RSA PRIVATE KEY----- |
@ -1,9 +0,0 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 |
|||
mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG |
|||
fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ |
|||
zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 |
|||
p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b |
|||
bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk |
|||
IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG |
|||
-----END RSA PRIVATE KEY----- |
@ -1,2 +0,0 @@ |
|||
j,H>_æá_DôzEîLœ VJ³ß觬¤””E3ûáYäx%_Àk |
|||
3ê)DLScñ8%ôM |
@ -1 +0,0 @@ |
|||
k~@a”,NâM͹¼ <O( KP—é¨ ¤K²>×U¿o_½BqrmÎ?Ù t?t÷�Ï�éId2‰Š |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,24 +0,0 @@ |
|||
issuer= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) |
|||
subject=/C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Server test cert (512 bit) |
|||
-----BEGIN CERTIFICATE----- |
|||
MIIB6TCCAVICAQAwDQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV |
|||
BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD |
|||
VQQDExJUZXN0IENBICgxMDI0IGJpdCkwHhcNOTcwNjA5MTM1NzQ2WhcNOTgwNjA5 |
|||
MTM1NzQ2WjBjMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDEaMBgG |
|||
A1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxIzAhBgNVBAMTGlNlcnZlciB0ZXN0IGNl |
|||
cnQgKDUxMiBiaXQpMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ+zw4Qnlf8SMVIP |
|||
Fe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVDTGiXav6ooKXfX3j/7tdkuD8Ey2// |
|||
Kv7+ue0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB4TMR2CvacKE9wAsu9jyCX8YiW |
|||
mgCM+YoP6kt4Zkj2z5IRfm7WrycKsnpnOR+tGeqAjkCeZ6/36o9l91RvPnN1VJ/i |
|||
xQv2df0KFeMr00IkDdTNAdIWqFkSsZTAY2QAdgenb7MB1joejquYzO2DQIO7+wpH |
|||
irObpESxAZLySCmPPg== |
|||
-----END CERTIFICATE----- |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBPAIBAAJBAJ+zw4Qnlf8SMVIPFe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVD |
|||
TGiXav6ooKXfX3j/7tdkuD8Ey2//Kv7+ue0CAwEAAQJAN6W31vDEP2DjdqhzCDDu |
|||
OA4NACqoiFqyblo7yc2tM4h4xMbC3Yx5UKMN9ZkCtX0gzrz6DyF47bdKcWBzNWCj |
|||
gQIhANEoojVt7hq+SQ6MCN6FTAysGgQf56Q3TYoJMoWvdiXVAiEAw3e3rc+VJpOz |
|||
rHuDo6bgpjUAAXM+v3fcpsfZSNO6V7kCIQCtbVjanpUwvZkMI9by02oUk9taki3b |
|||
PzPfAfNPYAbCJQIhAJXNQDWyqwn/lGmR11cqY2y9nZ1+5w3yHGatLrcDnQHxAiEA |
|||
vnlEGo8K85u+KwIOimM48ZG8oTk7iFdkqLJR1utT3aU= |
|||
-----END RSA PRIVATE KEY----- |
@ -1,154 +0,0 @@ |
|||
/* crypto/pkcs7/sign.c */ |
|||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
|||
* All rights reserved. |
|||
* |
|||
* This package is an SSL implementation written |
|||
* by Eric Young (eay@cryptsoft.com). |
|||
* The implementation was written so as to conform with Netscapes SSL. |
|||
* |
|||
* This library is free for commercial and non-commercial use as long as |
|||
* the following conditions are aheared to. The following conditions |
|||
* apply to all code found in this distribution, be it the RC4, RSA, |
|||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation |
|||
* included with this distribution is covered by the same copyright terms |
|||
* except that the holder is Tim Hudson (tjh@cryptsoft.com). |
|||
* |
|||
* Copyright remains Eric Young's, and as such any Copyright notices in |
|||
* the code are not to be removed. |
|||
* If this package is used in a product, Eric Young should be given attribution |
|||
* as the author of the parts of the library used. |
|||
* This can be in the form of a textual message at program startup or |
|||
* in documentation (online or textual) provided with the package. |
|||
* |
|||
* 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 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 acknowledgement: |
|||
* "This product includes cryptographic software written by |
|||
* Eric Young (eay@cryptsoft.com)" |
|||
* The word 'cryptographic' can be left out if the rouines from the library |
|||
* being used are not cryptographic related :-). |
|||
* 4. If you include any Windows specific code (or a derivative thereof) from |
|||
* the apps directory (application code) you must include an acknowledgement: |
|||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
|||
* ANY EXPRESS 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 AUTHOR OR 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. |
|||
* |
|||
* The licence and distribution terms for any publically available version or |
|||
* derivative of this code cannot be changed. i.e. this code cannot simply be |
|||
* copied and put under another distribution licence |
|||
* [including the GNU Public Licence.] |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#include <openssl/bio.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/err.h> |
|||
|
|||
int main(argc,argv) |
|||
int argc; |
|||
char *argv[]; |
|||
{ |
|||
X509 *x509; |
|||
EVP_PKEY *pkey; |
|||
PKCS7 *p7; |
|||
PKCS7_SIGNER_INFO *si; |
|||
BIO *in; |
|||
BIO *data,*p7bio; |
|||
char buf[1024*4]; |
|||
int i; |
|||
int nodetach=0; |
|||
|
|||
#ifndef OPENSSL_NO_MD2 |
|||
EVP_add_digest(EVP_md2()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_MD5 |
|||
EVP_add_digest(EVP_md5()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_SHA1 |
|||
EVP_add_digest(EVP_sha1()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_MDC2 |
|||
EVP_add_digest(EVP_mdc2()); |
|||
#endif |
|||
|
|||
data=BIO_new(BIO_s_file()); |
|||
again: |
|||
if (argc > 1) |
|||
{ |
|||
if (strcmp(argv[1],"-nd") == 0) |
|||
{ |
|||
nodetach=1; |
|||
argv++; argc--; |
|||
goto again; |
|||
} |
|||
if (!BIO_read_filename(data,argv[1])) |
|||
goto err; |
|||
} |
|||
else |
|||
BIO_set_fp(data,stdin,BIO_NOCLOSE); |
|||
|
|||
if ((in=BIO_new_file("server.pem","r")) == NULL) goto err; |
|||
if ((x509=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL) goto err; |
|||
BIO_reset(in); |
|||
if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL,NULL)) == NULL) goto err; |
|||
BIO_free(in); |
|||
|
|||
p7=PKCS7_new(); |
|||
PKCS7_set_type(p7,NID_pkcs7_signed); |
|||
|
|||
si=PKCS7_add_signature(p7,x509,pkey,EVP_sha1()); |
|||
if (si == NULL) goto err; |
|||
|
|||
/* If you do this then you get signing time automatically added */ |
|||
PKCS7_add_signed_attribute(si, NID_pkcs9_contentType, V_ASN1_OBJECT, |
|||
OBJ_nid2obj(NID_pkcs7_data)); |
|||
|
|||
/* we may want to add more */ |
|||
PKCS7_add_certificate(p7,x509); |
|||
|
|||
/* Set the content of the signed to 'data' */ |
|||
PKCS7_content_new(p7,NID_pkcs7_data); |
|||
|
|||
if (!nodetach) |
|||
PKCS7_set_detached(p7,1); |
|||
|
|||
if ((p7bio=PKCS7_dataInit(p7,NULL)) == NULL) goto err; |
|||
|
|||
for (;;) |
|||
{ |
|||
i=BIO_read(data,buf,sizeof(buf)); |
|||
if (i <= 0) break; |
|||
BIO_write(p7bio,buf,i); |
|||
} |
|||
|
|||
if (!PKCS7_dataFinal(p7,p7bio)) goto err; |
|||
BIO_free(p7bio); |
|||
|
|||
PEM_write_PKCS7(stdout,p7); |
|||
PKCS7_free(p7); |
|||
|
|||
exit(0); |
|||
err: |
|||
ERR_load_crypto_strings(); |
|||
ERR_print_errors_fp(stderr); |
|||
exit(1); |
|||
} |
|||
|
@ -1,16 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG |
|||
A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD |
|||
ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEC2vXI1xQDW6lUHM3zQ |
|||
/9uBEBOO5A3TtkrklAXq7v01gsIC21t52qSk36REXY+slhNZ0OQ349tgkTsoETHFLoEwMIHw |
|||
AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI |
|||
QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU |
|||
UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR9MA0G |
|||
CSqGSIb3DQEBAQUABEB8ujxbabxXUYJhopuDm3oDq4JNqX6Io4p3ro+ShqfIndsXTZ1v5a2N |
|||
WtLLCWlHn/habjBwZ/DgQgcKASbZ7QxNMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA |
|||
oAQIbsL5v1wX98KggAQoAaJ4WHm68fXY1WE5OIjfVBIDpO1K+i8dmKhjnAjrjoyZ9Bwc8rDL |
|||
lgQg4CXb805h5xl+GfvSwUaHJayte1m2mcOhs3J2YyqbQ+MEIMIiJQccmhO3oDKm36CFvYR8 |
|||
5PjpclVcZyX2ngbwPFMnBAgy0clOAE6UKAAAAAAAAAAAAAA= |
|||
-----END PKCS7----- |
|||
|
@ -1,32 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
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 |
|||
9CWR6g== |
|||
-----END PKCS7----- |
@ -1,48 +0,0 @@ |
|||
issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA |
|||
subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com |
|||
serial :047D |
|||
|
|||
Certificate: |
|||
Data: |
|||
Version: 3 (0x2) |
|||
Serial Number: 1149 (0x47d) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA |
|||
Validity |
|||
Not Before: May 13 05:40:58 1998 GMT |
|||
Not After : May 12 05:40:58 2000 GMT |
|||
Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com |
|||
Subject Public Key Info: |
|||
Public Key Algorithm: rsaEncryption |
|||
Modulus: |
|||
00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: |
|||
73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: |
|||
89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: |
|||
fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: |
|||
e7:e7:0c:4d:0b |
|||
Exponent: 65537 (0x10001) |
|||
X509v3 extensions: |
|||
Netscape Comment: |
|||
Generated with SSLeay |
|||
Signature Algorithm: md5withRSAEncryption |
|||
52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: |
|||
f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: |
|||
d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: |
|||
50:74:ad:92:cb:4e:90:e5:fa:7d |
|||
|
|||
-----BEGIN CERTIFICATE----- |
|||
MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV |
|||
MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE |
|||
ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E |
|||
IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw |
|||
NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK |
|||
UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 |
|||
aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG |
|||
9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf |
|||
lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB |
|||
hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA |
|||
UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 |
|||
4A3ZItobUHStkstOkOX6fQ== |
|||
-----END CERTIFICATE----- |
|||
|
@ -1,32 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
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 |
|||
9CWR6g== |
|||
-----END PKCS7----- |
@ -1,20 +0,0 @@ |
|||
|
|||
MIAGCSqGSIb3DQEHA6CAMIACAQAxggHCMIHMAgEAMHYwYjERMA8GA1UEBxMISW50ZXJuZXQxFzAV |
|||
BgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytWZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5k |
|||
aXZpZHVhbCBTdWJzY3JpYmVyAhBgQJiC3qfbCbjdj5INYLnKMA0GCSqGSIb3DQEBAQUABECMzu8y |
|||
wQ/qZbO8cAGMRBF+mPruv3+Dvb9aWNZ2k8njUgqF6mcdhVB2MkGcsG3memRXJBixvMYWVkU3qK4Z |
|||
VuKsMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UE |
|||
BxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU |
|||
UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0GCSqG |
|||
SIb3DQEBAQUABEBcWwYFHJbJGhiztt7lzue3Lc9CH5WAbyR+2BZ3uv+JxZfRs1PuaWPOwRa0Vgs3 |
|||
YwSJoRfxQj2Gk0wFqG1qt6d1MIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIAoAQI8vRlP/Nx |
|||
2iSggASCAZhR5srxyspy7DfomRJ9ff8eMCtaNwEoEx7G25PZRonC57hBvGoScLtEPU3Wp9FEbPN7 |
|||
oJESeC+AqMTyTLNy8aQsyC5s53E9UkoIvg62ekYZBbXZqXsrxx4PhiiX3NH8GVh42phB0Chjw0nK |
|||
HZeRDmxGY3Cmk+J+l0uVKxbNIfJIKOguLBnhqmnKH/PrnzDt591u0ULy2aTLqRm+4/1Yat/QPb6J |
|||
eoKGwNPBbS9ogBdrCNCp9ZFg3Xar2AtQHzyTQIfYeH3SRQUpKmRm5U5o9p5emgEdT+ZfJm/J4tSH |
|||
OmbgAFsbHQakA4MBZ4J5qfDJhOA2g5lWk1hIeu5Dn/AaLRZd0yz3oY0Ieo/erPWx/bCqtBzYbMe9 |
|||
qSFTedKlbc9EGe3opOTdBZVzK8KH3w3zsy5luxKdOUG59YYb5F1IZiWGiDyuo/HuacX+griu5LeD |
|||
bEzOtZnko+TZXvWIko30fD79j3T4MRRhWXbgj2HKza+4vJ0mzcC/1+GPsJjAEAA/JgIEDU4w6/DI |
|||
/HQHhLAO3G+9xKD7MvmrzkoAAAAAAAAAAAAA |
|||
|
|||
|
@ -1,22 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
MIAGCSqGSIb3DQEHA6CAMIIDkAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ |
|||
bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT |
|||
aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ |
|||
uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQIzO7zLBD+pls7xwAYxEEX6Y+u6/f4O9 |
|||
v1pY1naTyeNSCoXqZx2FUHYyQZywbeZ6ZFckGLG8xhZWRTeorhlW4qwwgfACAQAw |
|||
gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH |
|||
EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT |
|||
GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW |
|||
QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFxbBgUclskaGLO23uXO57ctz0If |
|||
lYBvJH7YFne6/4nFl9GzU+5pY87BFrRWCzdjBImhF/FCPYaTTAWobWq3p3UwggHD |
|||
BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECPL0ZT/zcdokgIIBmFHmyvHK |
|||
ynLsN+iZEn19/x4wK1o3ASgTHsbbk9lGicLnuEG8ahJwu0Q9Tdan0URs83ugkRJ4 |
|||
L4CoxPJMs3LxpCzILmzncT1SSgi+DrZ6RhkFtdmpeyvHHg+GKJfc0fwZWHjamEHQ |
|||
KGPDScodl5EObEZjcKaT4n6XS5UrFs0h8kgo6C4sGeGqacof8+ufMO3n3W7RQvLZ |
|||
pMupGb7j/Vhq39A9vol6gobA08FtL2iAF2sI0Kn1kWDddqvYC1AfPJNAh9h4fdJF |
|||
BSkqZGblTmj2nl6aAR1P5l8mb8ni1Ic6ZuAAWxsdBqQDgwFngnmp8MmE4DaDmVaT |
|||
WEh67kOf8BotFl3TLPehjQh6j96s9bH9sKq0HNhsx72pIVN50qVtz0QZ7eik5N0F |
|||
lXMrwoffDfOzLmW7Ep05Qbn1hhvkXUhmJYaIPK6j8e5pxf6CuK7kt4NsTM61meSj |
|||
5Nle9YiSjfR8Pv2PdPgxFGFZduCPYcrNr7i8nSbNwL/X4Y+wmMAQAD8mAgQNTjDr |
|||
8Mj8dAeEsA7cb73EoPsy+avOSgAAAAA= |
|||
-----END PKCS7----- |
@ -1,62 +0,0 @@ |
|||
|
|||
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 |
|||
AAAAAAAAAAAA |
|||
|
@ -1,66 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
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 |
|||
6RLfsTyyPgJi0GsAAAAA |
|||
-----END PKCS7----- |
@ -1,90 +0,0 @@ |
|||
|
|||
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 |
|||
rZgAAAAAAAAAAAAA |
|||
|
@ -1,106 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
MIAGCSqGSIb3DQEHA6CAMIITQAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ |
|||
bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT |
|||
aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ |
|||
uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQAKvi2eRLO+jdoiUd8ksZt+iQ0JXoWN0 |
|||
M/W9CEv6R1c42pwUIR/1F4RMK9oeyUiv9Z6lzmPaGNmx6XOCoueszVkwgfACAQAw |
|||
gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH |
|||
EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT |
|||
GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW |
|||
QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQFqcHEo69ShGfcOIVjnmWXLZM+7Y |
|||
K/50j8YuvNbqq+dQxk9YY8ZpSU/JYsxmtcnEZdlSJEkpMHAO73V+eh1QQr0wghFz |
|||
BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECJsSmRA1jxLjgIIRSIGLVtf+ |
|||
pzeB6oXJ9GlfsnIij+DgIOvrYaXC9qywAaUg7zMnln9QMgiih5XpBLgPg5Y/KYp3 |
|||
RZeHBwkjTIFwlNYSjE0PbsszsJYUmkDTsCjFUJEdM4+Cbv3g3Kct5w1Q6pVMXJLg |
|||
JG4uFUY8CTScVkb9ETbIy3HisCRKJWA57ERLvCr/Fa6gNJKa5Mw1A5Nsp+QQqp0U |
|||
uQz93raAPbCdqmHu8qQ88rzbB1k/ysXedRQLlzhqFs2hryD7kHe0gX8nPdlkre8Y |
|||
tTQhY76LtbjnV2drXcyCUMONc56KQ2VcuxB0BWjSeyN8a75/rpt6wmiM/PKw0D4g |
|||
RmXqA1ZR62X2WKbhKqvG5tQTF1LauZeddeYS4Rb8cLt2VMB5irkKWrHmJ3qyWELY |
|||
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 |
|||
FK2YAAAAAA== |
|||
-----END PKCS7----- |
@ -1,91 +0,0 @@ |
|||
|
|||
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 |
|||
5ify04ua9/t8SGrYZPm/l3MkAAAAAAAAAAAAAA== |
|||
|
|||
|
@ -1,106 +0,0 @@ |
|||
-----BEGIN PKCS7----- |
|||
MIAGCSqGSIb3DQEHA6CAMIITUAIBADGCAcIwgcwCAQAwdjBiMREwDwYDVQQHEwhJ |
|||
bnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlT |
|||
aWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGBAmILep9sJ |
|||
uN2Pkg1gucowDQYJKoZIhvcNAQEBBQAEQKOxxpIbRTb31+qIQCBOpMVAGnwCLrPO |
|||
OXnntxVveTrPhBnsJuoGNJcCMtuHl7tLkd38WsVwOfGXUprTqFpUcY8wgfACAQAw |
|||
gZkwgZIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH |
|||
EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsT |
|||
GURFTU9OU1RSQVRJT04gQU5EIFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBW |
|||
QUxVRSBDQQICBG4wDQYJKoZIhvcNAQEBBQAEQKzIddnXFqK/RRBG86ZVixoXfwAv |
|||
ZdfvnDFsKzPn/A6DuDdE/hqJxnFpHiwGiDR/YbWj2ib+G74DSshgX8vj8ZQwghGD |
|||
BgkqhkiG9w0BBwEwGgYIKoZIhvcNAwIwDgICAKAECLKM0K58I3HNgIIRWBDP8s+g |
|||
l7/6JhZ5PBJ5vPpD1R4pnNDZRabsYu0Qzezdz1IK+maTAhF0SEuNZoEkzIgOIvu3 |
|||
UjW8x/2KcHwteABwgRiSk1JyNLwRED0RtvuJ40pIGDvDsHwBMcXEtKUMAOpGChms |
|||
HUK1+B/GKancSDFOCeG3JCFnFdbuQFDIVHC6amWslc6ntqVs/sii2Gs4qdzDfQgl |
|||
PV/A/FY0wi0j2O5cXRQJtZVKM/MYGjj5c1cy9Q7oymU5ATP/LARD0Tw5kBB7HVnD |
|||
2qrmmmxcHakyxhXmwskaKS6Qxgqq6LPdgr603onxqEtwNSz5UbCq9mLXuCkFOVsQ |
|||
/5mZcmmc7re3XJMQHRXkBlxEpZQ6HOUIEzlhRqCo2hhymyZK84rptjORQo6vNakM |
|||
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 |
|||
7OYn8tOLmvf7fEhq2GT5v5dzJAAAAAA= |
|||
-----END PKCS7----- |
@ -1,157 +0,0 @@ |
|||
From angela@c2.net.au Thu May 14 13:32:27 1998 |
|||
X-UIDL: 83c94dd550e54329bf9571b72038b8c8 |
|||
Return-Path: angela@c2.net.au |
|||
Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27838 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:32:26 +1000 (EST) |
|||
Message-ID: <355A6779.4B63E64C@cryptsoft.com> |
|||
Date: Thu, 14 May 1998 13:39:37 +1000 |
|||
From: Angela van Lent <angela@c2.net.au> |
|||
X-Mailer: Mozilla 4.03 [en] (Win95; U) |
|||
MIME-Version: 1.0 |
|||
To: tjh@cryptsoft.com |
|||
Subject: signed |
|||
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms9A58844C95949ECC78A1C54C" |
|||
Content-Length: 2604 |
|||
Status: OR |
|||
|
|||
This is a cryptographically signed message in MIME format. |
|||
|
|||
--------------ms9A58844C95949ECC78A1C54C |
|||
Content-Type: text/plain; charset=us-ascii |
|||
Content-Transfer-Encoding: 7bit |
|||
|
|||
signed body |
|||
|
|||
--------------ms9A58844C95949ECC78A1C54C |
|||
Content-Type: application/x-pkcs7-signature; name="smime.p7s" |
|||
Content-Transfer-Encoding: base64 |
|||
Content-Disposition: attachment; filename="smime.p7s" |
|||
Content-Description: S/MIME Cryptographic Signature |
|||
|
|||
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 |
|||
9CWR6g== |
|||
--------------ms9A58844C95949ECC78A1C54C-- |
|||
|
|||
|
|||
From angela@c2.net.au Thu May 14 13:33:16 1998 |
|||
X-UIDL: 8f076c44ff7c5967fd5b00c4588a8731 |
|||
Return-Path: angela@c2.net.au |
|||
Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id NAA27847 for <tjh@cryptsoft.com>; Thu, 14 May 1998 13:33:15 +1000 (EST) |
|||
Message-ID: <355A67AB.2AF38806@cryptsoft.com> |
|||
Date: Thu, 14 May 1998 13:40:27 +1000 |
|||
From: Angela van Lent <angela@c2.net.au> |
|||
X-Mailer: Mozilla 4.03 [en] (Win95; U) |
|||
MIME-Version: 1.0 |
|||
To: tjh@cryptsoft.com |
|||
Subject: signed |
|||
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------msD7863B84BD61E02C407F2F5E" |
|||
Content-Length: 2679 |
|||
Status: OR |
|||
|
|||
This is a cryptographically signed message in MIME format. |
|||
|
|||
--------------msD7863B84BD61E02C407F2F5E |
|||
Content-Type: text/plain; charset=us-ascii |
|||
Content-Transfer-Encoding: 7bit |
|||
|
|||
signed body 2 |
|||
|
|||
--------------msD7863B84BD61E02C407F2F5E |
|||
Content-Type: application/x-pkcs7-signature; name="smime.p7s" |
|||
Content-Transfer-Encoding: base64 |
|||
Content-Disposition: attachment; filename="smime.p7s" |
|||
Content-Description: S/MIME Cryptographic Signature |
|||
|
|||
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 |
|||
Zp8SSVVY |
|||
--------------msD7863B84BD61E02C407F2F5E-- |
|||
|
|||
|
|||
From angela@c2.net.au Thu May 14 14:05:32 1998 |
|||
X-UIDL: a7d629b4b9acacaee8b39371b860a32a |
|||
Return-Path: angela@c2.net.au |
|||
Received: from cryptsoft.com (play.cryptsoft.com [203.56.44.3]) by pandora.cryptsoft.com (8.8.3/8.7.3) with ESMTP id OAA28033 for <tjh@cryptsoft.com>; Thu, 14 May 1998 14:05:32 +1000 (EST) |
|||
Message-ID: <355A6F3B.AC385981@cryptsoft.com> |
|||
Date: Thu, 14 May 1998 14:12:43 +1000 |
|||
From: Angela van Lent <angela@c2.net.au> |
|||
X-Mailer: Mozilla 4.03 [en] (Win95; U) |
|||
MIME-Version: 1.0 |
|||
To: tjh@cryptsoft.com |
|||
Subject: encrypted |
|||
Content-Type: application/x-pkcs7-mime; name="smime.p7m" |
|||
Content-Transfer-Encoding: base64 |
|||
Content-Disposition: attachment; filename="smime.p7m" |
|||
Content-Description: S/MIME Encrypted Message |
|||
Content-Length: 905 |
|||
Status: OR |
|||
|
|||
MIAGCSqGSIb3DQEHA6CAMIACAQAxggHmMIHwAgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEG |
|||
A1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNUUkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQD |
|||
ExJERU1PIFpFUk8gVkFMVUUgQ0ECAgR+MA0GCSqGSIb3DQEBAQUABEA92N29Yk39RUY2tIVd |
|||
exGT2MFX3J6H8LB8aDRJjw7843ALgJ5zXpM5+f80QkAWwEN2A6Pl3VxiCeKLi435zXVyMIHw |
|||
AgEAMIGZMIGSMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMI |
|||
QnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29mdCBQdHkgTHRkMSIwIAYDVQQLExlERU1PTlNU |
|||
UkFUSU9OIEFORCBURVNUSU5HMRswGQYDVQQDExJERU1PIFpFUk8gVkFMVUUgQ0ECAgRuMA0G |
|||
CSqGSIb3DQEBAQUABECR9IfyHtvnjFmZ8B2oUCEs1vxMsG0u1kxKE4RMPFyDqDCEARq7zXMg |
|||
nzSUI7Wgv5USSKDqcLRJeW+jvYURv/nJMIAGCSqGSIb3DQEHATAaBggqhkiG9w0DAjAOAgIA |
|||
oAQIrLqrij2ZMpeggAQoibtn6reRZWuWk5Iv5IAhgitr8EYE4w4ySQ7EMB6mTlBoFpccUMWX |
|||
BwQgQn1UoWCvYAlhDzURdbui64Dc0rS2wtj+kE/InS6y25EEEPe4NUKaF8/UlE+lo3LtILQE |
|||
CL3uV8k7m0iqAAAAAAAAAAAAAA== |
|||
|
@ -1,57 +0,0 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 |
|||
mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG |
|||
fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ |
|||
zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 |
|||
p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b |
|||
bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk |
|||
IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG |
|||
-----END RSA PRIVATE KEY----- |
|||
issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA |
|||
subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com |
|||
serial :047D |
|||
|
|||
Certificate: |
|||
Data: |
|||
Version: 3 (0x2) |
|||
Serial Number: 1149 (0x47d) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA |
|||
Validity |
|||
Not Before: May 13 05:40:58 1998 GMT |
|||
Not After : May 12 05:40:58 2000 GMT |
|||
Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com |
|||
Subject Public Key Info: |
|||
Public Key Algorithm: rsaEncryption |
|||
Modulus: |
|||
00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: |
|||
73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: |
|||
89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: |
|||
fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: |
|||
e7:e7:0c:4d:0b |
|||
Exponent: 65537 (0x10001) |
|||
X509v3 extensions: |
|||
Netscape Comment: |
|||
Generated with SSLeay |
|||
Signature Algorithm: md5withRSAEncryption |
|||
52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: |
|||
f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: |
|||
d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: |
|||
50:74:ad:92:cb:4e:90:e5:fa:7d |
|||
|
|||
-----BEGIN CERTIFICATE----- |
|||
MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV |
|||
MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE |
|||
ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E |
|||
IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw |
|||
NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK |
|||
UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 |
|||
aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG |
|||
9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf |
|||
lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB |
|||
hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA |
|||
UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 |
|||
4A3ZItobUHStkstOkOX6fQ== |
|||
-----END CERTIFICATE----- |
|||
|
@ -1,57 +0,0 @@ |
|||
issuer :/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=DEMONSTRATION AND TESTING/CN=DEMO ZERO VALUE CA |
|||
subject:/C=AU/SP=Queensland/L=Brisbane/O=Cryptsoft Pty Ltd/OU=SMIME 003/CN=Information/Email=info@cryptsoft.com |
|||
serial :047D |
|||
|
|||
Certificate: |
|||
Data: |
|||
Version: 3 (0x2) |
|||
Serial Number: 1149 (0x47d) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
Issuer: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=DEMONSTRATION AND TESTING, CN=DEMO ZERO VALUE CA |
|||
Validity |
|||
Not Before: May 13 05:40:58 1998 GMT |
|||
Not After : May 12 05:40:58 2000 GMT |
|||
Subject: C=AU, SP=Queensland, L=Brisbane, O=Cryptsoft Pty Ltd, OU=SMIME 003, CN=Information/Email=info@cryptsoft.com |
|||
Subject Public Key Info: |
|||
Public Key Algorithm: rsaEncryption |
|||
Modulus: |
|||
00:ad:e7:23:89:ee:0d:87:b7:9c:32:44:4b:95:81: |
|||
73:dd:22:80:4b:2d:c5:60:b8:fe:1e:18:63:ef:dc: |
|||
89:89:22:df:95:3c:7a:db:3d:9a:06:a8:08:d6:29: |
|||
fd:ef:41:09:91:ed:bc:ad:98:f9:f6:28:90:62:6f: |
|||
e7:e7:0c:4d:0b |
|||
Exponent: 65537 (0x10001) |
|||
X509v3 extensions: |
|||
Netscape Comment: |
|||
Generated with SSLeay |
|||
Signature Algorithm: md5withRSAEncryption |
|||
52:15:ea:88:f4:f0:f9:0b:ef:ce:d5:f8:83:40:61:16:5e:55: |
|||
f9:ce:2d:d1:8b:31:5c:03:c6:2d:10:7c:61:d5:5c:0a:42:97: |
|||
d1:fd:65:b6:b6:84:a5:39:ec:46:ec:fc:e0:0d:d9:22:da:1b: |
|||
50:74:ad:92:cb:4e:90:e5:fa:7d |
|||
|
|||
-----BEGIN CERTIFICATE----- |
|||
MIICTDCCAfagAwIBAgICBH0wDQYJKoZIhvcNAQEEBQAwgZIxCzAJBgNVBAYTAkFV |
|||
MRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UE |
|||
ChMRQ3J5cHRzb2Z0IFB0eSBMdGQxIjAgBgNVBAsTGURFTU9OU1RSQVRJT04gQU5E |
|||
IFRFU1RJTkcxGzAZBgNVBAMTEkRFTU8gWkVSTyBWQUxVRSBDQTAeFw05ODA1MTMw |
|||
NTQwNThaFw0wMDA1MTIwNTQwNThaMIGeMQswCQYDVQQGEwJBVTETMBEGA1UECBMK |
|||
UXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUxGjAYBgNVBAoTEUNyeXB0c29m |
|||
dCBQdHkgTHRkMRIwEAYDVQQLEwlTTUlNRSAwMDMxFDASBgNVBAMTC0luZm9ybWF0 |
|||
aW9uMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGNyeXB0c29mdC5jb20wXDANBgkqhkiG |
|||
9w0BAQEFAANLADBIAkEArecjie4Nh7ecMkRLlYFz3SKASy3FYLj+Hhhj79yJiSLf |
|||
lTx62z2aBqgI1in970EJke28rZj59iiQYm/n5wxNCwIDAQABoygwJjAkBglghkgB |
|||
hvhCAQ0EFxYVR2VuZXJhdGVkIHdpdGggU1NMZWF5MA0GCSqGSIb3DQEBBAUAA0EA |
|||
UhXqiPTw+QvvztX4g0BhFl5V+c4t0YsxXAPGLRB8YdVcCkKX0f1ltraEpTnsRuz8 |
|||
4A3ZItobUHStkstOkOX6fQ== |
|||
-----END CERTIFICATE----- |
|||
|
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIBOgIBAAJBAK3nI4nuDYe3nDJES5WBc90igEstxWC4/h4YY+/ciYki35U8ets9 |
|||
mgaoCNYp/e9BCZHtvK2Y+fYokGJv5+cMTQsCAwEAAQJBAIHpvXvqEcOEoDRRHuIG |
|||
fkcB4jPHcr9KE9TpxabH6xs9beN6OJnkePXAHwaz5MnUgSnbpOKq+cw8miKjXwe/ |
|||
zVECIQDVLwncT2lRmXarEYHzb+q/0uaSvKhWKKt3kJasLNTrAwIhANDUc/ghut29 |
|||
p3jJYjurzUKuG774/5eLjPLsxPPIZzNZAiA/10hSq41UnGqHLEUIS9m2/EeEZe7b |
|||
bm567dfRU9OnVQIgDo8ROrZXSchEGbaog5J5r/Fle83uO8l93R3GqVxKXZkCIFfk |
|||
IPD5PIYQAyyod3hyKKza7ZP4CGY4oOfZetbkSGGG |
|||
-----END RSA PRIVATE KEY----- |
@ -1,263 +0,0 @@ |
|||
/* crypto/pkcs7/verify.c */ |
|||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
|||
* All rights reserved. |
|||
* |
|||
* This package is an SSL implementation written |
|||
* by Eric Young (eay@cryptsoft.com). |
|||
* The implementation was written so as to conform with Netscapes SSL. |
|||
* |
|||
* This library is free for commercial and non-commercial use as long as |
|||
* the following conditions are aheared to. The following conditions |
|||
* apply to all code found in this distribution, be it the RC4, RSA, |
|||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation |
|||
* included with this distribution is covered by the same copyright terms |
|||
* except that the holder is Tim Hudson (tjh@cryptsoft.com). |
|||
* |
|||
* Copyright remains Eric Young's, and as such any Copyright notices in |
|||
* the code are not to be removed. |
|||
* If this package is used in a product, Eric Young should be given attribution |
|||
* as the author of the parts of the library used. |
|||
* This can be in the form of a textual message at program startup or |
|||
* in documentation (online or textual) provided with the package. |
|||
* |
|||
* 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 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 acknowledgement: |
|||
* "This product includes cryptographic software written by |
|||
* Eric Young (eay@cryptsoft.com)" |
|||
* The word 'cryptographic' can be left out if the rouines from the library |
|||
* being used are not cryptographic related :-). |
|||
* 4. If you include any Windows specific code (or a derivative thereof) from |
|||
* the apps directory (application code) you must include an acknowledgement: |
|||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
|||
* ANY EXPRESS 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 AUTHOR OR 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. |
|||
* |
|||
* The licence and distribution terms for any publically available version or |
|||
* derivative of this code cannot be changed. i.e. this code cannot simply be |
|||
* copied and put under another distribution licence |
|||
* [including the GNU Public Licence.] |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#include <openssl/bio.h> |
|||
#include <openssl/asn1.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/err.h> |
|||
#include "example.h" |
|||
|
|||
int verify_callback(int ok, X509_STORE_CTX *ctx); |
|||
|
|||
BIO *bio_err=NULL; |
|||
BIO *bio_out=NULL; |
|||
|
|||
int main(argc,argv) |
|||
int argc; |
|||
char *argv[]; |
|||
{ |
|||
PKCS7 *p7; |
|||
PKCS7_SIGNER_INFO *si; |
|||
X509_STORE_CTX cert_ctx; |
|||
X509_STORE *cert_store=NULL; |
|||
BIO *data,*detached=NULL,*p7bio=NULL; |
|||
char buf[1024*4]; |
|||
char *pp; |
|||
int i,printit=0; |
|||
STACK_OF(PKCS7_SIGNER_INFO) *sk; |
|||
|
|||
bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); |
|||
bio_out=BIO_new_fp(stdout,BIO_NOCLOSE); |
|||
#ifndef OPENSSL_NO_MD2 |
|||
EVP_add_digest(EVP_md2()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_MD5 |
|||
EVP_add_digest(EVP_md5()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_SHA1 |
|||
EVP_add_digest(EVP_sha1()); |
|||
#endif |
|||
#ifndef OPENSSL_NO_MDC2 |
|||
EVP_add_digest(EVP_mdc2()); |
|||
#endif |
|||
|
|||
data=BIO_new(BIO_s_file()); |
|||
|
|||
pp=NULL; |
|||
while (argc > 1) |
|||
{ |
|||
argc--; |
|||
argv++; |
|||
if (strcmp(argv[0],"-p") == 0) |
|||
{ |
|||
printit=1; |
|||
} |
|||
else if ((strcmp(argv[0],"-d") == 0) && (argc >= 2)) |
|||
{ |
|||
detached=BIO_new(BIO_s_file()); |
|||
if (!BIO_read_filename(detached,argv[1])) |
|||
goto err; |
|||
argc--; |
|||
argv++; |
|||
} |
|||
else |
|||
{ |
|||
pp=argv[0]; |
|||
if (!BIO_read_filename(data,argv[0])) |
|||
goto err; |
|||
} |
|||
} |
|||
|
|||
if (pp == NULL) |
|||
BIO_set_fp(data,stdin,BIO_NOCLOSE); |
|||
|
|||
|
|||
/* Load the PKCS7 object from a file */ |
|||
if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL,NULL)) == NULL) goto err; |
|||
|
|||
/* This stuff is being setup for certificate verification.
|
|||
* When using SSL, it could be replaced with a |
|||
* cert_stre=SSL_CTX_get_cert_store(ssl_ctx); */ |
|||
cert_store=X509_STORE_new(); |
|||
X509_STORE_set_default_paths(cert_store); |
|||
X509_STORE_load_locations(cert_store,NULL,"../../certs"); |
|||
X509_STORE_set_verify_cb_func(cert_store,verify_callback); |
|||
|
|||
ERR_clear_error(); |
|||
|
|||
/* We need to process the data */ |
|||
if ((PKCS7_get_detached(p7) || detached)) |
|||
{ |
|||
if (detached == NULL) |
|||
{ |
|||
printf("no data to verify the signature on\n"); |
|||
exit(1); |
|||
} |
|||
else |
|||
p7bio=PKCS7_dataInit(p7,detached); |
|||
} |
|||
else |
|||
{ |
|||
p7bio=PKCS7_dataInit(p7,NULL); |
|||
} |
|||
|
|||
/* We now have to 'read' from p7bio to calculate digests etc. */ |
|||
for (;;) |
|||
{ |
|||
i=BIO_read(p7bio,buf,sizeof(buf)); |
|||
/* print it? */ |
|||
if (i <= 0) break; |
|||
} |
|||
|
|||
/* We can now verify signatures */ |
|||
sk=PKCS7_get_signer_info(p7); |
|||
if (sk == NULL) |
|||
{ |
|||
printf("there are no signatures on this data\n"); |
|||
exit(1); |
|||
} |
|||
|
|||
/* Ok, first we need to, for each subject entry, see if we can verify */ |
|||
for (i=0; i<sk_PKCS7_SIGNER_INFO_num(sk); i++) |
|||
{ |
|||
ASN1_UTCTIME *tm; |
|||
char *str1,*str2; |
|||
int rc; |
|||
|
|||
si=sk_PKCS7_SIGNER_INFO_value(sk,i); |
|||
rc=PKCS7_dataVerify(cert_store,&cert_ctx,p7bio,p7,si); |
|||
if (rc <= 0) |
|||
goto err; |
|||
printf("signer info\n"); |
|||
if ((tm=get_signed_time(si)) != NULL) |
|||
{ |
|||
BIO_printf(bio_out,"Signed time:"); |
|||
ASN1_UTCTIME_print(bio_out,tm); |
|||
ASN1_UTCTIME_free(tm); |
|||
BIO_printf(bio_out,"\n"); |
|||
} |
|||
if (get_signed_seq2string(si,&str1,&str2)) |
|||
{ |
|||
BIO_printf(bio_out,"String 1 is %s\n",str1); |
|||
BIO_printf(bio_out,"String 2 is %s\n",str2); |
|||
} |
|||
|
|||
} |
|||
|
|||
X509_STORE_free(cert_store); |
|||
|
|||
printf("done\n"); |
|||
exit(0); |
|||
err: |
|||
ERR_load_crypto_strings(); |
|||
ERR_print_errors_fp(stderr); |
|||
exit(1); |
|||
} |
|||
|
|||
/* should be X509 * but we can just have them as char *. */ |
|||
int verify_callback(int ok, X509_STORE_CTX *ctx) |
|||
{ |
|||
char buf[256]; |
|||
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); |
|||
|
|||
X509_NAME_oneline(X509_get_subject_name(err_cert),buf,256); |
|||
BIO_printf(bio_err,"depth=%d %s\n",depth,buf); |
|||
if (!ok) |
|||
{ |
|||
BIO_printf(bio_err,"verify error:num=%d:%s\n",err, |
|||
X509_verify_cert_error_string(err)); |
|||
if (depth < 6) |
|||
{ |
|||
ok=1; |
|||
X509_STORE_CTX_set_error(ctx,X509_V_OK); |
|||
} |
|||
else |
|||
{ |
|||
ok=0; |
|||
X509_STORE_CTX_set_error(ctx,X509_V_ERR_CERT_CHAIN_TOO_LONG); |
|||
} |
|||
} |
|||
switch (ctx->error) |
|||
{ |
|||
case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: |
|||
X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),buf,256); |
|||
BIO_printf(bio_err,"issuer= %s\n",buf); |
|||
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_UTCTIME_print(bio_err,X509_get_notBefore(ctx->current_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_UTCTIME_print(bio_err,X509_get_notAfter(ctx->current_cert)); |
|||
BIO_printf(bio_err,"\n"); |
|||
break; |
|||
} |
|||
BIO_printf(bio_err,"verify return:%d\n",ok); |
|||
return(ok); |
|||
} |
@ -1,24 +0,0 @@ |
|||
CC=cc |
|||
CFLAGS= -g -I../../include |
|||
#LIBS= -L../.. -lcrypto -lssl
|
|||
LIBS= -L../.. ../../libssl.a ../../libcrypto.a |
|||
|
|||
# the file conn.c requires a file "proxy.h" which I couldn't find...
|
|||
#EXAMPLES=base64 conn loadrsa
|
|||
EXAMPLES=base64 loadrsa |
|||
|
|||
all: $(EXAMPLES) |
|||
|
|||
base64: base64.o |
|||
$(CC) -o base64 base64.o $(LIBS) |
|||
#
|
|||
# sorry... can't find "proxy.h"
|
|||
#conn: conn.o
|
|||
# $(CC) -o conn conn.o $(LIBS)
|
|||
|
|||
loadrsa: loadrsa.o |
|||
$(CC) -o loadrsa loadrsa.o $(LIBS) |
|||
|
|||
clean: |
|||
rm -f $(EXAMPLES) *.o |
|||
|
@ -1,49 +0,0 @@ |
|||
/* This is a simple example of using the base64 BIO to a memory BIO and then
|
|||
* getting the data. |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <openssl/bio.h> |
|||
#include <openssl/evp.h> |
|||
|
|||
main() |
|||
{ |
|||
int i; |
|||
BIO *mbio,*b64bio,*bio; |
|||
char buf[512]; |
|||
char *p; |
|||
|
|||
mbio=BIO_new(BIO_s_mem()); |
|||
b64bio=BIO_new(BIO_f_base64()); |
|||
|
|||
bio=BIO_push(b64bio,mbio); |
|||
/* We now have bio pointing at b64->mem, the base64 bio encodes on
|
|||
* write and decodes on read */ |
|||
|
|||
for (;;) |
|||
{ |
|||
i=fread(buf,1,512,stdin); |
|||
if (i <= 0) break; |
|||
BIO_write(bio,buf,i); |
|||
} |
|||
/* We need to 'flush' things to push out the encoding of the
|
|||
* last few bytes. There is special encoding if it is not a |
|||
* multiple of 3 |
|||
*/ |
|||
BIO_flush(bio); |
|||
|
|||
printf("We have %d bytes available\n",BIO_pending(mbio)); |
|||
|
|||
/* We will now get a pointer to the data and the number of elements. */ |
|||
/* hmm... this one was not defined by a macro in bio.h, it will be for
|
|||
* 0.9.1. The other option is too just read from the memory bio. |
|||
*/ |
|||
i=(int)BIO_ctrl(mbio,BIO_CTRL_INFO,0,(char *)&p); |
|||
|
|||
printf("%d\n",i); |
|||
fwrite("---\n",1,4,stdout); |
|||
fwrite(p,1,i,stdout); |
|||
fwrite("---\n",1,4,stdout); |
|||
|
|||
/* This call will walk the chain freeing all the BIOs */ |
|||
BIO_free_all(bio); |
|||
} |
@ -1,105 +0,0 @@ |
|||
/* NOCW */ |
|||
/* demos/eay/conn.c */ |
|||
|
|||
/* A minimal program to connect to a port using the sock4a protocol.
|
|||
* |
|||
* cc -I../../include conn.c -L../.. -lcrypto |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <openssl/err.h> |
|||
#include <openssl/bio.h> |
|||
/* #include "proxy.h" */ |
|||
|
|||
extern int errno; |
|||
|
|||
int main(argc,argv) |
|||
int argc; |
|||
char *argv[]; |
|||
{ |
|||
PROXY *pxy; |
|||
char *host; |
|||
char buf[1024*10],*p; |
|||
BIO *bio; |
|||
int i,len,off,ret=1; |
|||
|
|||
if (argc <= 1) |
|||
host="localhost:4433"; |
|||
else |
|||
host=argv[1]; |
|||
|
|||
/* Lets get nice error messages */ |
|||
ERR_load_crypto_strings(); |
|||
|
|||
/* First, configure proxy settings */ |
|||
pxy=PROXY_new(); |
|||
PROXY_add_server(pxy,PROXY_PROTOCOL_SOCKS,"gromit:1080"); |
|||
|
|||
bio=BIO_new(BIO_s_socks4a_connect()); |
|||
|
|||
BIO_set_conn_hostname(bio,host); |
|||
BIO_set_proxies(bio,pxy); |
|||
BIO_set_socks_userid(bio,"eay"); |
|||
BIO_set_nbio(bio,1); |
|||
|
|||
p="GET / HTTP/1.0\r\n\r\n"; |
|||
len=strlen(p); |
|||
|
|||
off=0; |
|||
for (;;) |
|||
{ |
|||
i=BIO_write(bio,&(p[off]),len); |
|||
if (i <= 0) |
|||
{ |
|||
if (BIO_should_retry(bio)) |
|||
{ |
|||
fprintf(stderr,"write DELAY\n"); |
|||
sleep(1); |
|||
continue; |
|||
} |
|||
else |
|||
{ |
|||
goto err; |
|||
} |
|||
} |
|||
off+=i; |
|||
len-=i; |
|||
if (len <= 0) break; |
|||
} |
|||
|
|||
for (;;) |
|||
{ |
|||
i=BIO_read(bio,buf,sizeof(buf)); |
|||
if (i == 0) break; |
|||
if (i < 0) |
|||
{ |
|||
if (BIO_should_retry(bio)) |
|||
{ |
|||
fprintf(stderr,"read DELAY\n"); |
|||
sleep(1); |
|||
continue; |
|||
} |
|||
goto err; |
|||
} |
|||
fwrite(buf,1,i,stdout); |
|||
} |
|||
|
|||
ret=1; |
|||
|
|||
if (0) |
|||
{ |
|||
err: |
|||
if (ERR_peek_error() == 0) /* system call error */ |
|||
{ |
|||
fprintf(stderr,"errno=%d ",errno); |
|||
perror("error"); |
|||
} |
|||
else |
|||
ERR_print_errors_fp(stderr); |
|||
} |
|||
BIO_free_all(bio); |
|||
if (pxy != NULL) PROXY_free(pxy); |
|||
exit(!ret); |
|||
return(ret); |
|||
} |
|||
|
@ -1,53 +0,0 @@ |
|||
#include <stdio.h> |
|||
#include <openssl/rsa.h> |
|||
|
|||
/* This is a simple program to generate an RSA private key. It then
|
|||
* saves both the public and private key into a char array, then |
|||
* re-reads them. It saves them as DER encoded binary data. |
|||
*/ |
|||
|
|||
void callback(stage,count,arg) |
|||
int stage,count; |
|||
char *arg; |
|||
{ |
|||
FILE *out; |
|||
|
|||
out=(FILE *)arg; |
|||
fprintf(out,"%d",stage); |
|||
if (stage == 3) |
|||
fprintf(out,"\n"); |
|||
fflush(out); |
|||
} |
|||
|
|||
main() |
|||
{ |
|||
RSA *rsa,*pub_rsa,*priv_rsa; |
|||
int len; |
|||
unsigned char buf[1024],*p; |
|||
|
|||
rsa=RSA_generate_key(512,RSA_F4,callback,(char *)stdout); |
|||
|
|||
p=buf; |
|||
|
|||
/* Save the public key into buffer, we know it will be big enough
|
|||
* but we should really check how much space we need by calling the |
|||
* i2d functions with a NULL second parameter */ |
|||
len=i2d_RSAPublicKey(rsa,&p); |
|||
len+=i2d_RSAPrivateKey(rsa,&p); |
|||
|
|||
printf("The public and private key are now both in a char array\n"); |
|||
printf("and are taking up %d bytes\n",len); |
|||
|
|||
RSA_free(rsa); |
|||
|
|||
p=buf; |
|||
pub_rsa=d2i_RSAPublicKey(NULL,&p,(long)len); |
|||
len-=(p-buf); |
|||
priv_rsa=d2i_RSAPrivateKey(NULL,&p,(long)len); |
|||
|
|||
if ((pub_rsa == NULL) || (priv_rsa == NULL)) |
|||
ERR_print_errors_fp(stderr); |
|||
|
|||
RSA_free(pub_rsa); |
|||
RSA_free(priv_rsa); |
|||
} |
@ -1,59 +0,0 @@ |
|||
CC=cc |
|||
CFLAGS= -g -I../../include -Wall |
|||
LIBS= -L../.. -lcrypto |
|||
EXAMPLES=example1 example2 example3 example4 |
|||
|
|||
all: $(EXAMPLES) |
|||
|
|||
example1: example1.o loadkeys.o |
|||
$(CC) -o example1 example1.o loadkeys.o $(LIBS) |
|||
|
|||
example2: example2.o loadkeys.o |
|||
$(CC) -o example2 example2.o loadkeys.o $(LIBS) |
|||
|
|||
example3: example3.o |
|||
$(CC) -o example3 example3.o $(LIBS) |
|||
|
|||
example4: example4.o |
|||
$(CC) -o example4 example4.o $(LIBS) |
|||
|
|||
clean: |
|||
rm -f $(EXAMPLES) *.o |
|||
|
|||
test: all |
|||
@echo |
|||
@echo Example 1 Demonstrates the sealing and opening APIs |
|||
@echo Doing the encrypt side... |
|||
./example1 <README >t.t |
|||
@echo Doing the decrypt side... |
|||
./example1 -d <t.t >t.2 |
|||
diff t.2 README |
|||
rm -f t.t t.2 |
|||
@echo example1 is OK |
|||
|
|||
@echo |
|||
@echo Example2 Demonstrates rsa encryption and decryption |
|||
@echo and it should just print \"This the clear text\" |
|||
./example2 |
|||
|
|||
@echo |
|||
@echo Example3 Demonstrates the use of symmetric block ciphers |
|||
@echo in this case it uses EVP_des_ede3_cbc |
|||
@echo i.e. triple DES in Cipher Block Chaining mode |
|||
@echo Doing the encrypt side... |
|||
./example3 ThisIsThePassword <README >t.t |
|||
@echo Doing the decrypt side... |
|||
./example3 -d ThisIsThePassword <t.t >t.2 |
|||
diff t.2 README |
|||
rm -f t.t t.2 |
|||
@echo example3 is OK |
|||
|
|||
@echo |
|||
@echo Example4 Demonstrates base64 encoding and decoding |
|||
@echo Doing the encrypt side... |
|||
./example4 <README >t.t |
|||
@echo Doing the decrypt side... |
|||
./example4 -d <t.t >t.2 |
|||
diff t.2 README |
|||
rm -f t.t t.2 |
|||
@echo example4 is OK |
@ -1,34 +0,0 @@ |
|||
From Maurice Gittens <mgittens@gits.nl> |
|||
-- |
|||
Example programs, demonstrating some basic SSLeay crypto library |
|||
operations, to help you not to make the same mistakes I did. |
|||
|
|||
The following files are present. |
|||
- loadkeys.c Demonstrates the loading and of public and |
|||
private keys. |
|||
- loadkeys.h The interface for loadkeys.c |
|||
- example1.c Demonstrates the sealing and opening API's |
|||
- example2.c Demonstrates rsa encryption and decryption |
|||
- example3.c Demonstrates the use of symmetric block ciphers |
|||
- example4.c Demonstrates base64 and decoding |
|||
- Makefile A makefile you probably will have to adjust for |
|||
your environment |
|||
- README this file |
|||
|
|||
|
|||
The programs were written by Maurice Gittens <mgittens@gits.nl> |
|||
with the necesary help from Eric Young <eay@cryptsoft.com> |
|||
|
|||
You may do as you please with these programs, but please don't |
|||
pretend that you wrote them. |
|||
|
|||
To be complete: If you use these programs you acknowlegde that |
|||
you are aware that there is NO warranty of any kind associated |
|||
with these programs. I don't even claim that the programs work, |
|||
they are provided AS-IS. |
|||
|
|||
January 1997 |
|||
|
|||
Maurice |
|||
|
|||
|
@ -1,77 +0,0 @@ |
|||
issuer :/C=NL/SP=Brabant/L=Eindhoven/O=Gittens Information Systems B.V./OU=Certification Services/CN=ca.gits.nl/Email=mgittens@gits.nl |
|||
subject:/C=NL/SP=Brabant/O=Gittens Information Systems B.V./OU=Certification Services/CN=caleb.gits.nl/Email=mgittens@gits.nl |
|||
serial :01 |
|||
|
|||
Certificate: |
|||
Data: |
|||
Version: 0 (0x0) |
|||
Serial Number: 1 (0x1) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
Issuer: C=NL, SP=Brabant, L=Eindhoven, O=Gittens Information Systems B.V., OU=Certification Services, CN=ca.gits.nl/Email=mgittens@gits.nl |
|||
Validity |
|||
Not Before: Jan 5 13:21:16 1997 GMT |
|||
Not After : Jul 24 13:21:16 1997 GMT |
|||
Subject: C=NL, SP=Brabant, O=Gittens Information Systems B.V., OU=Certification Services, CN=caleb.gits.nl/Email=mgittens@gits.nl |
|||
Subject Public Key Info: |
|||
Public Key Algorithm: rsaEncryption |
|||
Modulus: |
|||
00:dd:82:a0:fe:a9:8d:6a:02:7e:78:d6:33:75:9b: |
|||
82:01:4b:12:80:ea:6b:9b:83:9e:e3:ae:dc:f3:d0: |
|||
71:7c:4b:ea:03:57:b4:cc:ba:44:5b:b8:4b:49:d3: |
|||
f6:39:cc:3d:12:1f:da:58:26:27:bc:bc:ab:a4:6d: |
|||
62:d1:91:5a:47:9f:80:40:c1:b9:fa:e3:1e:ef:52: |
|||
78:46:26:43:65:1d:f2:6b:bf:ff:c0:81:66:14:cd: |
|||
81:32:91:f1:f8:51:7d:0e:17:1f:27:fc:c7:51:fd: |
|||
1c:73:41:e5:66:43:3c:67:a3:09:b9:5e:36:50:50: |
|||
b1:e8:42:bd:5c:c6:2b:ec:a9:2c:fe:6a:fe:40:26: |
|||
64:9e:b9:bf:2d:1d:fb:d0:48:5b:82:2a:8e:ab:a4: |
|||
d5:7b:5f:26:84:8a:9a:69:5e:c1:71:e2:a9:59:4c: |
|||
2a:76:f7:fd:f4:cf:3f:d3:ce:30:72:62:65:1c:e9: |
|||
e9:ee:d2:fc:44:00:1e:e0:80:57:e9:41:b3:f0:44: |
|||
e5:0f:77:3b:1a:1f:57:5e:94:1d:c3:a5:fa:af:41: |
|||
8c:4c:30:6b:2b:00:84:52:0c:64:0c:a8:5b:17:16: |
|||
d1:1e:f8:ea:72:01:47:9a:b9:21:95:f9:71:ed:7c: |
|||
d2:93:54:0c:c5:9c:e8:e5:40:28:c5:a0:ca:b1:a9: |
|||
20:f9 |
|||
Exponent: 65537 (0x10001) |
|||
Signature Algorithm: md5withRSAEncryption |
|||
93:08:f9:e0:d4:c5:ca:95:de:4e:38:3b:28:87:e9:d3:b6:ce: |
|||
4f:69:2e:c9:09:57:2f:fa:e2:50:9f:39:ec:f3:84:e8:3a:8f: |
|||
9b:c3:06:62:90:49:93:6d:23:7a:2b:3d:7b:f9:46:32:18:d3: |
|||
87:44:49:f7:29:2f:f3:58:97:70:c3:45:5b:90:52:1c:df:fb: |
|||
a8:a3:a1:29:53:a3:4c:ed:d2:51:d0:44:98:a4:14:6f:76:9d: |
|||
0d:03:76:e5:d3:13:21:ce:a3:4d:2a:77:fe:ad:b3:47:6d:42: |
|||
b9:4a:0e:ff:61:f4:ec:62:b2:3b:00:9c:ac:16:a2:ec:19:c8: |
|||
c7:3d:d7:7d:97:cd:4d:1a:d2:00:07:4e:40:3d:b9:ba:1e:e2: |
|||
fe:81:28:57:b9:ad:2b:74:59:b0:9f:8b:a5:98:d3:75:06:67: |
|||
4a:04:11:b2:ea:1a:8c:e0:d4:be:c8:0c:46:76:7f:5f:5a:7b: |
|||
72:09:dd:b6:d3:6b:97:70:e8:7e:17:74:1c:f7:3a:5f:e3:fa: |
|||
c2:f7:95:bd:74:5e:44:4b:9b:bd:27:de:02:7f:87:1f:68:68: |
|||
60:b9:f4:1d:2b:7b:ce:ef:b1:7f:3a:be:b9:66:60:54:6f:0c: |
|||
a0:dd:8c:03:a7:f1:9f:f8:0e:8d:bb:c6:ba:77:61:f7:8e:be: |
|||
28:ba:d8:4f |
|||
|
|||
-----BEGIN CERTIFICATE----- |
|||
MIIDzzCCArcCAQEwDQYJKoZIhvcNAQEEBQAwgbUxCzAJBgNVBAYTAk5MMRAwDgYD |
|||
VQQIEwdCcmFiYW50MRIwEAYDVQQHEwlFaW5kaG92ZW4xKTAnBgNVBAoTIEdpdHRl |
|||
bnMgSW5mb3JtYXRpb24gU3lzdGVtcyBCLlYuMR8wHQYDVQQLExZDZXJ0aWZpY2F0 |
|||
aW9uIFNlcnZpY2VzMRMwEQYDVQQDEwpjYS5naXRzLm5sMR8wHQYJKoZIhvcNAQkB |
|||
FhBtZ2l0dGVuc0BnaXRzLm5sMB4XDTk3MDEwNTEzMjExNloXDTk3MDcyNDEzMjEx |
|||
NlowgaQxCzAJBgNVBAYTAk5MMRAwDgYDVQQIEwdCcmFiYW50MSkwJwYDVQQKEyBH |
|||
aXR0ZW5zIEluZm9ybWF0aW9uIFN5c3RlbXMgQi5WLjEfMB0GA1UECxMWQ2VydGlm |
|||
aWNhdGlvbiBTZXJ2aWNlczEWMBQGA1UEAxMNY2FsZWIuZ2l0cy5ubDEfMB0GCSqG |
|||
SIb3DQEJARYQbWdpdHRlbnNAZ2l0cy5ubDCCASIwDQYJKoZIhvcNAQEBBQADggEP |
|||
ADCCAQoCggEBAN2CoP6pjWoCfnjWM3WbggFLEoDqa5uDnuOu3PPQcXxL6gNXtMy6 |
|||
RFu4S0nT9jnMPRIf2lgmJ7y8q6RtYtGRWkefgEDBufrjHu9SeEYmQ2Ud8mu//8CB |
|||
ZhTNgTKR8fhRfQ4XHyf8x1H9HHNB5WZDPGejCbleNlBQsehCvVzGK+ypLP5q/kAm |
|||
ZJ65vy0d+9BIW4Iqjquk1XtfJoSKmmlewXHiqVlMKnb3/fTPP9POMHJiZRzp6e7S |
|||
/EQAHuCAV+lBs/BE5Q93OxofV16UHcOl+q9BjEwwaysAhFIMZAyoWxcW0R746nIB |
|||
R5q5IZX5ce180pNUDMWc6OVAKMWgyrGpIPkCAwEAATANBgkqhkiG9w0BAQQFAAOC |
|||
AQEAkwj54NTFypXeTjg7KIfp07bOT2kuyQlXL/riUJ857POE6DqPm8MGYpBJk20j |
|||
eis9e/lGMhjTh0RJ9ykv81iXcMNFW5BSHN/7qKOhKVOjTO3SUdBEmKQUb3adDQN2 |
|||
5dMTIc6jTSp3/q2zR21CuUoO/2H07GKyOwCcrBai7BnIxz3XfZfNTRrSAAdOQD25 |
|||
uh7i/oEoV7mtK3RZsJ+LpZjTdQZnSgQRsuoajODUvsgMRnZ/X1p7cgndttNrl3Do |
|||
fhd0HPc6X+P6wveVvXReREubvSfeAn+HH2hoYLn0HSt7zu+xfzq+uWZgVG8MoN2M |
|||
A6fxn/gOjbvGundh946+KLrYTw== |
|||
-----END CERTIFICATE----- |
|||
|
@ -1,198 +0,0 @@ |
|||
/* NOCW */ |
|||
/*
|
|||
Please read the README file for condition of use, before |
|||
using this software. |
|||
|
|||
Maurice Gittens <mgittens@gits.nl> January 1997 |
|||
*/ |
|||
|
|||
#include <unistd.h> |
|||
#include <stdio.h> |
|||
#include <netinet/in.h> |
|||
#include <fcntl.h> |
|||
#include <strings.h> |
|||
#include <stdlib.h> |
|||
|
|||
#include <openssl/rsa.h> |
|||
#include <openssl/evp.h> |
|||
#include <openssl/objects.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/err.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/ssl.h> |
|||
|
|||
#include "loadkeys.h" |
|||
|
|||
#define PUBFILE "cert.pem" |
|||
#define PRIVFILE "privkey.pem" |
|||
|
|||
#define STDIN 0 |
|||
#define STDOUT 1 |
|||
|
|||
void main_encrypt(void); |
|||
void main_decrypt(void); |
|||
|
|||
static const char *usage = "Usage: example1 [-d]\n"; |
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
|
|||
ERR_load_crypto_strings(); |
|||
|
|||
if ((argc == 1)) |
|||
{ |
|||
main_encrypt(); |
|||
} |
|||
else if ((argc == 2) && !strcmp(argv[1],"-d")) |
|||
{ |
|||
main_decrypt(); |
|||
} |
|||
else |
|||
{ |
|||
printf("%s",usage); |
|||
exit(1); |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
void main_encrypt(void) |
|||
{ |
|||
unsigned int ebuflen; |
|||
EVP_CIPHER_CTX ectx; |
|||
unsigned char iv[EVP_MAX_IV_LENGTH]; |
|||
unsigned char *ekey[1]; |
|||
int readlen; |
|||
int ekeylen, net_ekeylen; |
|||
EVP_PKEY *pubKey[1]; |
|||
char buf[512]; |
|||
char ebuf[512]; |
|||
|
|||
memset(iv, '\0', sizeof(iv)); |
|||
|
|||
pubKey[0] = ReadPublicKey(PUBFILE); |
|||
|
|||
if(!pubKey[0]) |
|||
{ |
|||
fprintf(stderr,"Error: can't load public key"); |
|||
exit(1); |
|||
} |
|||
|
|||
ekey[0] = malloc(EVP_PKEY_size(pubKey[0])); |
|||
if (!ekey[0]) |
|||
{ |
|||
EVP_PKEY_free(pubKey[0]); |
|||
perror("malloc"); |
|||
exit(1); |
|||
} |
|||
|
|||
EVP_SealInit(&ectx, |
|||
EVP_des_ede3_cbc(), |
|||
ekey, |
|||
&ekeylen, |
|||
iv, |
|||
pubKey, |
|||
1); |
|||
|
|||
net_ekeylen = htonl(ekeylen); |
|||
write(STDOUT, (char*)&net_ekeylen, sizeof(net_ekeylen)); |
|||
write(STDOUT, ekey[0], ekeylen); |
|||
write(STDOUT, iv, sizeof(iv)); |
|||
|
|||
while(1) |
|||
{ |
|||
readlen = read(STDIN, buf, sizeof(buf)); |
|||
|
|||
if (readlen <= 0) |
|||
{ |
|||
if (readlen < 0) |
|||
perror("read"); |
|||
|
|||
break; |
|||
} |
|||
|
|||
EVP_SealUpdate(&ectx, ebuf, &ebuflen, buf, readlen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
|||
EVP_SealFinal(&ectx, ebuf, &ebuflen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
|
|||
EVP_PKEY_free(pubKey[0]); |
|||
free(ekey[0]); |
|||
} |
|||
|
|||
void main_decrypt(void) |
|||
{ |
|||
char buf[520]; |
|||
char ebuf[512]; |
|||
unsigned int buflen; |
|||
EVP_CIPHER_CTX ectx; |
|||
unsigned char iv[EVP_MAX_IV_LENGTH]; |
|||
unsigned char *encryptKey; |
|||
unsigned int ekeylen; |
|||
EVP_PKEY *privateKey; |
|||
|
|||
memset(iv, '\0', sizeof(iv)); |
|||
|
|||
privateKey = ReadPrivateKey(PRIVFILE); |
|||
if (!privateKey) |
|||
{ |
|||
fprintf(stderr, "Error: can't load private key"); |
|||
exit(1); |
|||
} |
|||
|
|||
read(STDIN, &ekeylen, sizeof(ekeylen)); |
|||
ekeylen = ntohl(ekeylen); |
|||
|
|||
if (ekeylen != EVP_PKEY_size(privateKey)) |
|||
{ |
|||
EVP_PKEY_free(privateKey); |
|||
fprintf(stderr, "keylength mismatch"); |
|||
exit(1); |
|||
} |
|||
|
|||
encryptKey = malloc(sizeof(char) * ekeylen); |
|||
if (!encryptKey) |
|||
{ |
|||
EVP_PKEY_free(privateKey); |
|||
perror("malloc"); |
|||
exit(1); |
|||
} |
|||
|
|||
read(STDIN, encryptKey, ekeylen); |
|||
read(STDIN, iv, sizeof(iv)); |
|||
EVP_OpenInit(&ectx, |
|||
EVP_des_ede3_cbc(), |
|||
encryptKey, |
|||
ekeylen, |
|||
iv, |
|||
privateKey); |
|||
|
|||
while(1) |
|||
{ |
|||
int readlen = read(STDIN, ebuf, sizeof(ebuf)); |
|||
|
|||
if (readlen <= 0) |
|||
{ |
|||
if (readlen < 0) |
|||
perror("read"); |
|||
|
|||
break; |
|||
} |
|||
|
|||
EVP_OpenUpdate(&ectx, buf, &buflen, ebuf, readlen); |
|||
write(STDOUT, buf, buflen); |
|||
} |
|||
|
|||
EVP_OpenFinal(&ectx, buf, &buflen); |
|||
|
|||
write(STDOUT, buf, buflen); |
|||
|
|||
EVP_PKEY_free(privateKey); |
|||
free(encryptKey); |
|||
} |
|||
|
|||
|
@ -1,75 +0,0 @@ |
|||
/* NOCW */ |
|||
/*
|
|||
Please read the README file for condition of use, before |
|||
using this software. |
|||
|
|||
Maurice Gittens <mgittens@gits.nl> January 1997 |
|||
*/ |
|||
|
|||
#include <stdlib.h> |
|||
#include <stdio.h> |
|||
#include <strings.h> |
|||
|
|||
#include <openssl/rsa.h> |
|||
#include <openssl/evp.h> |
|||
#include <openssl/objects.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/err.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/ssl.h> |
|||
|
|||
#include "loadkeys.h" |
|||
|
|||
#define PUBFILE "cert.pem" |
|||
#define PRIVFILE "privkey.pem" |
|||
#define STDIN 0 |
|||
#define STDOUT 1 |
|||
|
|||
int main() |
|||
{ |
|||
char *ct = "This the clear text"; |
|||
char *buf; |
|||
char *buf2; |
|||
EVP_PKEY *pubKey; |
|||
EVP_PKEY *privKey; |
|||
int len; |
|||
|
|||
ERR_load_crypto_strings(); |
|||
|
|||
privKey = ReadPrivateKey(PRIVFILE); |
|||
if (!privKey) |
|||
{ |
|||
ERR_print_errors_fp (stderr); |
|||
exit (1); |
|||
} |
|||
|
|||
pubKey = ReadPublicKey(PUBFILE); |
|||
if(!pubKey) |
|||
{ |
|||
EVP_PKEY_free(privKey); |
|||
fprintf(stderr,"Error: can't load public key"); |
|||
exit(1); |
|||
} |
|||
|
|||
/* No error checking */ |
|||
buf = malloc(EVP_PKEY_size(pubKey)); |
|||
buf2 = malloc(EVP_PKEY_size(pubKey)); |
|||
|
|||
len = RSA_public_encrypt(strlen(ct)+1, ct, buf, pubKey->pkey.rsa,RSA_PKCS1_PADDING); |
|||
|
|||
if (len != EVP_PKEY_size(pubKey)) |
|||
{ |
|||
fprintf(stderr,"Error: ciphertext should match length of key\n"); |
|||
exit(1); |
|||
} |
|||
|
|||
RSA_private_decrypt(len, buf, buf2, privKey->pkey.rsa,RSA_PKCS1_PADDING); |
|||
|
|||
printf("%s\n", buf2); |
|||
|
|||
EVP_PKEY_free(privKey); |
|||
EVP_PKEY_free(pubKey); |
|||
free(buf); |
|||
free(buf2); |
|||
return 0; |
|||
} |
@ -1,87 +0,0 @@ |
|||
/* NOCW */ |
|||
/*
|
|||
Please read the README file for condition of use, before |
|||
using this software. |
|||
|
|||
Maurice Gittens <mgittens@gits.nl> January 1997 |
|||
|
|||
*/ |
|||
|
|||
#include <stdio.h> |
|||
#include <unistd.h> |
|||
#include <fcntl.h> |
|||
#include <sys/stat.h> |
|||
#include <openssl/evp.h> |
|||
|
|||
#define STDIN 0 |
|||
#define STDOUT 1 |
|||
#define BUFLEN 512 |
|||
#define INIT_VECTOR "12345678" |
|||
#define ENCRYPT 1 |
|||
#define DECRYPT 0 |
|||
#define ALG EVP_des_ede3_cbc() |
|||
|
|||
static const char *usage = "Usage: example3 [-d] password\n"; |
|||
|
|||
void do_cipher(char *,int); |
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
if ((argc == 2)) |
|||
{ |
|||
do_cipher(argv[1],ENCRYPT); |
|||
} |
|||
else if ((argc == 3) && !strcmp(argv[1],"-d")) |
|||
{ |
|||
do_cipher(argv[2],DECRYPT); |
|||
} |
|||
else |
|||
{ |
|||
fprintf(stderr,"%s", usage); |
|||
exit(1); |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
void do_cipher(char *pw, int operation) |
|||
{ |
|||
char buf[BUFLEN]; |
|||
char ebuf[BUFLEN + 8]; |
|||
unsigned int ebuflen; /* rc; */ |
|||
unsigned char iv[EVP_MAX_IV_LENGTH], key[EVP_MAX_KEY_LENGTH]; |
|||
/* unsigned int ekeylen, net_ekeylen; */ |
|||
EVP_CIPHER_CTX ectx; |
|||
|
|||
memcpy(iv, INIT_VECTOR, sizeof(iv)); |
|||
|
|||
EVP_BytesToKey(ALG, EVP_md5(), "salu", pw, strlen(pw), 1, key, iv); |
|||
|
|||
EVP_CIPHER_CTX_init(&ectx); |
|||
EVP_CipherInit_ex(&ectx, ALG, NULL, key, iv, operation); |
|||
|
|||
while(1) |
|||
{ |
|||
int readlen = read(STDIN, buf, sizeof(buf)); |
|||
|
|||
if (readlen <= 0) |
|||
{ |
|||
if (!readlen) |
|||
break; |
|||
else |
|||
{ |
|||
perror("read"); |
|||
exit(1); |
|||
} |
|||
} |
|||
|
|||
EVP_CipherUpdate(&ectx, ebuf, &ebuflen, buf, readlen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
|||
EVP_CipherFinal_ex(&ectx, ebuf, &ebuflen); |
|||
EVP_CIPHER_CTX_cleanup(&ectx); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
@ -1,123 +0,0 @@ |
|||
/* NOCW */ |
|||
/*
|
|||
Please read the README file for condition of use, before |
|||
using this software. |
|||
|
|||
Maurice Gittens <mgittens@gits.nl> January 1997 |
|||
|
|||
*/ |
|||
|
|||
#include <stdio.h> |
|||
#include <unistd.h> |
|||
#include <fcntl.h> |
|||
#include <sys/stat.h> |
|||
#include <openssl/evp.h> |
|||
|
|||
#define STDIN 0 |
|||
#define STDOUT 1 |
|||
#define BUFLEN 512 |
|||
|
|||
static const char *usage = "Usage: example4 [-d]\n"; |
|||
|
|||
void do_encode(void); |
|||
void do_decode(void); |
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
if ((argc == 1)) |
|||
{ |
|||
do_encode(); |
|||
} |
|||
else if ((argc == 2) && !strcmp(argv[1],"-d")) |
|||
{ |
|||
do_decode(); |
|||
} |
|||
else |
|||
{ |
|||
fprintf(stderr,"%s", usage); |
|||
exit(1); |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
void do_encode() |
|||
{ |
|||
char buf[BUFLEN]; |
|||
char ebuf[BUFLEN+24]; |
|||
unsigned int ebuflen; |
|||
EVP_ENCODE_CTX ectx; |
|||
|
|||
EVP_EncodeInit(&ectx); |
|||
|
|||
while(1) |
|||
{ |
|||
int readlen = read(STDIN, buf, sizeof(buf)); |
|||
|
|||
if (readlen <= 0) |
|||
{ |
|||
if (!readlen) |
|||
break; |
|||
else |
|||
{ |
|||
perror("read"); |
|||
exit(1); |
|||
} |
|||
} |
|||
|
|||
EVP_EncodeUpdate(&ectx, ebuf, &ebuflen, buf, readlen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
|||
EVP_EncodeFinal(&ectx, ebuf, &ebuflen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
|||
void do_decode() |
|||
{ |
|||
char buf[BUFLEN]; |
|||
char ebuf[BUFLEN+24]; |
|||
unsigned int ebuflen; |
|||
EVP_ENCODE_CTX ectx; |
|||
|
|||
EVP_DecodeInit(&ectx); |
|||
|
|||
while(1) |
|||
{ |
|||
int readlen = read(STDIN, buf, sizeof(buf)); |
|||
int rc; |
|||
|
|||
if (readlen <= 0) |
|||
{ |
|||
if (!readlen) |
|||
break; |
|||
else |
|||
{ |
|||
perror("read"); |
|||
exit(1); |
|||
} |
|||
} |
|||
|
|||
rc = EVP_DecodeUpdate(&ectx, ebuf, &ebuflen, buf, readlen); |
|||
if (rc <= 0) |
|||
{ |
|||
if (!rc) |
|||
{ |
|||
write(STDOUT, ebuf, ebuflen); |
|||
break; |
|||
} |
|||
|
|||
fprintf(stderr, "Error: decoding message\n"); |
|||
return; |
|||
} |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
|||
EVP_DecodeFinal(&ectx, ebuf, &ebuflen); |
|||
|
|||
write(STDOUT, ebuf, ebuflen); |
|||
} |
|||
|
@ -1,72 +0,0 @@ |
|||
/* NOCW */ |
|||
/*
|
|||
Please read the README file for condition of use, before |
|||
using this software. |
|||
|
|||
Maurice Gittens <mgittens@gits.nl> January 1997 |
|||
|
|||
*/ |
|||
|
|||
#include <unistd.h> |
|||
#include <stdio.h> |
|||
#include <netinet/in.h> |
|||
#include <fcntl.h> |
|||
#include <strings.h> |
|||
#include <stdlib.h> |
|||
|
|||
#include <openssl/rsa.h> |
|||
#include <openssl/evp.h> |
|||
#include <openssl/objects.h> |
|||
#include <openssl/x509.h> |
|||
#include <openssl/err.h> |
|||
#include <openssl/pem.h> |
|||
#include <openssl/ssl.h> |
|||
|
|||
EVP_PKEY * ReadPublicKey(const char *certfile) |
|||
{ |
|||
FILE *fp = fopen (certfile, "r"); |
|||
X509 *x509; |
|||
EVP_PKEY *pkey; |
|||
|
|||
if (!fp) |
|||
return NULL; |
|||
|
|||
x509 = PEM_read_X509(fp, NULL, 0, NULL); |
|||
|
|||
if (x509 == NULL) |
|||
{ |
|||
ERR_print_errors_fp (stderr); |
|||
return NULL; |
|||
} |
|||
|
|||
fclose (fp); |
|||
|
|||
pkey=X509_extract_key(x509); |
|||
|
|||
X509_free(x509); |
|||
|
|||
if (pkey == NULL) |
|||
ERR_print_errors_fp (stderr); |
|||
|
|||
return pkey; |
|||
} |
|||
|
|||
EVP_PKEY *ReadPrivateKey(const char *keyfile) |
|||
{ |
|||
FILE *fp = fopen(keyfile, "r"); |
|||
EVP_PKEY *pkey; |
|||
|
|||
if (!fp) |
|||
return NULL; |
|||
|
|||
pkey = PEM_read_PrivateKey(fp, NULL, 0, NULL); |
|||
|
|||
fclose (fp); |
|||
|
|||
if (pkey == NULL) |
|||
ERR_print_errors_fp (stderr); |
|||
|
|||
return pkey; |
|||
} |
|||
|
|||
|
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue