Re: Reading certificate from structure using d2i_X509??

2003-03-12 Thread Valentin Zahariev
On Tue, Mar 11, 2003 at 01:54:55PM -0800, rajagopalan ramanujam wrote:
 
 hi,
 
 I am having a problem  when reading a certificate and
 private key from a memory buffer instead of a file.
 i am using d2i_X509(NULL,cert,strlen(cert)) to read
 the certificate string which was defined in one of
 .pem
 file. Should i use SSL_CTX_use_certificate_ASN1
 instead??? Please help me.
 
 copied from server.pem file
 unsigned char * cert
 =MIIDDzCCAs2gAwIBAgICAQw==;
 unsigned char * key =
 y5qH6Q0Nvb5SUcJEYY...p6==;

Incorrect. This is PEM format, d2i_* expected DER/binary input
use:
% openssl x509 -in server.pem -noout -C  server_cert.c
will produce some like this:
[cut]
unsigned char XXX_certificate[1592]={
0x30,0x82,0x06,0x34,0x30,0x82,0x05,0x1C,0xA0,0x03,0x02,0x01,0x02,0x02,0x01,0x0D,
[cut]

 
 here is my sample server code :
 
 void ssl_server ()
 {
 
SSL_CTX* ctx;
   SSL* ssl;
   X509*client_cert,*x509_cert,*x509_key;
   char*str;
   SSL_METHOD *meth;
   int theFd;
   fd_set  theFdSet;
   
   /* SSL preliminaries. We keep the certificate and
 key with the context. */
 
   SSL_load_error_strings();
   SSLeay_add_ssl_algorithms();
   meth = SSLv23_server_method();
   ctx = SSL_CTX_new (meth);
 
   x509_cert = d2i_X509(NULL,cert,strlen(cert));
 
   if (SSL_CTX_use_certificate(ctx,x509_cert) = 0) {
 return;
   }
 
   x509_key = d2i_X509(NULL,key,sizeof(key));
   
   if (SSL_CTX_use_PrivateKey(ctx,x509_key) = 0) {
 return;
   }
 
   if (!SSL_CTX_check_private_key(ctx)) {
 printf(Private key does not match the certificate
 public key\n);
 return;
   }
 
   .
   .
 }
 
 when d2i_X509 its failing for the following reason.
 IMPLEMENT_ASN1_FUNCTIONS(X509)
 ASN1_VALUE *ASN1_item_d2i(..)
 asn1_check_tlen(..)
 ASN1err(ASN1_F_ASN1_CHECK_TLEN, ASN1_R_WRONG_TAG);
 return 0;


here is sample code:
X509 *
get_cert( void)
{

unsigned char   *der = XXX_certificate;
X509*crt = NULL;

if ( NULL == ( crt = X509_new())) {

/* Ops, out-of-memory? */
return NULL;
}

return d2i_X509( crt, der, sizeof( XXX_certificate));
}

 
 
 __
 Do you Yahoo!?
 Yahoo! Web Hosting - establish your business online
 http://webhosting.yahoo.com
 __
 OpenSSL Project http://www.openssl.org
 User Support Mailing List[EMAIL PROTECTED]
 Automated List Manager   [EMAIL PROTECTED]
 

-- 
regards
Valentin Zahariev
CTO
E-CARD Ltd.

http://www.e-card.bg

PGP keyID: 0xC005C5CA 
Key fingerprint = F3 46 26 21 8F F0 5E 19  5B B3 34 08 24 9E 71 13  C0 05 C5 CA
http://certs.e-card.bg:11371/pks/lookup?op=getsearch=0xC005C5CA


pgp0.pgp
Description: PGP signature


Reading certificate from structure using d2i_X509??

2003-03-11 Thread rajagopalan ramanujam

hi,

I am having a problem  when reading a certificate and
private key from a memory buffer instead of a file.
i am using d2i_X509(NULL,cert,strlen(cert)) to read
the certificate string which was defined in one of
.pem
file. Should i use SSL_CTX_use_certificate_ASN1
instead??? Please help me.

copied from server.pem file
unsigned char * cert
=MIIDDzCCAs2gAwIBAgICAQw==;
unsigned char * key =
y5qH6Q0Nvb5SUcJEYY...p6==;

here is my sample server code :

void ssl_server ()
{

   SSL_CTX* ctx;
  SSL* ssl;
  X509*client_cert,*x509_cert,*x509_key;
  char*str;
  SSL_METHOD *meth;
  int theFd;
  fd_set  theFdSet;
  
  /* SSL preliminaries. We keep the certificate and
key with the context. */

  SSL_load_error_strings();
  SSLeay_add_ssl_algorithms();
  meth = SSLv23_server_method();
  ctx = SSL_CTX_new (meth);

  x509_cert = d2i_X509(NULL,cert,strlen(cert));

  if (SSL_CTX_use_certificate(ctx,x509_cert) = 0) {
return;
  }

  x509_key = d2i_X509(NULL,key,sizeof(key));
  
  if (SSL_CTX_use_PrivateKey(ctx,x509_key) = 0) {
return;
  }

  if (!SSL_CTX_check_private_key(ctx)) {
printf(Private key does not match the certificate
public key\n);
return;
  }

.
.
}

when d2i_X509 its failing for the following reason.
IMPLEMENT_ASN1_FUNCTIONS(X509)
ASN1_VALUE *ASN1_item_d2i(..)
asn1_check_tlen(..)
ASN1err(ASN1_F_ASN1_CHECK_TLEN, ASN1_R_WRONG_TAG);
return 0;


__
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com
__
OpenSSL Project http://www.openssl.org
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager   [EMAIL PROTECTED]


Re: Reading certificate from structure using d2i_X509??

2003-03-11 Thread Dr. Stephen Henson
On Tue, Mar 11, 2003, rajagopalan ramanujam wrote:

 
 hi,
 
 I am having a problem  when reading a certificate and
 private key from a memory buffer instead of a file.
 i am using d2i_X509(NULL,cert,strlen(cert)) to read
 the certificate string which was defined in one of
 .pem
 file. Should i use SSL_CTX_use_certificate_ASN1
 instead??? Please help me.
 
 copied from server.pem file
 unsigned char * cert
 =MIIDDzCCAs2gAwIBAgICAQw==;
 unsigned char * key =
 y5qH6Q0Nvb5SUcJEYY...p6==;
 

You can only use d2i_X509() with the DER (binary) form of the certificate.
Since this can contain embedded zeroes strlen() is not usable, you need a
separate length parameter.

The -C option of the 'x509' utility can translate a certificate into
appropriate C code. For other things like private keys you need to translate
them yourself. Something like the Unix utility xxd on the binary form can do
that.

The stuff you have looks like base64 form with all the newlines deleted. That
isn't parseable directly. If you'd included all the newlines then you could
use the standard PEM routines with a memory BIO.

Steve.
--
Dr Stephen N. Henson.
Core developer of the   OpenSSL project: http://www.openssl.org/
Freelance consultant see: http://www.drh-consultancy.demon.co.uk/
Email: [EMAIL PROTECTED], PGP key: via homepage.
__
OpenSSL Project http://www.openssl.org
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager   [EMAIL PROTECTED]


Re: Reading certificate from structure using d2i_X509??

2003-03-11 Thread rajagopalan ramanujam
Thanks steve!!

Can i use these to function calls to convert?

   PEM_read_bio_X509
   PEM_read_bio_PrivateKey 


--- Dr. Stephen Henson [EMAIL PROTECTED] wrote:
 On Tue, Mar 11, 2003, rajagopalan ramanujam wrote:
 
  
  hi,
  
  I am having a problem  when reading a certificate
 and
  private key from a memory buffer instead of a
 file.
  i am using d2i_X509(NULL,cert,strlen(cert)) to
 read
  the certificate string which was defined in one of
  .pem
  file. Should i use SSL_CTX_use_certificate_ASN1
  instead??? Please help me.
  
  copied from server.pem file
  unsigned char * cert
  =MIIDDzCCAs2gAwIBAgICAQw==;
  unsigned char * key =
  y5qH6Q0Nvb5SUcJEYY...p6==;
  
 
 You can only use d2i_X509() with the DER (binary)
 form of the certificate.
 Since this can contain embedded zeroes strlen() is
 not usable, you need a
 separate length parameter.
 
 The -C option of the 'x509' utility can translate a
 certificate into
 appropriate C code. For other things like private
 keys you need to translate
 them yourself. Something like the Unix utility xxd
 on the binary form can do
 that.
 
 The stuff you have looks like base64 form with all
 the newlines deleted. That
 isn't parseable directly. If you'd included all the
 newlines then you could
 use the standard PEM routines with a memory BIO.
 
 Steve.
 --
 Dr Stephen N. Henson.
 Core developer of the   OpenSSL project:
 http://www.openssl.org/
 Freelance consultant see:
 http://www.drh-consultancy.demon.co.uk/
 Email: [EMAIL PROTECTED], PGP key:
 via homepage.

__
 OpenSSL Project
 http://www.openssl.org
 User Support Mailing List   
 [EMAIL PROTECTED]
 Automated List Manager  
[EMAIL PROTECTED]


__
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com
__
OpenSSL Project http://www.openssl.org
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager   [EMAIL PROTECTED]


Re: Reading certificate from structure using d2i_X509??

2003-03-11 Thread Dr. Stephen Henson
On Tue, Mar 11, 2003, rajagopalan ramanujam wrote:

 Thanks steve!!
 
 Can i use these to function calls to convert?
 
PEM_read_bio_X509
PEM_read_bio_PrivateKey 
 
 

If you include all the newlines in the base64 encoded structure and create a
memory BIO from the string using BIO_new_mem_buf(), see the BIO_s_mem manual
page. Using binary and DER is more efficient though.

Steve.
--
Dr Stephen N. Henson.
Core developer of the   OpenSSL project: http://www.openssl.org/
Freelance consultant see: http://www.drh-consultancy.demon.co.uk/
Email: [EMAIL PROTECTED], PGP key: via homepage.
__
OpenSSL Project http://www.openssl.org
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager   [EMAIL PROTECTED]


Re: Reading certificate from structure using d2i_X509??

2003-03-11 Thread Lutz Jaenicke
On Tue, Mar 11, 2003 at 01:54:55PM -0800, rajagopalan ramanujam wrote:
 hi,
 
 I am having a problem  when reading a certificate and
 private key from a memory buffer instead of a file.
 i am using d2i_X509(NULL,cert,strlen(cert)) to read
 the certificate string which was defined in one of
 .pem
 file. Should i use SSL_CTX_use_certificate_ASN1
 instead??? Please help me.
 
 copied from server.pem file
 unsigned char * cert
 =MIIDDzCCAs2gAwIBAgICAQw==;
 unsigned char * key =
 y5qH6Q0Nvb5SUcJEYY...p6==;

Your data are in PEM format (the data is ASCII-armored with BASE64).
The d2i_ functions require the data to be in ASN.1 (DER) format.
You must therefore first decode from the BASE64 armoring.

Best regards,
Lutz
-- 
Lutz Jaenicke [EMAIL PROTECTED]
http://www.aet.TU-Cottbus.DE/personen/jaenicke/
BTU Cottbus, Allgemeine Elektrotechnik
Universitaetsplatz 3-4, D-03044 Cottbus
__
OpenSSL Project http://www.openssl.org
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager   [EMAIL PROTECTED]