Hi,

Try:

 EVP_PKEY *pkey = X509_get_pubkey(cert);
 rsa_public_key = EVP_PKEY_get1_RSA(pkey);

Cheers

        Christian
 
On Mon, May 23, 2011 at 06:41:34PM +0530, Vinay Kumar wrote:
> Hi All,
> 
> I am trying to print *public modulus* and *public exponent* from a *X509 
> certificate*. The code snippet is as follows:
> 
>    modulus_and_exponent(X509 *cert)   {
> 
>        RSA *rsa_public_key = NULL;
>      
>             if(cert->cert_info->key->pkey)    {
>                 rsa_public_key = EVP_PKEY_get1_RSA
>    (cert->cert_info->key->pkey);
>                 printf("Public
>    exponent------>%s\n",BN_bn2dec(rsa_public_key->e));
>                 printf("Public
>    modulus------>%s\n",BN_bn2dec(rsa_public_key->n));
>             }
>              else   {
>                 printf("PKEY NOT FOUND\n");
>           }
>    }
> 
> 
> Output: *PKEY NOT FOUND*
> 
> The  key structure contains other valid fields but pkey field is NULL 
> when checked through gdb:
> 
>    *(gdb) p *(cert->cert_info) *
>    $1 = {version = 0x8f2ecb8, serialNumber = 0x8f2fa38, signature =
>    0x8f2fa50,
>     issuer = 0x8f2fa60, validity = 0x8f25fb8, subject = 0x8f25ff8, key
>    = 0x8f26050,
>     issuerUID = 0x0, subjectUID = 0x0, extensions = 0x8f2ef58}
>    *(gdb) p *(cert->cert_info->key) *
>    $2 = {algor = 0x8f26060, public_key = 0x8f26070, *pkey = 0x0*}
>    (gdb)
> 
> 
> The same certificate when printed using OpenSSL command *displays 
> exponent and modulus* as follows*:*
> 
>    Certificate:
>       Data:
>           Version: 3 (0x2)
>           Serial Number: 389 (0x185)
>           Signature Algorithm: sha1WithRSAEncryption
>           Issuer: C=IN, O=CL, OU=XYZ, CN=PC CA
>           Validity
>               Not Before: Nov 25 12:40:41 2010 GMT
>               Not After : Feb 28 12:40:41 2031 GMT
>           Subject: C=IN, O=Global, OU=XYZ, CN=Global CA
>           Subject Public Key Info:
>               Public Key Algorithm: rsaEncryption
>               RSA Public Key: (2048 bit)
>                  * Modulus (2048 bit): *
>                       00:dd:c6:44:3b:c0:39:0d:e8:75:21:89:fa:41:f2:
>                       ca:b1:46:d1:a2:b8:ea:78:f2:6e:27:84:03:d1:0a:
>                       4d:85:4f:f9:5a:56:25:85:7b:1b:01:b2:de:31:df:
>                       1a:3d:32:9d:0f:c9:a6:b8:c6:89:7c:87:f3:f9:6d:
>                       a9:fd:79:df:0e:b3:ad:90:5e:05:fc:26:d5:11:e5:
>                       03:73:e5:9b:9e:8f:40:af:a5:a0:09:e1:50:4f:22:
>                       06:e5:80:03:77:26:af:d8:62:28:00:c5:bc:a3:fe:
>                       c2:e7:68:a7:9a:81:6a:07:35:ee:43:0f:eb:04:d6:
>                       ed:53:92:a8:b2:87:6a:02:5c:43:dd:61:cf:da:64:
>                       ba:15:13:22:3b:79:b1:83:04:69:0d:25:82:73:f9:
>                       d2:78:f6:cd:30:20:3e:eb:f2:7d:8e:56:e3:0f:38:
>                       06:a2:21:b8:c8:a9:50:a8:4a:7f:3c:a8:d3:85:76:
>                       ec:53:38:a7:b6:4a:9c:a7:88:a5:b9:06:e0:a5:53:
>                       b3:fa:ae:97:bb:ab:e5:35:8a:ad:92:9c:55:b1:ac:
>                       a1:11:3b:d0:b6:4f:f8:da:bc:01:74:67:99:c7:7a:
>                       d1:d5:14:91:84:76:15:a8:41:34:99:fb:c9:00:92:
>                       cf:45:d4:db:66:2c:d7:5c:38:49:c9:a9:4b:0f:80:
>                       55:0f
>                   *Exponent: 65537 (0x10001) *
>           X509v3 extensions:
>               X509v3 Key Usage: critical
>                   Certificate Sign, CRL Sign
>               X509v3 Subject Key Identifier:
>                  
>    25:05:14:41:88:7F:0A:54:A4:04:92:05:9F:7B:F5:B1:63:D5:34:13
>               X509v3 Authority Key Identifier:
>                  
>    keyid:22:31:20:B5:A8:DD:AC:DB:52:28:24:E6:F6:C6:A3:13:F2:94:A0:32
> 
>               X509v3 Basic Constraints: critical
>                   CA:TRUE, pathlen:0
>       Signature Algorithm: sha1WithRSAEncryption
>           45:39:8c:c9:91:9a:2c:b1:2b:78:18:2e:66:51:1c:29:9a:be:
>           c0:37:d5:a8:57:a1:0f:f1:ea:83:3e:fc:5b:bf:2f:b4:b2:eb:
>           5e:7b:ec:7a:15:da:8d:74:15:1e:96:c1:9c:d5:0b:53:ef:0e:
>           2d:5c:55:17:65:60:38:0f:6c:f4:30:2b:f0:cd:fc:01:e8:9c:
>           da:40:c5:31:f5:a9:3d:ab:20:69:de:4f:01:70:92:a6:e6:a6:
>           98:5d:ca:1b:d2:14:3d:58:cf:e3:9c:02:c3:82:98:6f:65:3b:
>           5c:20:f5:3e:47:9c:1c:4e:5c:a1:50:ff:a5:f4:45:c3:96:ce:
>           af:9d:c8:dd:55:33:a6:d0:e5:5d:fc:c6:8a:07:c4:0d:22:45:
>           c6:47:db:90:09:28:06:58:5d:83:1e:0a:35:5d:1a:72:50:d6:
>           37:ae:f3:84:1c:af:8e:f2:55:5a:68:38:dd:c3:2d:63:cc:03:
>           c9:04:a8:59:c6:dc:ea:2f:23:0f:86:27:95:e3:f0:ba:9f:44:
>           75:21:80:ad:1b:76:55:fb:70:aa:a1:5b:a0:da:7d:65:61:99:
>           05:ca:ec:b1:2e:99:91:d5:c4:e8:ad:f5:30:e8:9b:39:e9:ae:
>           47:fa:a0:d9:d0:e6:36:ea:9b:8b:02:f1:09:ac:08:08:cb:59:
>           bf:3d:bc:57
>    -----BEGIN CERTIFICATE-----
>    MIID0jCCArqgAwIBAgICAYUwDQYJKoZIhvcNAQEFBQAwbzELMAkGA1UEBhMCVVMx
>    EjAQBgNVBAoTCUNhYmxlTGFiczEUMBIGA1UECxMLUGFja2V0Q2FibGUxNjA0BgNV
>    BAMTLVBhY2tldENhYmxlIFJvb3QgRGV2aWNlIENlcnRpZmljYXRlIEF1dGhvcml0
>    eTAeFw0xMDExMjUxMjQwNDFaFw0zMTAyMjgxMjQwNDFaMIGAMQswCQYDVQQGEwJJ
>    TjElMCMGA1UEChMcR2xvYmFsIEVkZ2UgU29mdHdhcmUgTGltaXRlZDEUMBIGA1UE
>    CxMLUGFja2V0Q2FibGUxNDAyBgNVBAMTK0dsb2JhbCBFZGdlIFNvZnR3YXJlIExp
>    bWl0ZWQgUGFja2V0Q2FibGUgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
>    AoIBAQDdxkQ7wDkN6HUhifpB8sqxRtGiuOp48m4nhAPRCk2FT/laViWFexsBst4x
>    3xo9Mp0Pyaa4xol8h/P5ban9ed8Os62QXgX8JtUR5QNz5Zuej0CvpaAJ4VBPIgbl
>    gAN3Jq/YYigAxbyj/sLnaKeagWoHNe5DD+sE1u1Tkqiyh2oCXEPdYc/aZLoVEyI7
>    ebGDBGkNJYJz+dJ49s0wID7r8n2OVuMPOAaiIbjIqVCoSn88qNOFduxTOKe2Spyn
>    iKW5BuClU7P6rpe7q+U1iq2SnFWxrKERO9C2T/javAF0Z5nHetHVFJGEdhWoQTSZ
>    +8kAks9F1NtmLNdcOEnJqUsPgFUPAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjAd
>    BgNVHQ4EFgQUJQUUQYh/ClSkBJIFn3v1sWPVNBMwHwYDVR0jBBgwFoAUIjEgtajd
>    rNtSKCTm9sajE/KUoDIwEgYDVR0TAQH/BAgwBgEB/wIBADANBgkqhkiG9w0BAQUF
>    AAOCAQEARTmMyZGaLLEreBguZlEcKZq+wDfVqFehD/Hqgz78W78vtLLrXnvsehXa
>    jXQVHpbBnNULU+8OLVxVF2VgOA9s9DAr8M38Aeic2kDFMfWpPasgad5PAXCSpuam
>    mF3KG9IUPVjP45wCw4KYb2U7XCD1PkecHE5coVD/pfRFw5bOr53I3VUzptDlXfzG
>    igfEDSJFxkfbkAkoBlhdgx4KNV0aclDWN67zhByvjvJVWmg43cMtY8wDyQSoWcbc
>    6i8jD4YnlePwup9EdSGArRt2VftwqqFboNp9ZWGZBcrssS6ZkdXE6K31MOibOemu
>    R/qg2dDmNuqbiwLxCawICMtZvz28Vw==
>    -----END CERTIFICATE-----
> 
> 
> Please let me know the reason for getting *pkey as NULL* parameter and 
> changes required to *print public modulus and public exponent.*
> 
> Thanks  & Best Regards,
> Vinay
> 
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to