Re: openssl function equivalent to openssl x509 -in test.crt -text -noout

2013-10-21 Thread anu engineer
X509 *pCert = {Your Cert Object}
BUF_MEM *pBuffMem = NULL;
char *  pCertString = NULL;

pBioCert = BIO_new(BIO_s_mem());
if ( pBioCert == NULL) {
dwError = MEMORY_ERR;
BAIL_ON_ERROR(dwError);
}

dwError = X509_print(pBioCert, pCert);
BIO_get_mem_ptr(pBioCert, pBuffMem);

dwError = AllocateMemory(pBuffMem-length, (void*) pCertString);
BAIL_ON_ERROR(dwError);

memcpy(pCertString, pBuffMem-data, pBuffMem-length - 1);

You have the cert in the OpenSSL printable format now in pCertString

--Anu





On Mon, Oct 21, 2013 at 6:49 AM, Salz, Rich rs...@akamai.com wrote:

 **Ø  **What is openssl function equivalent to openssl x509 -in test.crt
 -text -noout

 ** **

 ** **

 Look in apps/x509.c

 ** **

 --  

 Principal Security Engineer

 Akamai Technology

 Cambridge, MA

 ** **



Re: A question on EVP_PKEY_copy_parameters

2013-06-14 Thread anu engineer
Hi Dave,

This is a very detailed and excellent answer, Thank you very much

Anu



On Wed, Jun 12, 2013 at 6:59 PM, Dave Thompson dthomp...@prinpay.comwrote:

 From: owner-openssl-us...@openssl.org On Behalf Of anu.engineer
 Sent: Wednesday, 12 June, 2013 15:03

  I am reading thru the ca.c in the apps directory to understand how
 to issue a certificate using OpenSSL and I came across this fragment
 of code which I am struggling to understand.

 Just before signing the certificate the code executes this fragment
 [indentation partially restored]
 pktmp=X509_get_pubkey(ret);
 if (EVP_PKEY_missing_parameters(pktmp) 
   !EVP_PKEY_missing_parameters(pkey))
   EVP_PKEY_copy_parameters(pktmp,pkey);
 EVP_PKEY_free(pktmp);

 I looked up the man pages and the notes section talk about

 The main purpose of the functions EVP_PKEY_missing_parameters()
 and EVP_PKEY_copy_parameters() is to handle public keys in certificates
 where the parameters are sometimes omitted from a public key
 if they are inherited from the CA that signed it.

 1) What parameters are we talking about here ?  We just read the
 Public Key from the CSR and we seem to copy some fields from the CA key
 ( in the code pkey) to pktmp key which is the key we read from the CSR.

 pktmp is a copy of the requester's publickey from the CSR, yes.

 The parameters for DSA are the group-defining prime p, subgroup order q,
 and subgroup generator g, and optionally some additional values that can
 be used to prove the parameters were generated randomly (i.e. not
 manipulated to force user keys into an possibly more breakable sub/group).
 As indicated, 3279/3280/5280 allow these to be omitted from PublicKeyInfo
 in child cert if they are the same as parent cert/key; this was apparently
 intended for cases like people in a business all using the same parameters
 for their keys and a corporate CA for their certs. AFAICS openssl won't
 *generate* a CSR like this, because its private keys are always complete,
 but some other software might. As no one seems to be using DSA certs
 on the public internet, there's no handy data to check this.

 The parameters for EC including ECDSA are in principle a prime integer
 for a GF(p) underlying field or a binary basis polynomial and its length
 for a GF(2^n) aka binary one, coefficients a and b of the curve equation,
 a base or generating point represented by two or sometimes one elements
 of the underlying field, the order of the result group and its cofactor.
 In practice people don't generate their own EC parameters (which is hard)
 but instead use one of a few dozen standardized sets, which can be and
 usually are encoded in the cert as one OID, so there's no practical benefit
 to using inheritance and I doubt anyone does.

 There are no parameters for RSA; each key(pair) stands alone.

 But it doesn't look like this piece of code accomplishes anything.
 It would make some sense to inherit the parameters (if necessary)
 then check this key is consistent with the parameters (to the extent
 possible for a publickey), but it doesn't actually do that. Maybe
 it did in a past version but got neutered by some change -- and
 not noticed because in practice people rarely create or accept
 deliberately defective keys and CSRs. Even when a malefactor wants
 a fraudulent cert, it's a fraudulent binding to a valid key.


 __
 OpenSSL Project http://www.openssl.org
 User Support Mailing Listopenssl-users@openssl.org
 Automated List Manager   majord...@openssl.org