Parse PKCS7 wich store in String

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Parse PKCS7 wich store in String

Krusty
Parse PKCS7 wich store in String

Hello Dear Community!
Excusme, im not a professional programmer, but i should solve one tasks, and i spend more one week, and I have no strength and ideas:(

So, i have String prepare_cert which store:

-----BEGIN CERTIFICATE-----
MIII1QYJKoZIhvcNAQcCoIIIxjCCCMICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGgggZhMIIGXTCCBUWgAwIBAgIEH+9ohTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCREUxEDAOBgNVBAoMB1NpZW1lbnMxETAPBgNVBAUTCFpaWlpaWlkyMTowOAYDVQQLDDFDb3B5cmlnaHQgKEMpIFNpZW1lbnMgQUcgMjAxMyBBbGwgUmlnaHRzIFJlc2VydmVkMSgwJgYDVQQDDB9TaWVtZW5zIElzc3VpbmcgQ0EgRUUgQXV0aCAyMDEzMB4XDTE2MDcxOTE1MzYzOVoXDTE5MDcxOTE1MzYzOVowZTERMA8GA1UEBRMIWjAwM0EyQVkxDzANBgNVBCoMBkFuZHJleTESMBAGA1UEBAwJU2x5dW55YWV2MRAwDgYDVQQKDAdTaWVtZW5zM,RkwFwYDVQQDDBBTbHl1bnlhZXYgQW5kcmV5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwnt5QkByovf5lTFzivNp2rB2jVY+IP4Zz0rjswEwLI7ihFXiakiFXwCprCdPHpdTCBYuGAluBfp+dij+KLwytpPDncDLPYAERsJuircXPt453PS4LDNwGs1oxpkzmzSMIl9ZkSsS9MugWGQDCCaK0mKpLn5NT2xEFrOHyneYLHIV+pX5WOTrCNo3lDSUh6NZZLOhqkX5WK3omBNv8eLpv5G/v8yXxAuTTEkzlPgsVWwSJznVIYb1FrV2dm9BXEYBSguWOxdDKsPrX32bgTcESVCW1aHDSbZr43OKdOV7xgzVTp+XFBvBVRVB+BkzkE2wFGxwSgzs/WWynokqM7dqQIDAQABo4IC3zCCAtswMwYDVR0lBCwwKgYIKwYBBQUHAwIGCCsGAQUFBwMEBgorBgEEAYI3FAICBggrB,gEFBQgCAjCBygYDVR0fBIHCMIG/MIG8oIG5oIG2hiZodHRwOi8vY2guc2llbWVucy5jb20vcGtpP1paWlpaWlkyLmNybIZBbGRhcDovL2NsLnNpZW1lbnMubmV0L0NOPVpaWlpaWlkyLEw9UEtJP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3SGSWxkYXA6Ly9jbC5zaWVtZW5zLmNvbS9DTj1aWlpaWlpZMixvPVRydXN0Y2VudGVyP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3QwGgYDVR0gBBMwETAPBg0rBgEEAaFpBwICAwEBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU3pQ/S2pfWE4UGMlG1xQ5wpwhPCkwggEEBggrBgEFBQcBAQSB9zCB9DAyBggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpZMi5jcnQwQQYIKwYBBQUHMAKGNWx,kYXA6Ly9hbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlpZMixMPVBLST9jQUNlcnRpZmljYXRlMEkGCCsGAQUFBzAChj1sZGFwOi8vYWwuc2llbWVucy5jb20vQ049WlpaWlpaWTIsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGAQUFBzABhiRodHRwOi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wDgYDVR0PAQH/BAQDAgeAMFUGA1UdEQROMEygLAYKKwYBBAGCNxQCA6AeDBxhbmRyZXkuc2x5dW55YWV2QHNpZW1lbnMuY29tgRxhbmRyZXkuc2x5dW55YWV2QHNpZW1lbnMuY29tMB0GA1UdDgQWBBQExNDJjMps0iDu16+apbUb57BuXDANBgkqhkiG9w0BAQsFAAOCAQEAJXe0I5wOEngsP8gGQVqqWhUepw85BVDPxd92+CH8WetJ+BwpHHEVMseIFjW,YK3C1VxonJjJdwRzJ8p/DDzNglE+fyiwlhGnCOESPTZISAQGEKMGtt2dy+DoA4liCvLhiB6u3UDZsG2NmZqRWSssz/m707QVQt1hsIRvmYzV0HdkQDnIxP0UlfVkb42Yd9GNSSJ4vtEjv0E4fzUkMUjQvo1GoEaRmeaMWa0BgqyeMCjetO3H+mO5yOjkHe2R39578RgrHTeBJgi22qEpBu6pueq8jrbHJRGb59xI05Ut4Kr5Hcnul9aPx8fWgD7uBGn9mNABqIdSqQE4hLCpX2wThYTGCAjgwggI0AgEBMIGhMIGYMQswCQYDVQQGEwJERTEQMA4GA1UECgwHU2llbWVuczERMA8GA1UEBRMIWlpaWlpaWTIxOjA4BgNVBAsMMUNvcHlyaWdodCAoQykgU2llbWVucyBBRyAyMDEzIEFsbCBSaWdodHMgUmVzZXJ2ZWQxKDAmBgNVBAMMH1NpZW1lbnMgSXNzdWluZyBDQSBFRSBBd,XRoIDIwMTMCBB/vaIUwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzA1MTUwOTUyNTBaMC8GCSqGSIb3DQEJBDEiBCBCA/fR9wGftKzKFZRuIDJVbYiaHzsDteoUoUL55kMrYDANBgkqhkiG9w0BAQEFAASCAQAgGHJtra9zjZf6APOR+SyzsEebV8NtTZ0oNY3p7r0+KDM4ABZMPGo1hYaI9Vt2UFPxUDeXw4hVyU6lrsvGDMUrP375LM9phZ3ZGIpWFWaLaLds21gOdOKy9Skbxf3ktrLbxjOMG2RJY8zjo6ol4ZzD6Y+IsU63pGOkzfJ2/Lm1L1ZhUx2emWHAE96FTWbL8MXS2aTiYIHgmtwtVGw/hmgwq6nfI0kCyj0r0oqbB7/VOTxWmAWhoCNFUoMzG3S2F17kuveDTz1zuQuNVYsSLSBgk2F6sUJK0cZVkpP,+VDaEAFKRuJdGv/gD+bURJ4DCEQshQ7EAJIjmN7gPwBkaPuGM
-----END CERTIFICATE-----

When i try get Certificate from it, i got:

org.bouncycastle.openssl.PEMException: problem parsing cert: java.security.cert.CertificateException: java.io.IOException: DER length more than 4 bytes: 64

My code:

String prepare_cert = new String(raw_string_with_pkcs7).replaceAll("\\s", "");
prepare_cert = prepare_cert.replace("0,-----BEGINPKCS7-----", "-----BEGIN CERTIFICATE-----\r\n");
prepare_cert = prepare_cert.replace("-----ENDPKCS7-----", "\r\n-----END CERTIFICATE-----");

Security.addProvider(new BouncyCastleProvider());
 StringReader sr = new StringReader(prepare_cert);
         PEMReader pr = new PEMReader(sr);
             X509Certificate cert;

                        try {
                                cert = (X509Certificate)pr.readObject();
                                 pr.close();
                                 
                                   RSAPublicKey rsaPublicKey = (RSAPublicKey)cert.getPublicKey();
                                   System.out.println(printCertInfo(cert, rsaPublicKey));
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
static String printCertInfo(X509Certificate cert, RSAPublicKey rsaPublicKey) {
        StringBuilder sb = new StringBuilder();

        sb.append("Certificate:\r\n");
        sb.append("Data:\r\n");
        sb.append("\tVersion: " + cert.getVersion() + "\r\n");
        sb.append("\tSerial Number: " + cert.getSerialNumber() + "\r\n");
        sb.append("\tSignature Algorithm: " + cert.getSigAlgName() + "\r\n");
        sb.append("\tIssuer: " + cert.getIssuerDN().getName() + "\r\n");
        sb.append("\tSignature Algorithm: " + cert.getSigAlgName() + "\r\n");
        sb.append("\tValidity\r\n");
        sb.append("\t\tNot Before: " + cert.getNotBefore() + "\r\n");
        sb.append("\t\tNot After: " + cert.getNotAfter() + "\r\n");
        sb.append("\tSubject: " + cert.getSubjectDN() + "\r\n");
        sb.append("\tSubject Public Key Info:\r\n");
        sb.append("\t\tPublic Key Algorithm: " + rsaPublicKey.getAlgorithm() + "\r\n");
        sb.append("\t\t\tPublic-Key: " + rsaPublicKey.getModulus().bitLength() + " bit \r\n");
        sb.append("\t\t\tModulus:\r\n");
        sb.append("\t\t\t\t" + rsaPublicKey.getModulus().toString(16) + "\r\n");
        sb.append("\t\t\tExponent: " + rsaPublicKey.getPublicExponent() + "\r\n");

        // TODO: Print other attributes, do some research to get them all...

        return sb.toString();
    }


Dear Community, please help me, i don't know where i should go,
thank you!
Reply | Threaded
Open this post in threaded view
|

Re: Parse PKCS7 wich store in String

Michael Gauch
Hallo at all.

Pleas have a loock on the ASN.1 Decoder.

The Online Deocode https://certlogik.com/decoder/

Shows Another *** bytes skipped.


PKCS#7 ASN.1 Information

    
   0 2261: SEQUENCE {
   4    9:   OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
  15 2246:   [0] {
  19 2242:     SEQUENCE {
  23    1:       INTEGER 1
  26   15:       SET {
  28   13:         SEQUENCE {
  30    9:           OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2 1)
  41    0:           NULL
         :           }
         :         }
  43   11:       SEQUENCE {
  45    9:         OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
         :         }
  56 1633:       [0] {
  60 1629:         SEQUENCE {
  64 1349:           SEQUENCE {
  68    3:             [0] {
  70    1:               INTEGER 2
         :               }
  73    4:             INTEGER 535783557
  79   13:             SEQUENCE {
  81    9:               OBJECT IDENTIFIER
         :                 sha256WithRSAEncryption (1 2 840 113549 1 1
11)
  92    0:               NULL
         :               }
  94  152:             SEQUENCE {
  97   11:               SET {
  99    9:                 SEQUENCE {
 101    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
 106    2:                   PrintableString 'DE'
         :                   }
         :                 }
 110   16:               SET {
 112   14:                 SEQUENCE {
 114    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
 119    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
 128   17:               SET {
 130   15:                 SEQUENCE {
 132    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
 137    8:                   PrintableString 'ZZZZZZY2'
         :                   }
         :                 }
 147   58:               SET {
 149   56:                 SEQUENCE {
 151    3:                   OBJECT IDENTIFIER organizationalUnitName
(2 5 4 11)
 156   49:                   UTF8String
         :                   'Copyright (C) Siemens AG 2013 All Rights
Reserve'
         :                   'd'
         :                   }
         :                 }
 207   40:               SET {
 209   38:                 SEQUENCE {
 211    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
 216   31:                   UTF8String 'Siemens Issuing CA EE Auth
2013'
         :                   }
         :                 }
         :               }
 249   30:             SEQUENCE {
 251   13:               UTCTime 19/07/2016 15:36:39 GMT
 266   13:               UTCTime 19/07/2019 15:36:39 GMT
         :               }
 281  101:             SEQUENCE {
 283   17:               SET {
 285   15:                 SEQUENCE {
 287    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
 292    8:                   PrintableString 'Z003A2AY'
         :                   }
         :                 }
 302   15:               SET {
 304   13:                 SEQUENCE {
 306    3:                   OBJECT IDENTIFIER givenName (2 5 4 42)
 311    6:                   UTF8String 'Andrey'
         :                   }
         :                 }
 319   18:               SET {
 321   16:                 SEQUENCE {
 323    3:                   OBJECT IDENTIFIER surname (2 5 4 4)
 328    9:                   UTF8String 'Slyunyaev'
         :                   }
         :                 }
 339   16:               SET {
 341   14:                 SEQUENCE {
 343    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
 348    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
 357   25:               SET {
 359   23:                 SEQUENCE {
 361    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
 366   16:                   UTF8String 'Slyunyaev Andrey'
         :                   }
         :                 }
         :               }
 384  290:             SEQUENCE {
 388   13:               SEQUENCE {
 390    9:                 OBJECT IDENTIFIER
         :                   rsaEncryption (1 2 840 113549 1 1 1)
 401    0:                 NULL
         :                 }
 403  271:               BIT STRING
         :                 30 82 01 0A 02 82 01 01 00 83 09 ED E5 09 01
CA
         :                 8B DF E6 54 C5 CE 2B CD A7 6A C1 DA 35 58 F8
83
         :                 F8 67 3D 2B 8E CC 04 C0 B2 3B 8A 11 57 89 A9
22
         :                 15 7C 02 A6 B0 9D 3C 7A 5D 4C 20 58 B8 60 25
B8
         :                 17 E9 F9 D8 A3 F8 A2 F0 CA DA 4F 0E 77 03 2C
F6
         :                 00 11 1B 09 BA 2A DC 5C FB 78 E7 73 D2 E0 B0
CD
         :                 C0 6B 35 A3 1A 64 CE 6C D2 30 89 7D 66 44 AC
4B
         :                 D3 2E 81 61 90 0C 20 9A 2B 49 8A A4 B9 F9 35
3D
         :                         [ Another 142 bytes skipped ]
         :               }
 678  735:             [3] {
 682  731:               SEQUENCE {
 686   51:                 SEQUENCE {
 688    3:                   OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
 693   44:                   OCTET STRING
         :                     30 2A 06 08 2B 06 01 05 05 07 03 02 06
08 2B 06
         :                     01 05 05 07 03 04 06 0A 2B 06 01 04 01
82 37 14
         :                     02 02 06 08 2B 06 01 05 05 08 02 02
         :                   }
 739  202:                 SEQUENCE {
 742    3:                   OBJECT IDENTIFIER cRLDistributionPoints (2
5 29 31)
 747  194:                   OCTET STRING
         :                     30 81 BF 30 81 BC A0 81 B9 A0 81 B6 86
26 68 74
         :                     74 70 3A 2F 2F 63 68 2E 73 69 65 6D 65
6E 73 2E
         :                     63 6F 6D 2F 70 6B 69 3F 5A 5A 5A 5A 5A
5A 59 32
         :                     2E 63 72 6C 86 41 6C 64 61 70 3A 2F 2F
63 6C 2E
         :                     73 69 65 6D 65 6E 73 2E 6E 65 74 2F 43
4E 3D 5A
         :                     5A 5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49
3F 63 65
         :                     72 74 69 66 69 63 61 74 65 52 65 76 6F
63 61 74
         :                     69 6F 6E 4C 69 73 74 86 49 6C 64 61 70
3A 2F 2F
         :                             [ Another 66 bytes skipped ]
         :                   }
 944   26:                 SEQUENCE {
 946    3:                   OBJECT IDENTIFIER certificatePolicies (2 5
29 32)
 951   19:                   OCTET STRING
         :                     30 11 30 0F 06 0D 2B 06 01 04 01 A1 69
07 02 02
         :                     03 01 01
         :                   }
 972   12:                 SEQUENCE {
 974    3:                   OBJECT IDENTIFIER basicConstraints (2 5 29
19)
 979    1:                   BOOLEAN TRUE
 982    2:                   OCTET STRING 30 00
         :                   }
 986   31:                 SEQUENCE {
 988    3:                   OBJECT IDENTIFIER
         :                     authorityKeyIdentifier (2 5 29 35)
 993   24:                   OCTET STRING
         :                     30 16 80 14 DE 94 3F 4B 6A 5F 58 4E 14
18 C9 46
         :                     D7 14 39 C2 9C 21 3C 29
         :                   }
1019  260:                 SEQUENCE {
1023    8:                   OBJECT IDENTIFIER
         :                     authorityInfoAccess (1 3 6 1 5 5 7 1 1)
1033  247:                   OCTET STRING
         :                     30 81 F4 30 32 06 08 2B 06 01 05 05 07
30 02 86
         :                     26 68 74 74 70 3A 2F 2F 61 68 2E 73 69
65 6D 65
         :                     6E 73 2E 63 6F 6D 2F 70 6B 69 3F 5A 5A
5A 5A 5A
         :                     5A 59 32 2E 63 72 74 30 41 06 08 2B 06
01 05 05
         :                     07 30 02 86 35 6C 64 61 70 3A 2F 2F 61
6C 2E 73
         :                     69 65 6D 65 6E 73 2E 6E 65 74 2F 43 4E
3D 5A 5A
         :                     5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49 3F
63 41 43
         :                     65 72 74 69 66 69 63 61 74 65 30 49 06
08 2B 06
         :                             [ Another 119 bytes skipped ]
         :                   }
1283   14:                 SEQUENCE {
1285    3:                   OBJECT IDENTIFIER keyUsage (2 5 29 15)
1290    1:                   BOOLEAN TRUE
1293    4:                   OCTET STRING 03 02 07 80
         :                   }
1299   85:                 SEQUENCE {
1301    3:                   OBJECT IDENTIFIER subjectAltName (2 5 29
17)
1306   78:                   OCTET STRING
         :                     30 4C A0 2C 06 0A 2B 06 01 04 01 82 37
14 02 03
         :                     A0 1E 0C 1C 61 6E 64 72 65 79 2E 73 6C
79 75 6E
         :                     79 61 65 76 40 73 69 65 6D 65 6E 73 2E
63 6F 6D
         :                     81 1C 61 6E 64 72 65 79 2E 73 6C 79 75
6E 79 61
         :                     65 76 40 73 69 65 6D 65 6E 73 2E 63 6F
6D
         :                   }
1386   29:                 SEQUENCE {
1388    3:                   OBJECT IDENTIFIER subjectKeyIdentifier (2
5 29 14)
1393   22:                   OCTET STRING
         :                     04 14 04 C4 D0 C9 8C CA 6C D2 20 EE D7
AF 9A A5
         :                     B5 1B E7 B0 6E 5C
         :                   }
         :                 }
         :               }
         :             }
1417   13:           SEQUENCE {
1419    9:             OBJECT IDENTIFIER
         :               sha256WithRSAEncryption (1 2 840 113549 1 1
11)
1430    0:             NULL
         :             }
1432  257:           BIT STRING
         :             25 77 B4 23 9C 0E 12 78 2C 3F C8 06 41 5A AA 5A
         :             15 1E A7 0F 39 05 50 CF C5 DF 76 F8 21 FC 59 EB
         :             49 F8 1C 29 1C 71 15 32 C7 88 16 35 98 2B 70 B5
         :             57 1A 27 26 32 5D C1 1C C9 F2 9F C3 0F 33 60 94
         :             4F 9F CA 2C 25 84 69 C2 38 44 8F 4D 92 12 01 01
         :             84 28 C1 AD B7 67 72 F8 3A 00 E2 58 82 BC B8 62
         :             07 AB B7 50 36 6C 1B 63 66 66 A4 56 4A CB 33 FE
         :             6E F4 ED 05 50 B7 58 6C 21 1B E6 63 35 74 1D D9
         :                     [ Another 128 bytes skipped ]
         :           }
         :         }
1693  568:       SET {
1697  564:         SEQUENCE {
1701    1:           INTEGER 1
1704  161:           SEQUENCE {
1707  152:             SEQUENCE {
1710   11:               SET {
1712    9:                 SEQUENCE {
1714    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
1719    2:                   PrintableString 'DE'
         :                   }
         :                 }
1723   16:               SET {
1725   14:                 SEQUENCE {
1727    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
1732    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
1741   17:               SET {
1743   15:                 SEQUENCE {
1745    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
1750    8:                   PrintableString 'ZZZZZZY2'
         :                   }
         :                 }
1760   58:               SET {
1762   56:                 SEQUENCE {
1764    3:                   OBJECT IDENTIFIER organizationalUnitName
(2 5 4 11)
1769   49:                   UTF8String
         :                   'Copyright (C) Siemens AG 2013 All Rights
Reserve'
         :                   'd'
         :                   }
         :                 }
1820   40:               SET {
1822   38:                 SEQUENCE {
1824    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
1829   31:                   UTF8String 'Siemens Issuing CA EE Auth
2013'
         :                   }
         :                 }
         :               }
1862    4:             INTEGER 535783557
         :             }
1868   13:           SEQUENCE {
1870    9:             OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2
1)
1881    0:             NULL
         :             }
1883  105:           [0] {
1885   24:             SEQUENCE {
1887    9:               OBJECT IDENTIFIER contentType (1 2 840 113549
1 9 3)
1898   11:               SET {
1900    9:                 OBJECT IDENTIFIER data (1 2 840 113549 1 7
1)
         :                 }
         :               }
1911   28:             SEQUENCE {
1913    9:               OBJECT IDENTIFIER signingTime (1 2 840 113549
1 9 5)
1924   15:               SET {
1926   13:                 UTCTime 15/05/2017 09:52:50 GMT
         :                 }
         :               }
1941   47:             SEQUENCE {
1943    9:               OBJECT IDENTIFIER messageDigest (1 2 840
113549 1 9 4)
1954   34:               SET {
1956   32:                 OCTET STRING
         :                   42 03 F7 D1 F7 01 9F B4 AC CA 15 94 6E 20
32 55
         :                   6D 88 9A 1F 3B 03 B5 EA 14 A1 42 F9 E6 43
2B 60
         :                 }
         :               }
         :             }
1990   13:           SEQUENCE {
1992    9:             OBJECT IDENTIFIER rsaEncryption (1 2 840 113549
1 1 1)
2003    0:             NULL
         :             }
2005  256:           OCTET STRING
         :             20 18 72 6D AD AF 73 8D 97 FA 00 F3 91 F9 2C B3
         :             B0 47 9B 57 C3 6D 4D 9D 28 35 8D E9 EE BD 3E 28
         :             33 38 00 16 4C 3C 6A 35 85 86 88 F5 5B 76 50 53
         :             F1 50 37 97 C3 88 55 C9 4E A5 AE CB C6 0C C5 2B
         :             3F 7E F9 2C CF 69 85 9D D9 18 8A 56 15 66 8B 68
         :             B7 6C DB 58 0E 74 E2 B2 F5 29 1B C5 FD E4 B6 B2
         :             DB C6 33 8C 1B 64 49 63 CC E3 A3 AA 25 E1 9C C3
         :             E9 8F 88 B1 4E B7 A4 63 A4 CD F2 76 FC B9 B5 2F
         :                     [ Another 128 bytes skipped ]
         :           }
         :         }
         :       }
         :     }
         :   }
    

Am Dienstag, den 16.05.2017, 07:21 -0700 schrieb Krusty:

> Parse PKCS7 wich store in String 
>
> Hello Dear Community!
> Excusme, im not a professional programmer, but i should solve one
> tasks, and
> i spend more one week, and I have no strength and ideas:(
>
> So, i have String prepare_cert which store:
>
> -----BEGIN CERTIFICATE-----
> MIII1QYJKoZIhvcNAQcCoIIIxjCCCMICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9
> w0BBwGgggZhMIIGXTCCBUWgAwIBAgIEH+9ohTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1
> UEBhMCREUxEDAOBgNVBAoMB1NpZW1lbnMxETAPBgNVBAUTCFpaWlpaWlkyMTowOAYDVQQ
> LDDFDb3B5cmlnaHQgKEMpIFNpZW1lbnMgQUcgMjAxMyBBbGwgUmlnaHRzIFJlc2VydmVk
> MSgwJgYDVQQDDB9TaWVtZW5zIElzc3VpbmcgQ0EgRUUgQXV0aCAyMDEzMB4XDTE2MDcxO
> TE1MzYzOVoXDTE5MDcxOTE1MzYzOVowZTERMA8GA1UEBRMIWjAwM0EyQVkxDzANBgNVBC
> oMBkFuZHJleTESMBAGA1UEBAwJU2x5dW55YWV2MRAwDgYDVQQKDAdTaWVtZW5zM,RkwFw
> YDVQQDDBBTbHl1bnlhZXYgQW5kcmV5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgK
> CAQEAgwnt5QkByovf5lTFzivNp2rB2jVY+IP4Zz0rjswEwLI7ihFXiakiFXwCprCdPHpd
> TCBYuGAluBfp+dij+KLwytpPDncDLPYAERsJuircXPt453PS4LDNwGs1oxpkzmzSMIl9Z
> kSsS9MugWGQDCCaK0mKpLn5NT2xEFrOHyneYLHIV+pX5WOTrCNo3lDSUh6NZZLOhqkX5W
> K3omBNv8eLpv5G/v8yXxAuTTEkzlPgsVWwSJznVIYb1FrV2dm9BXEYBSguWOxdDKsPrX3
> 2bgTcESVCW1aHDSbZr43OKdOV7xgzVTp+XFBvBVRVB+BkzkE2wFGxwSgzs/WWynokqM7d
> qQIDAQABo4IC3zCCAtswMwYDVR0lBCwwKgYIKwYBBQUHAwIGCCsGAQUFBwMEBgorBgEEA
> YI3FAICBggrB,gEFBQgCAjCBygYDVR0fBIHCMIG/MIG8oIG5oIG2hiZodHRwOi8vY2guc
> 2llbWVucy5jb20vcGtpP1paWlpaWlkyLmNybIZBbGRhcDovL2NsLnNpZW1lbnMubmV0L0
> NOPVpaWlpaWlkyLEw9UEtJP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3SGSWxkYXA6Ly9
> jbC5zaWVtZW5zLmNvbS9DTj1aWlpaWlpZMixvPVRydXN0Y2VudGVyP2NlcnRpZmljYXRl
> UmV2b2NhdGlvbkxpc3QwGgYDVR0gBBMwETAPBg0rBgEEAaFpBwICAwEBMAwGA1UdEwEB/
> wQCMAAwHwYDVR0jBBgwFoAU3pQ/S2pfWE4UGMlG1xQ5wpwhPCkwggEEBggrBgEFBQcBAQ
> SB9zCB9DAyBggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlp
> ZMi5jcnQwQQYIKwYBBQUHMAKGNWx,kYXA6Ly9hbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlp
> ZMixMPVBLST9jQUNlcnRpZmljYXRlMEkGCCsGAQUFBzAChj1sZGFwOi8vYWwuc2llbWVu
> cy5jb20vQ049WlpaWlpaWTIsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGA
> QUFBzABhiRodHRwOi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wDgYDVR0PAQ
> H/BAQDAgeAMFUGA1UdEQROMEygLAYKKwYBBAGCNxQCA6AeDBxhbmRyZXkuc2x5dW55YWV
> 2QHNpZW1lbnMuY29tgRxhbmRyZXkuc2x5dW55YWV2QHNpZW1lbnMuY29tMB0GA1UdDgQW
> BBQExNDJjMps0iDu16+apbUb57BuXDANBgkqhkiG9w0BAQsFAAOCAQEAJXe0I5wOEngsP
> 8gGQVqqWhUepw85BVDPxd92+CH8WetJ+BwpHHEVMseIFjW,YK3C1VxonJjJdwRzJ8p/DD
> zNglE+fyiwlhGnCOESPTZISAQGEKMGtt2dy+DoA4liCvLhiB6u3UDZsG2NmZqRWSssz/m
> 707QVQt1hsIRvmYzV0HdkQDnIxP0UlfVkb42Yd9GNSSJ4vtEjv0E4fzUkMUjQvo1GoEaR
> meaMWa0BgqyeMCjetO3H+mO5yOjkHe2R39578RgrHTeBJgi22qEpBu6pueq8jrbHJRGb5
> 9xI05Ut4Kr5Hcnul9aPx8fWgD7uBGn9mNABqIdSqQE4hLCpX2wThYTGCAjgwggI0AgEBM
> IGhMIGYMQswCQYDVQQGEwJERTEQMA4GA1UECgwHU2llbWVuczERMA8GA1UEBRMIWlpaWl
> paWTIxOjA4BgNVBAsMMUNvcHlyaWdodCAoQykgU2llbWVucyBBRyAyMDEzIEFsbCBSaWd
> odHMgUmVzZXJ2ZWQxKDAmBgNVBAMMH1NpZW1lbnMgSXNzdWluZyBDQSBFRSBBd,XRoIDI
> wMTMCBB/vaIUwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB
> MBwGCSqGSIb3DQEJBTEPFw0xNzA1MTUwOTUyNTBaMC8GCSqGSIb3DQEJBDEiBCBCA/fR9
> wGftKzKFZRuIDJVbYiaHzsDteoUoUL55kMrYDANBgkqhkiG9w0BAQEFAASCAQAgGHJtra
> 9zjZf6APOR+SyzsEebV8NtTZ0oNY3p7r0+KDM4ABZMPGo1hYaI9Vt2UFPxUDeXw4hVyU6
> lrsvGDMUrP375LM9phZ3ZGIpWFWaLaLds21gOdOKy9Skbxf3ktrLbxjOMG2RJY8zjo6ol
> 4ZzD6Y+IsU63pGOkzfJ2/Lm1L1ZhUx2emWHAE96FTWbL8MXS2aTiYIHgmtwtVGw/hmgwq
> 6nfI0kCyj0r0oqbB7/VOTxWmAWhoCNFUoMzG3S2F17kuveDTz1zuQuNVYsSLSBgk2F6sU
> JK0cZVkpP,+VDaEAFKRuJdGv/gD+bURJ4DCEQshQ7EAJIjmN7gPwBkaPuGM
> -----END CERTIFICATE-----
>
> When i try get Certificate from it, i got:
>
> org.bouncycastle.openssl.PEMException: problem parsing cert:
> java.security.cert.CertificateException: java.io.IOException: DER
> length
> more than 4 bytes: 64
>
> My code:
>
> String prepare_cert = new
> String(raw_string_with_pkcs7).replaceAll("\\s",
> "");
> prepare_cert = prepare_cert.replace("0,-----BEGINPKCS7-----", "-----
> BEGIN
> CERTIFICATE-----\r\n");
> prepare_cert = prepare_cert.replace("-----ENDPKCS7-----", "\r\n-----
> END
> CERTIFICATE-----");
>
> Security.addProvider(new BouncyCastleProvider());
>  StringReader sr = new StringReader(prepare_cert);
>          PEMReader pr = new PEMReader(sr);
>              X509Certificate cert;
>
>                         try {
>                                 cert =
> (X509Certificate)pr.readObject();
>                                  pr.close();
>                                  
>                                    RSAPublicKey rsaPublicKey =
> (RSAPublicKey)cert.getPublicKey();
>                                    System.out.println(printCertInfo(c
> ert,
> rsaPublicKey));
>                         } catch (IOException e) {
>                                 // TODO Auto-generated catch block
>                                 e.printStackTrace();
>                         }
> static String printCertInfo(X509Certificate cert, RSAPublicKey
> rsaPublicKey)
> {
>         StringBuilder sb = new StringBuilder();
>
>         sb.append("Certificate:\r\n");
>         sb.append("Data:\r\n");
>         sb.append("\tVersion: " + cert.getVersion() + "\r\n");
>         sb.append("\tSerial Number: " + cert.getSerialNumber() +
> "\r\n");
>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
> "\r\n");
>         sb.append("\tIssuer: " + cert.getIssuerDN().getName() +
> "\r\n");
>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
> "\r\n");
>         sb.append("\tValidity\r\n");
>         sb.append("\t\tNot Before: " + cert.getNotBefore() + "\r\n");
>         sb.append("\t\tNot After: " + cert.getNotAfter() + "\r\n");
>         sb.append("\tSubject: " + cert.getSubjectDN() + "\r\n");
>         sb.append("\tSubject Public Key Info:\r\n");
>         sb.append("\t\tPublic Key Algorithm: " +
> rsaPublicKey.getAlgorithm()
> + "\r\n");
>         sb.append("\t\t\tPublic-Key: " +
> rsaPublicKey.getModulus().bitLength() + " bit \r\n");
>         sb.append("\t\t\tModulus:\r\n");
>         sb.append("\t\t\t\t" + rsaPublicKey.getModulus().toString(16)
> +
> "\r\n");
>         sb.append("\t\t\tExponent: " +
> rsaPublicKey.getPublicExponent() +
> "\r\n");
>
>         // TODO: Print other attributes, do some research to get them
> all...
>
>         return sb.toString();
>     }
>
>
> Dear Community, please help me, i don't know where i should go,
> thank you! 
>
>
>
> --
> View this message in context: http://bouncy-castle.1462172.n4.nabble.
> com/Parse-PKCS7-wich-store-in-String-tp4658747.html
> Sent from the Bouncy Castle - Dev mailing list archive at Nabble.com.
>

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Parse PKCS7 wich store in String

David Hook-3

Use PEMParser and pass the returned ContentInfo to a CMSSignedData
constructor. You can then extract the certificates from that object.

Don't change the PEM header.

Regards,

David
On 22/05/17 19:08, Michael Gauch wrote:

> Hallo at all.
>
> Pleas have a loock on the ASN.1 Decoder.
>
> The Online Deocode https://certlogik.com/decoder/
>
> Shows Another *** bytes skipped.
>
>
> PKCS#7 ASN.1 Information
>
>    
>    0 2261: SEQUENCE {
>    4    9:   OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
>   15 2246:   [0] {
>   19 2242:     SEQUENCE {
>   23    1:       INTEGER 1
>   26   15:       SET {
>   28   13:         SEQUENCE {
>   30    9:           OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2 1)
>   41    0:           NULL
>          :           }
>          :         }
>   43   11:       SEQUENCE {
>   45    9:         OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
>          :         }
>   56 1633:       [0] {
>   60 1629:         SEQUENCE {
>   64 1349:           SEQUENCE {
>   68    3:             [0] {
>   70    1:               INTEGER 2
>          :               }
>   73    4:             INTEGER 535783557
>   79   13:             SEQUENCE {
>   81    9:               OBJECT IDENTIFIER
>          :                 sha256WithRSAEncryption (1 2 840 113549 1 1
> 11)
>   92    0:               NULL
>          :               }
>   94  152:             SEQUENCE {
>   97   11:               SET {
>   99    9:                 SEQUENCE {
>  101    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
>  106    2:                   PrintableString 'DE'
>          :                   }
>          :                 }
>  110   16:               SET {
>  112   14:                 SEQUENCE {
>  114    3:                   OBJECT IDENTIFIER organizationName (2 5 4
> 10)
>  119    7:                   UTF8String 'Siemens'
>          :                   }
>          :                 }
>  128   17:               SET {
>  130   15:                 SEQUENCE {
>  132    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
>  137    8:                   PrintableString 'ZZZZZZY2'
>          :                   }
>          :                 }
>  147   58:               SET {
>  149   56:                 SEQUENCE {
>  151    3:                   OBJECT IDENTIFIER organizationalUnitName
> (2 5 4 11)
>  156   49:                   UTF8String
>          :                   'Copyright (C) Siemens AG 2013 All Rights
> Reserve'
>          :                   'd'
>          :                   }
>          :                 }
>  207   40:               SET {
>  209   38:                 SEQUENCE {
>  211    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
>  216   31:                   UTF8String 'Siemens Issuing CA EE Auth
> 2013'
>          :                   }
>          :                 }
>          :               }
>  249   30:             SEQUENCE {
>  251   13:               UTCTime 19/07/2016 15:36:39 GMT
>  266   13:               UTCTime 19/07/2019 15:36:39 GMT
>          :               }
>  281  101:             SEQUENCE {
>  283   17:               SET {
>  285   15:                 SEQUENCE {
>  287    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
>  292    8:                   PrintableString 'Z003A2AY'
>          :                   }
>          :                 }
>  302   15:               SET {
>  304   13:                 SEQUENCE {
>  306    3:                   OBJECT IDENTIFIER givenName (2 5 4 42)
>  311    6:                   UTF8String 'Andrey'
>          :                   }
>          :                 }
>  319   18:               SET {
>  321   16:                 SEQUENCE {
>  323    3:                   OBJECT IDENTIFIER surname (2 5 4 4)
>  328    9:                   UTF8String 'Slyunyaev'
>          :                   }
>          :                 }
>  339   16:               SET {
>  341   14:                 SEQUENCE {
>  343    3:                   OBJECT IDENTIFIER organizationName (2 5 4
> 10)
>  348    7:                   UTF8String 'Siemens'
>          :                   }
>          :                 }
>  357   25:               SET {
>  359   23:                 SEQUENCE {
>  361    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
>  366   16:                   UTF8String 'Slyunyaev Andrey'
>          :                   }
>          :                 }
>          :               }
>  384  290:             SEQUENCE {
>  388   13:               SEQUENCE {
>  390    9:                 OBJECT IDENTIFIER
>          :                   rsaEncryption (1 2 840 113549 1 1 1)
>  401    0:                 NULL
>          :                 }
>  403  271:               BIT STRING
>          :                 30 82 01 0A 02 82 01 01 00 83 09 ED E5 09 01
> CA
>          :                 8B DF E6 54 C5 CE 2B CD A7 6A C1 DA 35 58 F8
> 83
>          :                 F8 67 3D 2B 8E CC 04 C0 B2 3B 8A 11 57 89 A9
> 22
>          :                 15 7C 02 A6 B0 9D 3C 7A 5D 4C 20 58 B8 60 25
> B8
>          :                 17 E9 F9 D8 A3 F8 A2 F0 CA DA 4F 0E 77 03 2C
> F6
>          :                 00 11 1B 09 BA 2A DC 5C FB 78 E7 73 D2 E0 B0
> CD
>          :                 C0 6B 35 A3 1A 64 CE 6C D2 30 89 7D 66 44 AC
> 4B
>          :                 D3 2E 81 61 90 0C 20 9A 2B 49 8A A4 B9 F9 35
> 3D
>          :                         [ Another 142 bytes skipped ]
>          :               }
>  678  735:             [3] {
>  682  731:               SEQUENCE {
>  686   51:                 SEQUENCE {
>  688    3:                   OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
>  693   44:                   OCTET STRING
>          :                     30 2A 06 08 2B 06 01 05 05 07 03 02 06
> 08 2B 06
>          :                     01 05 05 07 03 04 06 0A 2B 06 01 04 01
> 82 37 14
>          :                     02 02 06 08 2B 06 01 05 05 08 02 02
>          :                   }
>  739  202:                 SEQUENCE {
>  742    3:                   OBJECT IDENTIFIER cRLDistributionPoints (2
> 5 29 31)
>  747  194:                   OCTET STRING
>          :                     30 81 BF 30 81 BC A0 81 B9 A0 81 B6 86
> 26 68 74
>          :                     74 70 3A 2F 2F 63 68 2E 73 69 65 6D 65
> 6E 73 2E
>          :                     63 6F 6D 2F 70 6B 69 3F 5A 5A 5A 5A 5A
> 5A 59 32
>          :                     2E 63 72 6C 86 41 6C 64 61 70 3A 2F 2F
> 63 6C 2E
>          :                     73 69 65 6D 65 6E 73 2E 6E 65 74 2F 43
> 4E 3D 5A
>          :                     5A 5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49
> 3F 63 65
>          :                     72 74 69 66 69 63 61 74 65 52 65 76 6F
> 63 61 74
>          :                     69 6F 6E 4C 69 73 74 86 49 6C 64 61 70
> 3A 2F 2F
>          :                             [ Another 66 bytes skipped ]
>          :                   }
>  944   26:                 SEQUENCE {
>  946    3:                   OBJECT IDENTIFIER certificatePolicies (2 5
> 29 32)
>  951   19:                   OCTET STRING
>          :                     30 11 30 0F 06 0D 2B 06 01 04 01 A1 69
> 07 02 02
>          :                     03 01 01
>          :                   }
>  972   12:                 SEQUENCE {
>  974    3:                   OBJECT IDENTIFIER basicConstraints (2 5 29
> 19)
>  979    1:                   BOOLEAN TRUE
>  982    2:                   OCTET STRING 30 00
>          :                   }
>  986   31:                 SEQUENCE {
>  988    3:                   OBJECT IDENTIFIER
>          :                     authorityKeyIdentifier (2 5 29 35)
>  993   24:                   OCTET STRING
>          :                     30 16 80 14 DE 94 3F 4B 6A 5F 58 4E 14
> 18 C9 46
>          :                     D7 14 39 C2 9C 21 3C 29
>          :                   }
> 1019  260:                 SEQUENCE {
> 1023    8:                   OBJECT IDENTIFIER
>          :                     authorityInfoAccess (1 3 6 1 5 5 7 1 1)
> 1033  247:                   OCTET STRING
>          :                     30 81 F4 30 32 06 08 2B 06 01 05 05 07
> 30 02 86
>          :                     26 68 74 74 70 3A 2F 2F 61 68 2E 73 69
> 65 6D 65
>          :                     6E 73 2E 63 6F 6D 2F 70 6B 69 3F 5A 5A
> 5A 5A 5A
>          :                     5A 59 32 2E 63 72 74 30 41 06 08 2B 06
> 01 05 05
>          :                     07 30 02 86 35 6C 64 61 70 3A 2F 2F 61
> 6C 2E 73
>          :                     69 65 6D 65 6E 73 2E 6E 65 74 2F 43 4E
> 3D 5A 5A
>          :                     5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49 3F
> 63 41 43
>          :                     65 72 74 69 66 69 63 61 74 65 30 49 06
> 08 2B 06
>          :                             [ Another 119 bytes skipped ]
>          :                   }
> 1283   14:                 SEQUENCE {
> 1285    3:                   OBJECT IDENTIFIER keyUsage (2 5 29 15)
> 1290    1:                   BOOLEAN TRUE
> 1293    4:                   OCTET STRING 03 02 07 80
>          :                   }
> 1299   85:                 SEQUENCE {
> 1301    3:                   OBJECT IDENTIFIER subjectAltName (2 5 29
> 17)
> 1306   78:                   OCTET STRING
>          :                     30 4C A0 2C 06 0A 2B 06 01 04 01 82 37
> 14 02 03
>          :                     A0 1E 0C 1C 61 6E 64 72 65 79 2E 73 6C
> 79 75 6E
>          :                     79 61 65 76 40 73 69 65 6D 65 6E 73 2E
> 63 6F 6D
>          :                     81 1C 61 6E 64 72 65 79 2E 73 6C 79 75
> 6E 79 61
>          :                     65 76 40 73 69 65 6D 65 6E 73 2E 63 6F
> 6D
>          :                   }
> 1386   29:                 SEQUENCE {
> 1388    3:                   OBJECT IDENTIFIER subjectKeyIdentifier (2
> 5 29 14)
> 1393   22:                   OCTET STRING
>          :                     04 14 04 C4 D0 C9 8C CA 6C D2 20 EE D7
> AF 9A A5
>          :                     B5 1B E7 B0 6E 5C
>          :                   }
>          :                 }
>          :               }
>          :             }
> 1417   13:           SEQUENCE {
> 1419    9:             OBJECT IDENTIFIER
>          :               sha256WithRSAEncryption (1 2 840 113549 1 1
> 11)
> 1430    0:             NULL
>          :             }
> 1432  257:           BIT STRING
>          :             25 77 B4 23 9C 0E 12 78 2C 3F C8 06 41 5A AA 5A
>          :             15 1E A7 0F 39 05 50 CF C5 DF 76 F8 21 FC 59 EB
>          :             49 F8 1C 29 1C 71 15 32 C7 88 16 35 98 2B 70 B5
>          :             57 1A 27 26 32 5D C1 1C C9 F2 9F C3 0F 33 60 94
>          :             4F 9F CA 2C 25 84 69 C2 38 44 8F 4D 92 12 01 01
>          :             84 28 C1 AD B7 67 72 F8 3A 00 E2 58 82 BC B8 62
>          :             07 AB B7 50 36 6C 1B 63 66 66 A4 56 4A CB 33 FE
>          :             6E F4 ED 05 50 B7 58 6C 21 1B E6 63 35 74 1D D9
>          :                     [ Another 128 bytes skipped ]
>          :           }
>          :         }
> 1693  568:       SET {
> 1697  564:         SEQUENCE {
> 1701    1:           INTEGER 1
> 1704  161:           SEQUENCE {
> 1707  152:             SEQUENCE {
> 1710   11:               SET {
> 1712    9:                 SEQUENCE {
> 1714    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
> 1719    2:                   PrintableString 'DE'
>          :                   }
>          :                 }
> 1723   16:               SET {
> 1725   14:                 SEQUENCE {
> 1727    3:                   OBJECT IDENTIFIER organizationName (2 5 4
> 10)
> 1732    7:                   UTF8String 'Siemens'
>          :                   }
>          :                 }
> 1741   17:               SET {
> 1743   15:                 SEQUENCE {
> 1745    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
> 1750    8:                   PrintableString 'ZZZZZZY2'
>          :                   }
>          :                 }
> 1760   58:               SET {
> 1762   56:                 SEQUENCE {
> 1764    3:                   OBJECT IDENTIFIER organizationalUnitName
> (2 5 4 11)
> 1769   49:                   UTF8String
>          :                   'Copyright (C) Siemens AG 2013 All Rights
> Reserve'
>          :                   'd'
>          :                   }
>          :                 }
> 1820   40:               SET {
> 1822   38:                 SEQUENCE {
> 1824    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
> 1829   31:                   UTF8String 'Siemens Issuing CA EE Auth
> 2013'
>          :                   }
>          :                 }
>          :               }
> 1862    4:             INTEGER 535783557
>          :             }
> 1868   13:           SEQUENCE {
> 1870    9:             OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2
> 1)
> 1881    0:             NULL
>          :             }
> 1883  105:           [0] {
> 1885   24:             SEQUENCE {
> 1887    9:               OBJECT IDENTIFIER contentType (1 2 840 113549
> 1 9 3)
> 1898   11:               SET {
> 1900    9:                 OBJECT IDENTIFIER data (1 2 840 113549 1 7
> 1)
>          :                 }
>          :               }
> 1911   28:             SEQUENCE {
> 1913    9:               OBJECT IDENTIFIER signingTime (1 2 840 113549
> 1 9 5)
> 1924   15:               SET {
> 1926   13:                 UTCTime 15/05/2017 09:52:50 GMT
>          :                 }
>          :               }
> 1941   47:             SEQUENCE {
> 1943    9:               OBJECT IDENTIFIER messageDigest (1 2 840
> 113549 1 9 4)
> 1954   34:               SET {
> 1956   32:                 OCTET STRING
>          :                   42 03 F7 D1 F7 01 9F B4 AC CA 15 94 6E 20
> 32 55
>          :                   6D 88 9A 1F 3B 03 B5 EA 14 A1 42 F9 E6 43
> 2B 60
>          :                 }
>          :               }
>          :             }
> 1990   13:           SEQUENCE {
> 1992    9:             OBJECT IDENTIFIER rsaEncryption (1 2 840 113549
> 1 1 1)
> 2003    0:             NULL
>          :             }
> 2005  256:           OCTET STRING
>          :             20 18 72 6D AD AF 73 8D 97 FA 00 F3 91 F9 2C B3
>          :             B0 47 9B 57 C3 6D 4D 9D 28 35 8D E9 EE BD 3E 28
>          :             33 38 00 16 4C 3C 6A 35 85 86 88 F5 5B 76 50 53
>          :             F1 50 37 97 C3 88 55 C9 4E A5 AE CB C6 0C C5 2B
>          :             3F 7E F9 2C CF 69 85 9D D9 18 8A 56 15 66 8B 68
>          :             B7 6C DB 58 0E 74 E2 B2 F5 29 1B C5 FD E4 B6 B2
>          :             DB C6 33 8C 1B 64 49 63 CC E3 A3 AA 25 E1 9C C3
>          :             E9 8F 88 B1 4E B7 A4 63 A4 CD F2 76 FC B9 B5 2F
>          :                     [ Another 128 bytes skipped ]
>          :           }
>          :         }
>          :       }
>          :     }
>          :   }
>    
>
> Am Dienstag, den 16.05.2017, 07:21 -0700 schrieb Krusty:
>> Parse PKCS7 wich store in String
>>
>> Hello Dear Community!
>> Excusme, im not a professional programmer, but i should solve one
>> tasks, and
>> i spend more one week, and I have no strength and ideas:(
>>
>> So, i have String prepare_cert which store:
>>
>> -----BEGIN CERTIFICATE-----
>> MIII1QYJKoZIhvcNAQcCoIIIxjCCCMICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9
>> w0BBwGgggZhMIIGXTCCBUWgAwIBAgIEH+9ohTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1
>> UEBhMCREUxEDAOBgNVBAoMB1NpZW1lbnMxETAPBgNVBAUTCFpaWlpaWlkyMTowOAYDVQQ
>> LDDFDb3B5cmlnaHQgKEMpIFNpZW1lbnMgQUcgMjAxMyBBbGwgUmlnaHRzIFJlc2VydmVk
>> MSgwJgYDVQQDDB9TaWVtZW5zIElzc3VpbmcgQ0EgRUUgQXV0aCAyMDEzMB4XDTE2MDcxO
>> TE1MzYzOVoXDTE5MDcxOTE1MzYzOVowZTERMA8GA1UEBRMIWjAwM0EyQVkxDzANBgNVBC
>> oMBkFuZHJleTESMBAGA1UEBAwJU2x5dW55YWV2MRAwDgYDVQQKDAdTaWVtZW5zM,RkwFw
>> YDVQQDDBBTbHl1bnlhZXYgQW5kcmV5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgK
>> CAQEAgwnt5QkByovf5lTFzivNp2rB2jVY+IP4Zz0rjswEwLI7ihFXiakiFXwCprCdPHpd
>> TCBYuGAluBfp+dij+KLwytpPDncDLPYAERsJuircXPt453PS4LDNwGs1oxpkzmzSMIl9Z
>> kSsS9MugWGQDCCaK0mKpLn5NT2xEFrOHyneYLHIV+pX5WOTrCNo3lDSUh6NZZLOhqkX5W
>> K3omBNv8eLpv5G/v8yXxAuTTEkzlPgsVWwSJznVIYb1FrV2dm9BXEYBSguWOxdDKsPrX3
>> 2bgTcESVCW1aHDSbZr43OKdOV7xgzVTp+XFBvBVRVB+BkzkE2wFGxwSgzs/WWynokqM7d
>> qQIDAQABo4IC3zCCAtswMwYDVR0lBCwwKgYIKwYBBQUHAwIGCCsGAQUFBwMEBgorBgEEA
>> YI3FAICBggrB,gEFBQgCAjCBygYDVR0fBIHCMIG/MIG8oIG5oIG2hiZodHRwOi8vY2guc
>> 2llbWVucy5jb20vcGtpP1paWlpaWlkyLmNybIZBbGRhcDovL2NsLnNpZW1lbnMubmV0L0
>> NOPVpaWlpaWlkyLEw9UEtJP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3SGSWxkYXA6Ly9
>> jbC5zaWVtZW5zLmNvbS9DTj1aWlpaWlpZMixvPVRydXN0Y2VudGVyP2NlcnRpZmljYXRl
>> UmV2b2NhdGlvbkxpc3QwGgYDVR0gBBMwETAPBg0rBgEEAaFpBwICAwEBMAwGA1UdEwEB/
>> wQCMAAwHwYDVR0jBBgwFoAU3pQ/S2pfWE4UGMlG1xQ5wpwhPCkwggEEBggrBgEFBQcBAQ
>> SB9zCB9DAyBggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlp
>> ZMi5jcnQwQQYIKwYBBQUHMAKGNWx,kYXA6Ly9hbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlp
>> ZMixMPVBLST9jQUNlcnRpZmljYXRlMEkGCCsGAQUFBzAChj1sZGFwOi8vYWwuc2llbWVu
>> cy5jb20vQ049WlpaWlpaWTIsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGA
>> QUFBzABhiRodHRwOi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wDgYDVR0PAQ
>> H/BAQDAgeAMFUGA1UdEQROMEygLAYKKwYBBAGCNxQCA6AeDBxhbmRyZXkuc2x5dW55YWV
>> 2QHNpZW1lbnMuY29tgRxhbmRyZXkuc2x5dW55YWV2QHNpZW1lbnMuY29tMB0GA1UdDgQW
>> BBQExNDJjMps0iDu16+apbUb57BuXDANBgkqhkiG9w0BAQsFAAOCAQEAJXe0I5wOEngsP
>> 8gGQVqqWhUepw85BVDPxd92+CH8WetJ+BwpHHEVMseIFjW,YK3C1VxonJjJdwRzJ8p/DD
>> zNglE+fyiwlhGnCOESPTZISAQGEKMGtt2dy+DoA4liCvLhiB6u3UDZsG2NmZqRWSssz/m
>> 707QVQt1hsIRvmYzV0HdkQDnIxP0UlfVkb42Yd9GNSSJ4vtEjv0E4fzUkMUjQvo1GoEaR
>> meaMWa0BgqyeMCjetO3H+mO5yOjkHe2R39578RgrHTeBJgi22qEpBu6pueq8jrbHJRGb5
>> 9xI05Ut4Kr5Hcnul9aPx8fWgD7uBGn9mNABqIdSqQE4hLCpX2wThYTGCAjgwggI0AgEBM
>> IGhMIGYMQswCQYDVQQGEwJERTEQMA4GA1UECgwHU2llbWVuczERMA8GA1UEBRMIWlpaWl
>> paWTIxOjA4BgNVBAsMMUNvcHlyaWdodCAoQykgU2llbWVucyBBRyAyMDEzIEFsbCBSaWd
>> odHMgUmVzZXJ2ZWQxKDAmBgNVBAMMH1NpZW1lbnMgSXNzdWluZyBDQSBFRSBBd,XRoIDI
>> wMTMCBB/vaIUwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB
>> MBwGCSqGSIb3DQEJBTEPFw0xNzA1MTUwOTUyNTBaMC8GCSqGSIb3DQEJBDEiBCBCA/fR9
>> wGftKzKFZRuIDJVbYiaHzsDteoUoUL55kMrYDANBgkqhkiG9w0BAQEFAASCAQAgGHJtra
>> 9zjZf6APOR+SyzsEebV8NtTZ0oNY3p7r0+KDM4ABZMPGo1hYaI9Vt2UFPxUDeXw4hVyU6
>> lrsvGDMUrP375LM9phZ3ZGIpWFWaLaLds21gOdOKy9Skbxf3ktrLbxjOMG2RJY8zjo6ol
>> 4ZzD6Y+IsU63pGOkzfJ2/Lm1L1ZhUx2emWHAE96FTWbL8MXS2aTiYIHgmtwtVGw/hmgwq
>> 6nfI0kCyj0r0oqbB7/VOTxWmAWhoCNFUoMzG3S2F17kuveDTz1zuQuNVYsSLSBgk2F6sU
>> JK0cZVkpP,+VDaEAFKRuJdGv/gD+bURJ4DCEQshQ7EAJIjmN7gPwBkaPuGM
>> -----END CERTIFICATE-----
>>
>> When i try get Certificate from it, i got:
>>
>> org.bouncycastle.openssl.PEMException: problem parsing cert:
>> java.security.cert.CertificateException: java.io.IOException: DER
>> length
>> more than 4 bytes: 64
>>
>> My code:
>>
>> String prepare_cert = new
>> String(raw_string_with_pkcs7).replaceAll("\\s",
>> "");
>> prepare_cert = prepare_cert.replace("0,-----BEGINPKCS7-----", "-----
>> BEGIN
>> CERTIFICATE-----\r\n");
>> prepare_cert = prepare_cert.replace("-----ENDPKCS7-----", "\r\n-----
>> END
>> CERTIFICATE-----");
>>
>> Security.addProvider(new BouncyCastleProvider());
>>  StringReader sr = new StringReader(prepare_cert);
>>          PEMReader pr = new PEMReader(sr);
>>              X509Certificate cert;
>>
>>                         try {
>>                                 cert =
>> (X509Certificate)pr.readObject();
>>                                  pr.close();
>>                                  
>>                                    RSAPublicKey rsaPublicKey =
>> (RSAPublicKey)cert.getPublicKey();
>>                                    System.out.println(printCertInfo(c
>> ert,
>> rsaPublicKey));
>>                         } catch (IOException e) {
>>                                 // TODO Auto-generated catch block
>>                                 e.printStackTrace();
>>                         }
>> static String printCertInfo(X509Certificate cert, RSAPublicKey
>> rsaPublicKey)
>> {
>>         StringBuilder sb = new StringBuilder();
>>
>>         sb.append("Certificate:\r\n");
>>         sb.append("Data:\r\n");
>>         sb.append("\tVersion: " + cert.getVersion() + "\r\n");
>>         sb.append("\tSerial Number: " + cert.getSerialNumber() +
>> "\r\n");
>>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
>> "\r\n");
>>         sb.append("\tIssuer: " + cert.getIssuerDN().getName() +
>> "\r\n");
>>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
>> "\r\n");
>>         sb.append("\tValidity\r\n");
>>         sb.append("\t\tNot Before: " + cert.getNotBefore() + "\r\n");
>>         sb.append("\t\tNot After: " + cert.getNotAfter() + "\r\n");
>>         sb.append("\tSubject: " + cert.getSubjectDN() + "\r\n");
>>         sb.append("\tSubject Public Key Info:\r\n");
>>         sb.append("\t\tPublic Key Algorithm: " +
>> rsaPublicKey.getAlgorithm()
>> + "\r\n");
>>         sb.append("\t\t\tPublic-Key: " +
>> rsaPublicKey.getModulus().bitLength() + " bit \r\n");
>>         sb.append("\t\t\tModulus:\r\n");
>>         sb.append("\t\t\t\t" + rsaPublicKey.getModulus().toString(16)
>> +
>> "\r\n");
>>         sb.append("\t\t\tExponent: " +
>> rsaPublicKey.getPublicExponent() +
>> "\r\n");
>>
>>         // TODO: Print other attributes, do some research to get them
>> all...
>>
>>         return sb.toString();
>>     }
>>
>>
>> Dear Community, please help me, i don't know where i should go,
>> thank you!
>>
>>
>>
>> --
>> View this message in context: http://bouncy-castle.1462172.n4.nabble.
>> com/Parse-PKCS7-wich-store-in-String-tp4658747.html
>> Sent from the Bouncy Castle - Dev mailing list archive at Nabble.com.



Reply | Threaded
Open this post in threaded view
|

RE: Parse PKCS7 wich store in String

Eckenfels. Bernd
In reply to this post by Michael Gauch
Hello,

What you have there is a PkCS7 message with empty data. The online parser skips some lines of hex data but otherwise seems to show the object is structurally sound.

When using the PEMReader you cannot cast the result blindly to a X509Certificate, because in case of PkCS7 it would return an asn1.cms.ContentInfo.
You check from that that it is actually signed data and the convert it to ad = new CMSSignedData(ci); and can use ad.getCertificates();

Gruss
Bernd
--
http://www.seeburger.com
________________________________________
From: Michael Gauch [[hidden email]]
Sent: Monday, May 22, 2017 11:08
To: [hidden email]; [hidden email]
Subject: Re: [dev-crypto] Parse PKCS7 wich store in String

Hallo at all.

Pleas have a loock on the ASN.1 Decoder.

The Online Deocode https://certlogik.com/decoder/

Shows Another *** bytes skipped.


PKCS#7 ASN.1 Information


   0 2261: SEQUENCE {
   4    9:   OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
  15 2246:   [0] {
  19 2242:     SEQUENCE {
  23    1:       INTEGER 1
  26   15:       SET {
  28   13:         SEQUENCE {
  30    9:           OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2 1)
  41    0:           NULL
         :           }
         :         }
  43   11:       SEQUENCE {
  45    9:         OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
         :         }
  56 1633:       [0] {
  60 1629:         SEQUENCE {
  64 1349:           SEQUENCE {
  68    3:             [0] {
  70    1:               INTEGER 2
         :               }
  73    4:             INTEGER 535783557
  79   13:             SEQUENCE {
  81    9:               OBJECT IDENTIFIER
         :                 sha256WithRSAEncryption (1 2 840 113549 1 1
11)
  92    0:               NULL
         :               }
  94  152:             SEQUENCE {
  97   11:               SET {
  99    9:                 SEQUENCE {
 101    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
 106    2:                   PrintableString 'DE'
         :                   }
         :                 }
 110   16:               SET {
 112   14:                 SEQUENCE {
 114    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
 119    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
 128   17:               SET {
 130   15:                 SEQUENCE {
 132    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
 137    8:                   PrintableString 'ZZZZZZY2'
         :                   }
         :                 }
 147   58:               SET {
 149   56:                 SEQUENCE {
 151    3:                   OBJECT IDENTIFIER organizationalUnitName
(2 5 4 11)
 156   49:                   UTF8String
         :                   'Copyright (C) Siemens AG 2013 All Rights
Reserve'
         :                   'd'
         :                   }
         :                 }
 207   40:               SET {
 209   38:                 SEQUENCE {
 211    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
 216   31:                   UTF8String 'Siemens Issuing CA EE Auth
2013'
         :                   }
         :                 }
         :               }
 249   30:             SEQUENCE {
 251   13:               UTCTime 19/07/2016 15:36:39 GMT
 266   13:               UTCTime 19/07/2019 15:36:39 GMT
         :               }
 281  101:             SEQUENCE {
 283   17:               SET {
 285   15:                 SEQUENCE {
 287    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
 292    8:                   PrintableString 'Z003A2AY'
         :                   }
         :                 }
 302   15:               SET {
 304   13:                 SEQUENCE {
 306    3:                   OBJECT IDENTIFIER givenName (2 5 4 42)
 311    6:                   UTF8String 'Andrey'
         :                   }
         :                 }
 319   18:               SET {
 321   16:                 SEQUENCE {
 323    3:                   OBJECT IDENTIFIER surname (2 5 4 4)
 328    9:                   UTF8String 'Slyunyaev'
         :                   }
         :                 }
 339   16:               SET {
 341   14:                 SEQUENCE {
 343    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
 348    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
 357   25:               SET {
 359   23:                 SEQUENCE {
 361    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
 366   16:                   UTF8String 'Slyunyaev Andrey'
         :                   }
         :                 }
         :               }
 384  290:             SEQUENCE {
 388   13:               SEQUENCE {
 390    9:                 OBJECT IDENTIFIER
         :                   rsaEncryption (1 2 840 113549 1 1 1)
 401    0:                 NULL
         :                 }
 403  271:               BIT STRING
         :                 30 82 01 0A 02 82 01 01 00 83 09 ED E5 09 01
CA
         :                 8B DF E6 54 C5 CE 2B CD A7 6A C1 DA 35 58 F8
83
         :                 F8 67 3D 2B 8E CC 04 C0 B2 3B 8A 11 57 89 A9
22
         :                 15 7C 02 A6 B0 9D 3C 7A 5D 4C 20 58 B8 60 25
B8
         :                 17 E9 F9 D8 A3 F8 A2 F0 CA DA 4F 0E 77 03 2C
F6
         :                 00 11 1B 09 BA 2A DC 5C FB 78 E7 73 D2 E0 B0
CD
         :                 C0 6B 35 A3 1A 64 CE 6C D2 30 89 7D 66 44 AC
4B
         :                 D3 2E 81 61 90 0C 20 9A 2B 49 8A A4 B9 F9 35
3D
         :                         [ Another 142 bytes skipped ]
         :               }
 678  735:             [3] {
 682  731:               SEQUENCE {
 686   51:                 SEQUENCE {
 688    3:                   OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
 693   44:                   OCTET STRING
         :                     30 2A 06 08 2B 06 01 05 05 07 03 02 06
08 2B 06
         :                     01 05 05 07 03 04 06 0A 2B 06 01 04 01
82 37 14
         :                     02 02 06 08 2B 06 01 05 05 08 02 02
         :                   }
 739  202:                 SEQUENCE {
 742    3:                   OBJECT IDENTIFIER cRLDistributionPoints (2
5 29 31)
 747  194:                   OCTET STRING
         :                     30 81 BF 30 81 BC A0 81 B9 A0 81 B6 86
26 68 74
         :                     74 70 3A 2F 2F 63 68 2E 73 69 65 6D 65
6E 73 2E
         :                     63 6F 6D 2F 70 6B 69 3F 5A 5A 5A 5A 5A
5A 59 32
         :                     2E 63 72 6C 86 41 6C 64 61 70 3A 2F 2F
63 6C 2E
         :                     73 69 65 6D 65 6E 73 2E 6E 65 74 2F 43
4E 3D 5A
         :                     5A 5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49
3F 63 65
         :                     72 74 69 66 69 63 61 74 65 52 65 76 6F
63 61 74
         :                     69 6F 6E 4C 69 73 74 86 49 6C 64 61 70
3A 2F 2F
         :                             [ Another 66 bytes skipped ]
         :                   }
 944   26:                 SEQUENCE {
 946    3:                   OBJECT IDENTIFIER certificatePolicies (2 5
29 32)
 951   19:                   OCTET STRING
         :                     30 11 30 0F 06 0D 2B 06 01 04 01 A1 69
07 02 02
         :                     03 01 01
         :                   }
 972   12:                 SEQUENCE {
 974    3:                   OBJECT IDENTIFIER basicConstraints (2 5 29
19)
 979    1:                   BOOLEAN TRUE
 982    2:                   OCTET STRING 30 00
         :                   }
 986   31:                 SEQUENCE {
 988    3:                   OBJECT IDENTIFIER
         :                     authorityKeyIdentifier (2 5 29 35)
 993   24:                   OCTET STRING
         :                     30 16 80 14 DE 94 3F 4B 6A 5F 58 4E 14
18 C9 46
         :                     D7 14 39 C2 9C 21 3C 29
         :                   }
1019  260:                 SEQUENCE {
1023    8:                   OBJECT IDENTIFIER
         :                     authorityInfoAccess (1 3 6 1 5 5 7 1 1)
1033  247:                   OCTET STRING
         :                     30 81 F4 30 32 06 08 2B 06 01 05 05 07
30 02 86
         :                     26 68 74 74 70 3A 2F 2F 61 68 2E 73 69
65 6D 65
         :                     6E 73 2E 63 6F 6D 2F 70 6B 69 3F 5A 5A
5A 5A 5A
         :                     5A 59 32 2E 63 72 74 30 41 06 08 2B 06
01 05 05
         :                     07 30 02 86 35 6C 64 61 70 3A 2F 2F 61
6C 2E 73
         :                     69 65 6D 65 6E 73 2E 6E 65 74 2F 43 4E
3D 5A 5A
         :                     5A 5A 5A 5A 59 32 2C 4C 3D 50 4B 49 3F
63 41 43
         :                     65 72 74 69 66 69 63 61 74 65 30 49 06
08 2B 06
         :                             [ Another 119 bytes skipped ]
         :                   }
1283   14:                 SEQUENCE {
1285    3:                   OBJECT IDENTIFIER keyUsage (2 5 29 15)
1290    1:                   BOOLEAN TRUE
1293    4:                   OCTET STRING 03 02 07 80
         :                   }
1299   85:                 SEQUENCE {
1301    3:                   OBJECT IDENTIFIER subjectAltName (2 5 29
17)
1306   78:                   OCTET STRING
         :                     30 4C A0 2C 06 0A 2B 06 01 04 01 82 37
14 02 03
         :                     A0 1E 0C 1C 61 6E 64 72 65 79 2E 73 6C
79 75 6E
         :                     79 61 65 76 40 73 69 65 6D 65 6E 73 2E
63 6F 6D
         :                     81 1C 61 6E 64 72 65 79 2E 73 6C 79 75
6E 79 61
         :                     65 76 40 73 69 65 6D 65 6E 73 2E 63 6F
6D
         :                   }
1386   29:                 SEQUENCE {
1388    3:                   OBJECT IDENTIFIER subjectKeyIdentifier (2
5 29 14)
1393   22:                   OCTET STRING
         :                     04 14 04 C4 D0 C9 8C CA 6C D2 20 EE D7
AF 9A A5
         :                     B5 1B E7 B0 6E 5C
         :                   }
         :                 }
         :               }
         :             }
1417   13:           SEQUENCE {
1419    9:             OBJECT IDENTIFIER
         :               sha256WithRSAEncryption (1 2 840 113549 1 1
11)
1430    0:             NULL
         :             }
1432  257:           BIT STRING
         :             25 77 B4 23 9C 0E 12 78 2C 3F C8 06 41 5A AA 5A
         :             15 1E A7 0F 39 05 50 CF C5 DF 76 F8 21 FC 59 EB
         :             49 F8 1C 29 1C 71 15 32 C7 88 16 35 98 2B 70 B5
         :             57 1A 27 26 32 5D C1 1C C9 F2 9F C3 0F 33 60 94
         :             4F 9F CA 2C 25 84 69 C2 38 44 8F 4D 92 12 01 01
         :             84 28 C1 AD B7 67 72 F8 3A 00 E2 58 82 BC B8 62
         :             07 AB B7 50 36 6C 1B 63 66 66 A4 56 4A CB 33 FE
         :             6E F4 ED 05 50 B7 58 6C 21 1B E6 63 35 74 1D D9
         :                     [ Another 128 bytes skipped ]
         :           }
         :         }
1693  568:       SET {
1697  564:         SEQUENCE {
1701    1:           INTEGER 1
1704  161:           SEQUENCE {
1707  152:             SEQUENCE {
1710   11:               SET {
1712    9:                 SEQUENCE {
1714    3:                   OBJECT IDENTIFIER countryName (2 5 4 6)
1719    2:                   PrintableString 'DE'
         :                   }
         :                 }
1723   16:               SET {
1725   14:                 SEQUENCE {
1727    3:                   OBJECT IDENTIFIER organizationName (2 5 4
10)
1732    7:                   UTF8String 'Siemens'
         :                   }
         :                 }
1741   17:               SET {
1743   15:                 SEQUENCE {
1745    3:                   OBJECT IDENTIFIER serialNumber (2 5 4 5)
1750    8:                   PrintableString 'ZZZZZZY2'
         :                   }
         :                 }
1760   58:               SET {
1762   56:                 SEQUENCE {
1764    3:                   OBJECT IDENTIFIER organizationalUnitName
(2 5 4 11)
1769   49:                   UTF8String
         :                   'Copyright (C) Siemens AG 2013 All Rights
Reserve'
         :                   'd'
         :                   }
         :                 }
1820   40:               SET {
1822   38:                 SEQUENCE {
1824    3:                   OBJECT IDENTIFIER commonName (2 5 4 3)
1829   31:                   UTF8String 'Siemens Issuing CA EE Auth
2013'
         :                   }
         :                 }
         :               }
1862    4:             INTEGER 535783557
         :             }
1868   13:           SEQUENCE {
1870    9:             OBJECT IDENTIFIER sha-256 (2 16 840 1 101 3 4 2
1)
1881    0:             NULL
         :             }
1883  105:           [0] {
1885   24:             SEQUENCE {
1887    9:               OBJECT IDENTIFIER contentType (1 2 840 113549
1 9 3)
1898   11:               SET {
1900    9:                 OBJECT IDENTIFIER data (1 2 840 113549 1 7
1)
         :                 }
         :               }
1911   28:             SEQUENCE {
1913    9:               OBJECT IDENTIFIER signingTime (1 2 840 113549
1 9 5)
1924   15:               SET {
1926   13:                 UTCTime 15/05/2017 09:52:50 GMT
         :                 }
         :               }
1941   47:             SEQUENCE {
1943    9:               OBJECT IDENTIFIER messageDigest (1 2 840
113549 1 9 4)
1954   34:               SET {
1956   32:                 OCTET STRING
         :                   42 03 F7 D1 F7 01 9F B4 AC CA 15 94 6E 20
32 55
         :                   6D 88 9A 1F 3B 03 B5 EA 14 A1 42 F9 E6 43
2B 60
         :                 }
         :               }
         :             }
1990   13:           SEQUENCE {
1992    9:             OBJECT IDENTIFIER rsaEncryption (1 2 840 113549
1 1 1)
2003    0:             NULL
         :             }
2005  256:           OCTET STRING
         :             20 18 72 6D AD AF 73 8D 97 FA 00 F3 91 F9 2C B3
         :             B0 47 9B 57 C3 6D 4D 9D 28 35 8D E9 EE BD 3E 28
         :             33 38 00 16 4C 3C 6A 35 85 86 88 F5 5B 76 50 53
         :             F1 50 37 97 C3 88 55 C9 4E A5 AE CB C6 0C C5 2B
         :             3F 7E F9 2C CF 69 85 9D D9 18 8A 56 15 66 8B 68
         :             B7 6C DB 58 0E 74 E2 B2 F5 29 1B C5 FD E4 B6 B2
         :             DB C6 33 8C 1B 64 49 63 CC E3 A3 AA 25 E1 9C C3
         :             E9 8F 88 B1 4E B7 A4 63 A4 CD F2 76 FC B9 B5 2F
         :                     [ Another 128 bytes skipped ]
         :           }
         :         }
         :       }
         :     }
         :   }


Am Dienstag, den 16.05.2017, 07:21 -0700 schrieb Krusty:

> Parse PKCS7 wich store in String
>
> Hello Dear Community!
> Excusme, im not a professional programmer, but i should solve one
> tasks, and
> i spend more one week, and I have no strength and ideas:(
>
> So, i have String prepare_cert which store:
>
> -----BEGIN CERTIFICATE-----
> MIII1QYJKoZIhvcNAQcCoIIIxjCCCMICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9
> w0BBwGgggZhMIIGXTCCBUWgAwIBAgIEH+9ohTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1
> UEBhMCREUxEDAOBgNVBAoMB1NpZW1lbnMxETAPBgNVBAUTCFpaWlpaWlkyMTowOAYDVQQ
> LDDFDb3B5cmlnaHQgKEMpIFNpZW1lbnMgQUcgMjAxMyBBbGwgUmlnaHRzIFJlc2VydmVk
> MSgwJgYDVQQDDB9TaWVtZW5zIElzc3VpbmcgQ0EgRUUgQXV0aCAyMDEzMB4XDTE2MDcxO
> TE1MzYzOVoXDTE5MDcxOTE1MzYzOVowZTERMA8GA1UEBRMIWjAwM0EyQVkxDzANBgNVBC
> oMBkFuZHJleTESMBAGA1UEBAwJU2x5dW55YWV2MRAwDgYDVQQKDAdTaWVtZW5zM,RkwFw
> YDVQQDDBBTbHl1bnlhZXYgQW5kcmV5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgK
> CAQEAgwnt5QkByovf5lTFzivNp2rB2jVY+IP4Zz0rjswEwLI7ihFXiakiFXwCprCdPHpd
> TCBYuGAluBfp+dij+KLwytpPDncDLPYAERsJuircXPt453PS4LDNwGs1oxpkzmzSMIl9Z
> kSsS9MugWGQDCCaK0mKpLn5NT2xEFrOHyneYLHIV+pX5WOTrCNo3lDSUh6NZZLOhqkX5W
> K3omBNv8eLpv5G/v8yXxAuTTEkzlPgsVWwSJznVIYb1FrV2dm9BXEYBSguWOxdDKsPrX3
> 2bgTcESVCW1aHDSbZr43OKdOV7xgzVTp+XFBvBVRVB+BkzkE2wFGxwSgzs/WWynokqM7d
> qQIDAQABo4IC3zCCAtswMwYDVR0lBCwwKgYIKwYBBQUHAwIGCCsGAQUFBwMEBgorBgEEA
> YI3FAICBggrB,gEFBQgCAjCBygYDVR0fBIHCMIG/MIG8oIG5oIG2hiZodHRwOi8vY2guc
> 2llbWVucy5jb20vcGtpP1paWlpaWlkyLmNybIZBbGRhcDovL2NsLnNpZW1lbnMubmV0L0
> NOPVpaWlpaWlkyLEw9UEtJP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3SGSWxkYXA6Ly9
> jbC5zaWVtZW5zLmNvbS9DTj1aWlpaWlpZMixvPVRydXN0Y2VudGVyP2NlcnRpZmljYXRl
> UmV2b2NhdGlvbkxpc3QwGgYDVR0gBBMwETAPBg0rBgEEAaFpBwICAwEBMAwGA1UdEwEB/
> wQCMAAwHwYDVR0jBBgwFoAU3pQ/S2pfWE4UGMlG1xQ5wpwhPCkwggEEBggrBgEFBQcBAQ
> SB9zCB9DAyBggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlp
> ZMi5jcnQwQQYIKwYBBQUHMAKGNWx,kYXA6Ly9hbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlp
> ZMixMPVBLST9jQUNlcnRpZmljYXRlMEkGCCsGAQUFBzAChj1sZGFwOi8vYWwuc2llbWVu
> cy5jb20vQ049WlpaWlpaWTIsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGA
> QUFBzABhiRodHRwOi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wDgYDVR0PAQ
> H/BAQDAgeAMFUGA1UdEQROMEygLAYKKwYBBAGCNxQCA6AeDBxhbmRyZXkuc2x5dW55YWV
> 2QHNpZW1lbnMuY29tgRxhbmRyZXkuc2x5dW55YWV2QHNpZW1lbnMuY29tMB0GA1UdDgQW
> BBQExNDJjMps0iDu16+apbUb57BuXDANBgkqhkiG9w0BAQsFAAOCAQEAJXe0I5wOEngsP
> 8gGQVqqWhUepw85BVDPxd92+CH8WetJ+BwpHHEVMseIFjW,YK3C1VxonJjJdwRzJ8p/DD
> zNglE+fyiwlhGnCOESPTZISAQGEKMGtt2dy+DoA4liCvLhiB6u3UDZsG2NmZqRWSssz/m
> 707QVQt1hsIRvmYzV0HdkQDnIxP0UlfVkb42Yd9GNSSJ4vtEjv0E4fzUkMUjQvo1GoEaR
> meaMWa0BgqyeMCjetO3H+mO5yOjkHe2R39578RgrHTeBJgi22qEpBu6pueq8jrbHJRGb5
> 9xI05Ut4Kr5Hcnul9aPx8fWgD7uBGn9mNABqIdSqQE4hLCpX2wThYTGCAjgwggI0AgEBM
> IGhMIGYMQswCQYDVQQGEwJERTEQMA4GA1UECgwHU2llbWVuczERMA8GA1UEBRMIWlpaWl
> paWTIxOjA4BgNVBAsMMUNvcHlyaWdodCAoQykgU2llbWVucyBBRyAyMDEzIEFsbCBSaWd
> odHMgUmVzZXJ2ZWQxKDAmBgNVBAMMH1NpZW1lbnMgSXNzdWluZyBDQSBFRSBBd,XRoIDI
> wMTMCBB/vaIUwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB
> MBwGCSqGSIb3DQEJBTEPFw0xNzA1MTUwOTUyNTBaMC8GCSqGSIb3DQEJBDEiBCBCA/fR9
> wGftKzKFZRuIDJVbYiaHzsDteoUoUL55kMrYDANBgkqhkiG9w0BAQEFAASCAQAgGHJtra
> 9zjZf6APOR+SyzsEebV8NtTZ0oNY3p7r0+KDM4ABZMPGo1hYaI9Vt2UFPxUDeXw4hVyU6
> lrsvGDMUrP375LM9phZ3ZGIpWFWaLaLds21gOdOKy9Skbxf3ktrLbxjOMG2RJY8zjo6ol
> 4ZzD6Y+IsU63pGOkzfJ2/Lm1L1ZhUx2emWHAE96FTWbL8MXS2aTiYIHgmtwtVGw/hmgwq
> 6nfI0kCyj0r0oqbB7/VOTxWmAWhoCNFUoMzG3S2F17kuveDTz1zuQuNVYsSLSBgk2F6sU
> JK0cZVkpP,+VDaEAFKRuJdGv/gD+bURJ4DCEQshQ7EAJIjmN7gPwBkaPuGM
> -----END CERTIFICATE-----
>
> When i try get Certificate from it, i got:
>
> org.bouncycastle.openssl.PEMException: problem parsing cert:
> java.security.cert.CertificateException: java.io.IOException: DER
> length
> more than 4 bytes: 64
>
> My code:
>
> String prepare_cert = new
> String(raw_string_with_pkcs7).replaceAll("\\s",
> "");
> prepare_cert = prepare_cert.replace("0,-----BEGINPKCS7-----", "-----
> BEGIN
> CERTIFICATE-----\r\n");
> prepare_cert = prepare_cert.replace("-----ENDPKCS7-----", "\r\n-----
> END
> CERTIFICATE-----");
>
> Security.addProvider(new BouncyCastleProvider());
>  StringReader sr = new StringReader(prepare_cert);
>          PEMReader pr = new PEMReader(sr);
>              X509Certificate cert;
>
>                         try {
>                                 cert =
> (X509Certificate)pr.readObject();
>                                  pr.close();
>
>                                    RSAPublicKey rsaPublicKey =
> (RSAPublicKey)cert.getPublicKey();
>                                    System.out.println(printCertInfo(c
> ert,
> rsaPublicKey));
>                         } catch (IOException e) {
>                                 // TODO Auto-generated catch block
>                                 e.printStackTrace();
>                         }
> static String printCertInfo(X509Certificate cert, RSAPublicKey
> rsaPublicKey)
> {
>         StringBuilder sb = new StringBuilder();
>
>         sb.append("Certificate:\r\n");
>         sb.append("Data:\r\n");
>         sb.append("\tVersion: " + cert.getVersion() + "\r\n");
>         sb.append("\tSerial Number: " + cert.getSerialNumber() +
> "\r\n");
>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
> "\r\n");
>         sb.append("\tIssuer: " + cert.getIssuerDN().getName() +
> "\r\n");
>         sb.append("\tSignature Algorithm: " + cert.getSigAlgName() +
> "\r\n");
>         sb.append("\tValidity\r\n");
>         sb.append("\t\tNot Before: " + cert.getNotBefore() + "\r\n");
>         sb.append("\t\tNot After: " + cert.getNotAfter() + "\r\n");
>         sb.append("\tSubject: " + cert.getSubjectDN() + "\r\n");
>         sb.append("\tSubject Public Key Info:\r\n");
>         sb.append("\t\tPublic Key Algorithm: " +
> rsaPublicKey.getAlgorithm()
> + "\r\n");
>         sb.append("\t\t\tPublic-Key: " +
> rsaPublicKey.getModulus().bitLength() + " bit \r\n");
>         sb.append("\t\t\tModulus:\r\n");
>         sb.append("\t\t\t\t" + rsaPublicKey.getModulus().toString(16)
> +
> "\r\n");
>         sb.append("\t\t\tExponent: " +
> rsaPublicKey.getPublicExponent() +
> "\r\n");
>
>         // TODO: Print other attributes, do some research to get them
> all...
>
>         return sb.toString();
>     }
>
>
> Dear Community, please help me, i don't know where i should go,
> thank you!
>
>
>
> --
> View this message in context: http://bouncy-castle.1462172.n4.nabble.
> com/Parse-PKCS7-wich-store-in-String-tp4658747.html
> Sent from the Bouncy Castle - Dev mailing list archive at Nabble.com.
>








SEEBURGER AG            Vorstand/SEEBURGER Executive Board:
Sitz der Gesellschaft/Registered Office:                Axel Haas, Michael Kleeberg, Friedemann Heinz, Dr. Martin Kuntz, Matthias Feßenbecker
Edisonstr. 1
D-75015 Bretten         Vorsitzende des Aufsichtsrats/Chairperson of the SEEBURGER Supervisory Board:
Tel.: 07252 / 96 - 0            Prof. Dr. Simone Zeuchner
Fax: 07252 / 96 - 2222
Internet: http://www.seeburger.de               Registergericht/Commercial Register:
e-mail: [hidden email]               HRB 240708 Mannheim


Dieses E-Mail ist nur für den Empfänger bestimmt, an den es gerichtet ist und kann vertrauliches bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin enthaltene Ansicht oder Meinungsäußerung ist die des Autors und stellt nicht notwendigerweise die Ansicht oder Meinung der SEEBURGER AG dar. Sind Sie nicht der Empfänger, so haben Sie diese E-Mail irrtümlich erhalten und jegliche Verwendung, Veröffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die SEEBURGER AG noch der Absender (Eckenfels. Bernd) übernehmen die Haftung für Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren Anhänge auf Viren zu prüfen.


This email is intended only for the recipient(s) to whom it is addressed. This email may contain confidential material that may be protected by professional secrecy. Any fact or opinion contained, or expression of the material herein, does not necessarily reflect that of SEEBURGER AG. If you are not the addressee or if you have received this email in error, any use, publication or distribution including forwarding, copying or printing is strictly prohibited. Neither SEEBURGER AG, nor the sender (Eckenfels. Bernd) accept liability for viruses; it is your responsibility to check this email and its attachments for viruses.