Overview#

PKCS #12 file encoding can be inspected with the following tool:

$ dumpasn1 <file>

Key Encoding#

PBE/SHA1/DES3/CBC#

  28 NDEF:             SEQUENCE {
  30    9:               OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
  41 NDEF:               [0] {
  43 NDEF:                 OCTET STRING {
  45 1447:                   OCTET STRING, encapsulates {
  49 1443:                     SEQUENCE {
  53 1439:                       SEQUENCE {
  57   11:                         OBJECT IDENTIFIER
         :                           pkcs-12-pkcs-8ShroudedKeyBag (1 2 840 113549 1 12 10 1 2)
  70 1271:                         [0] {
  74 1267:                           SEQUENCE {
  78   37:                             SEQUENCE {
  80   10:                               OBJECT IDENTIFIER
         :                                 pbeWithSHAAnd3-KeyTripleDES-CBC (1 2 840 113549 1 12 1 3)
  92   23:                               SEQUENCE {
  94   16:                                 OCTET STRING
         :                     F7 F3 E3 EC 77 AC 91 77 6B B0 A5 BC 5D C3 78 5B
 112    3:                                 INTEGER 100000
         :                                 }
         :                               }
 117 1224:                             OCTET STRING
         :                     A2 B8 CB 1C 34 4B 19 86 57 33 25 80 CA 13 DE 9B
         :                     47 2E E5 A8 8C DC 73 16 CB BF 23 78 2E A5 E3 04
         :                     F1 FB 35 3E AD 61 61 A2 E4 52 73 70 7D 46 9B D3
         :                     FB 5C 8C F4 7A 29 FB A1 0E 0D BF 4C 77 80 27 44
         :                     73 D6 41 AD 7D E0 6C C5 B5 A6 31 DD 4B 50 E8 7C
         :                     DA 94 8A 3F 34 B2 BF 9A 5B 9F 1B 8D 31 FD 27 F0
         :                     EF AA 62 14 B6 2D 66 8F 31 B9 EF CF C4 29 70 9D
         :                     5B BD DB BD 1D 78 AA 52 08 22 2A 0C 2C 0B 84 F1
         :                             [ Another 1096 bytes skipped ]
         :                             }
         :                           }
1345  148:                         SET {
1348  109:                           SEQUENCE {
1350    9:                             OBJECT IDENTIFIER
         :                               friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
1361   96:                             SET {
1363   94:                               BMPString
         :                   's.s.l.s.e.r.v.e.r./.v.m.-.2.1.8...a.b.c...i.d.m.'
         :                   '.l.a.b...e.n.g...b.r.q...r.e.d.h.a.t...c.o.m'
         :                               }
         :                             }
1459   35:                           SEQUENCE {
1461    9:                             OBJECT IDENTIFIER
         :                               localKeyID (for PKCS #12) (1 2 840 113549 1 9 21)
1472   22:                             SET {
1474   20:                               OCTET STRING
         :                     9C 0F DB E4 E0 F4 5E 8F AD 9B A1 CB 7B 6A 50 CF
         :                     18 9B 4F B4
         :                               }
         :                             }
         :                           }
         :                         }
         :                       }
         :                     }
         :                   }
         :                 }
         :               }

PBES2#

2374 1570:           SEQUENCE {
2378    9:             OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
2389 1555:             [0] {
2393 1551:               OCTET STRING, encapsulates {
2397 1547:                 SEQUENCE {
2401 1543:                   SEQUENCE {
2405   11:                     OBJECT IDENTIFIER
         :                       pkcs-12-pkcs-8ShroudedKeyBag (1 2 840 113549 1 12 10 1 2)
2418 1338:                     [0] {
2422 1334:                       SEQUENCE {
2426   96:                         SEQUENCE {
2428    9:                           OBJECT IDENTIFIER
         :                             pkcs5PBES2 (1 2 840 113549 1 5 13)
2439   83:                           SEQUENCE {
2441   50:                             SEQUENCE {
2443    9:                               OBJECT IDENTIFIER
         :                                 pkcs5PBKDF2 (1 2 840 113549 1 5 12)
2454   37:                               SEQUENCE {
2456   16:                                 OCTET STRING
         :                     22 E7 B6 7F 3F 8E EB 3F 5A B8 EB A7 23 F5 5D 82
2474    2:                                 INTEGER 2000
2478    1:                                 INTEGER 32
2481   10:                                 SEQUENCE {
2483    8:                                   OBJECT IDENTIFIER
         :                                     hmacWithSHA1 (1 2 840 113549 2 7)
         :                                   }
         :                                 }
         :                               }
2493   29:                             SEQUENCE {
2495    9:                               OBJECT IDENTIFIER
         :                                 aes256-CBC (2 16 840 1 101 3 4 1 42)
2506   16:                               OCTET STRING
         :                     76 8F DE 63 14 57 58 AF 5E BB 1B 1C EF 34 92 0A
         :                               }
         :                             }
         :                           }
2524 1232:                         OCTET STRING
         :                     B0 C3 18 B7 55 C6 5A 2D 15 66 A3 D2 2F 7D 88 FC
         :                     E1 1E 10 03 A7 2F 83 07 DB 02 2D 46 2B 25 F1 44
         :                     AC D8 C5 BC F0 BA 6E 54 C6 8E A6 87 3D CA 94 96
         :                     30 AE DB D9 DE 33 FE F1 18 D2 6C B2 D4 C2 31 A5
         :                     0B 75 4E F4 F1 41 59 9E B4 A4 86 B4 E6 B8 CE 65
         :                     E4 29 C2 46 FD 1A 5A E1 87 9F 37 A7 95 1A C7 FE
         :                     D1 91 CB 14 C1 E5 E2 CF 37 12 0F 9E 6B AA 92 B0
         :                     3A C4 00 C0 4E EA 0E 2A F8 6E 51 C7 8D 6B 1B B0
         :                             [ Another 1104 bytes skipped ]
         :                         }
         :                       }
3760  185:                     SET {
3763   35:                       SEQUENCE {
3765    9:                         OBJECT IDENTIFIER
         :                           localKeyID (for PKCS #12) (1 2 840 113549 1 9 21)
3776   22:                         SET {
3778   20:                           OCTET STRING
         :                     9C 0F DB E4 E0 F4 5E 8F AD 9B A1 CB 7B 6A 50 CF
         :                     18 9B 4F B4
         :                           }
         :                         }
3800  145:                       SEQUENCE {
3803    9:                         OBJECT IDENTIFIER
         :                           friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
3814  131:                         SET {
3817  128:                           BMPString
         :                   'C.N.=.v.m.-.2.1.8...a.b.c...i.d.m...l.a.b...e.n.'
         :                   'g..b.r.q...r.e.d.h.a.t...c.o.m.,.O.U.=.p.k.i.-.t.o'
         :                   'm'
         :                   'c'
         :                   'a'
         :                   't'
         :                   ','
         :                   'O'
         :                   '='
         :                   'E'
         :                   'X'
         :                   'A'
         :                   'M'
         :                   'P'
         :                   'L'
         :                   'E'
         :                           }
         :                         }
         :                       }
         :                     }
         :                   }
         :                 }
         :               }
         :             }

Certificate Encoding#

No Encryption#

All certificates are encoded under this elements:

1490 2320:           SEQUENCE {
1494    9:             OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
1505 2305:             [0] {
1509 2301:               OCTET STRING, encapsulates {
1513 2297:                 SEQUENCE {

Each certificate is encoded as follows:

1517 1125:                   SEQUENCE {
1521   11:                     OBJECT IDENTIFIER
         :                       pkcs-12-certBag (1 2 840 113549 1 12 10 1 3)
1534 1009:                     [0] {
1538 1005:                       SEQUENCE {
1542   10:                         OBJECT IDENTIFIER
         :                           x509Certificate (for PKCS #12) (1 2 840 113549 1 9 22 1)
1554  989:                         [0] {
1558  985:                           OCTET STRING, encapsulates {
1562  981:                             SEQUENCE {
1566  701:                               SEQUENCE {
1570    3:                                 [0] {
1572    1:                                   INTEGER 2
         :                                   }
1575    1:                                 INTEGER 6
1578   13:                                 SEQUENCE {
1580    9:                                   OBJECT IDENTIFIER
         :                                     sha256WithRSAEncryption (1 2 840 113549 1 1 11)
1591    0:                                   NULL
         :                                   }
1593   72:                                 SEQUENCE {
1595   16:                                   SET {
1597   14:                                     SEQUENCE {
1599    3:                                       OBJECT IDENTIFIER
         :                                         organizationName (2 5 4 10)
1604    7:                                       UTF8String 'EXAMPLE'
         :                                       }
         :                                     }
1613   19:                                   SET {
1615   17:                                     SEQUENCE {
1617    3:                                       OBJECT IDENTIFIER
         :                                         organizationalUnitName (2 5 4 11)
1622   10:                                       UTF8String 'pki-tomcat'
         :                                       }
         :                                     }
1634   31:                                   SET {
1636   29:                                     SEQUENCE {
1638    3:                                       OBJECT IDENTIFIER
         :                                         commonName (2 5 4 3)
1643   22:                                       UTF8String 'CA Signing Certificate'
         :                                       }
         :                                     }
         :                                   }
1667   30:                                 SEQUENCE {
1669   13:                                   UTCTime 20/02/2018 20:27:56 GMT
1684   13:                                   UTCTime 10/02/2020 20:27:56 GMT
         :                                   }
1699  103:                                 SEQUENCE {
1701   16:                                   SET {
1703   14:                                     SEQUENCE {
1705    3:                                       OBJECT IDENTIFIER
         :                                         organizationName (2 5 4 10)
1710    7:                                       UTF8String 'EXAMPLE'
         :                                       }
         :                                     }
1719   19:                                   SET {
1721   17:                                     SEQUENCE {
1723    3:                                       OBJECT IDENTIFIER
         :                                         organizationalUnitName (2 5 4 11)
1728   10:                                       UTF8String 'pki-tomcat'
         :                                       }
         :                                     }
1740   34:                                   SET {
1742   32:                                     SEQUENCE {
1744    9:                                       OBJECT IDENTIFIER
         :                                         emailAddress (1 2 840 113549 1 9 1)
1755   19:                                       IA5String 'caadmin@example.com'
         :                                       }
         :                                     }
1776   26:                                   SET {
1778   24:                                     SEQUENCE {
1780    3:                                       OBJECT IDENTIFIER
         :                                         commonName (2 5 4 3)
1785   17:                                       UTF8String 'PKI Administrator'
         :                                       }
         :                                     }
         :                                   }
1804  290:                                 SEQUENCE {
1808   13:                                   SEQUENCE {
1810    9:                                     OBJECT IDENTIFIER
         :                                       rsaEncryption (1 2 840 113549 1 1 1)
1821    0:                                     NULL
         :                                     }
1823  271:                                   BIT STRING, encapsulates {
1828  266:                                     SEQUENCE {
1832  257:                                       INTEGER
         :                     00 A5 7A 4C F5 A0 B8 DC 2D 62 B2 B9 DD ED AC 9B
         :                     59 71 02 08 B5 B3 F9 C1 9F 81 47 81 76 3F 28 70
         :                     F7 0A 95 4E 7E 31 EC 40 28 72 FB 80 2F FA 7A 38
         :                     99 2F CB 29 CB 0D A8 B2 0D DF 52 A6 F2 31 D1 9F
         :                     9A 40 C1 7B 3A 4C B5 8A 5D 81 2A D0 1B AA 73 78
         :                     28 6B 06 2B 7D 6D 64 BC 30 30 39 C6 DA 47 34 84
         :                     4E 62 77 9F C9 AA E7 6D E9 D6 07 47 D1 2E 7E C3
         :                     64 33 EF 9D 49 74 80 8C 48 26 1E 86 C0 FE CE 07
         :                             [ Another 129 bytes skipped ]
2093    3:                                       INTEGER 65537
         :                                       }
         :                                     }
         :                                   }
2098  170:                                 [3] {
2101  167:                                   SEQUENCE {
2104   31:                                     SEQUENCE {
2106    3:                                       OBJECT IDENTIFIER
         :                                         authorityKeyIdentifier (2 5 29 35)
2111   24:                                       OCTET STRING, encapsulates {
2113   22:                                         SEQUENCE {
2115   20:                                           [0]
         :                     D1 9E 83 09 C3 6D 29 20 BE 87 87 CD 4E FB BF 6B
         :                     5E 86 1B 73
         :                                           }
         :                                         }
         :                                       }
2137   85:                                     SEQUENCE {
2139    8:                                       OBJECT IDENTIFIER
         :                                         authorityInfoAccess (1 3 6 1 5 5 7 1 1)
2149   73:                                       OCTET STRING, encapsulates {
2151   71:                                         SEQUENCE {
2153   69:                                           SEQUENCE {
2155    8:                                             OBJECT IDENTIFIER
         :                                               ocsp (1 3 6 1 5 5 7 48 1)
2165   57:                                             [6]
         :                   'http://vm-218.abc.idm.lab.eng.brq.redhat.com:808'
         :                   '0/ca/ocsp'
         :                                             }
         :                                           }
         :                                         }
         :                                       }
2224   14:                                     SEQUENCE {
2226    3:                                       OBJECT IDENTIFIER
         :                                         keyUsage (2 5 29 15)
2231    1:                                       BOOLEAN TRUE
2234    4:                                       OCTET STRING, encapsulates {
2236    2:                                         BIT STRING 4 unused bits
         :                                           '1111'B
         :                                         }
         :                                       }
2240   29:                                     SEQUENCE {
2242    3:                                       OBJECT IDENTIFIER
         :                                         extKeyUsage (2 5 29 37)
2247   22:                                       OCTET STRING, encapsulates {
2249   20:                                         SEQUENCE {
2251    8:                                           OBJECT IDENTIFIER
         :                                             clientAuth (1 3 6 1 5 5 7 3 2)
2261    8:                                           OBJECT IDENTIFIER
         :                                             emailProtection (1 3 6 1 5 5 7 3 4)
         :                                           }
         :                                         }
         :                                       }
         :                                     }
         :                                   }
         :                                 }
2271   13:                               SEQUENCE {
2273    9:                                 OBJECT IDENTIFIER
         :                                   sha256WithRSAEncryption (1 2 840 113549 1 1 11)
2284    0:                                 NULL
         :                                 }
2286  257:                               BIT STRING
         :                     40 A0 EA A7 FA 50 0F 74 1B B5 E3 68 01 CF A9 76
         :                     B7 34 A8 B1 39 03 B1 7B 4D BA 7C F4 99 96 0B EF
         :                     7E 83 85 F4 ED 7C 10 33 82 18 EC 1A 20 18 59 1A
         :                     CA 55 FF 03 E4 E1 31 14 16 92 05 7F 77 EF 96 A9
         :                     07 6B C7 2F 10 3F 16 6F 4C C4 F1 6E F2 A3 C5 8C
         :                     ED EF CA 26 1F 9F 57 05 01 BF FC F9 D0 ED 33 DB
         :                     67 FF 86 F4 CD 01 9D E7 26 9B 12 80 5B 8C CD F7
         :                     06 41 EB 4A A6 B4 B4 B6 18 99 1C B0 52 7B 4E 58
         :                             [ Another 128 bytes skipped ]
         :                               }
         :                             }
         :                           }
         :                         }
         :                       }
2547   97:                     SET {
2549   27:                       SEQUENCE {
2551   11:                         OBJECT IDENTIFIER '2 16 840 1 113730 5 1 1 1'
2564   12:                         SET {
2566   10:                           BMPString '.u.,.u.,.u'
         :                           }
         :                         }
2578   29:                       SEQUENCE {
2580    9:                         OBJECT IDENTIFIER
         :                           friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
2591   16:                         SET {
2593   14:                           BMPString '.c.a.a.d.m.i.n'
         :                           }
         :                         }
2609   35:                       SEQUENCE {
2611    9:                         OBJECT IDENTIFIER
         :                           localKeyID (for PKCS #12) (1 2 840 113549 1 9 21)
2622   22:                         SET {
2624   20:                           OCTET STRING
         :                     89 B0 2D BE 36 88 11 4D 3B AE 1C 9F F0 A6 7E 19
         :                     CC D1 79 59
         :                           }
         :                         }
         :                       }
         :                     }

PBE/SHA1/RC2-40#

1502 NDEF:             SEQUENCE {
1504    9:               OBJECT IDENTIFIER encryptedData (1 2 840 113549 1 7 6)
1515 NDEF:               [0] {
1517 NDEF:                 SEQUENCE {
1519    1:                   INTEGER 0
1522 NDEF:                   SEQUENCE {
1524    9:                     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
1535   37:                     SEQUENCE {
1537   10:                       OBJECT IDENTIFIER
         :                         pbeWithSHAAnd40BitRC2-CBC (1 2 840 113549 1 12 1 6)
1549   23:                       SEQUENCE {
1551   16:                         OCTET STRING
         :                     5B 1D 6B CD 72 3F E8 1B CD 89 B3 C3 79 90 0C 22
1569    3:                         INTEGER 100000
         :                         }
         :                       }
1574 NDEF:                     [0] {
1576 2208:                       OCTET STRING
         :                     A0 D9 5B 30 C2 25 7D 41 B9 0B 59 40 8C AC CA 53
         :                     4C 4B 6E 65 40 74 E0 EC 8D 41 A3 45 05 AC 78 AA
         :                     58 A2 80 D3 F4 C2 6C C9 E5 FF 75 96 FF 3D CA 26
         :                     69 28 77 47 FF 05 CC B1 D0 65 BB 24 07 8B 59 E8
         :                     AE 58 81 26 7C 20 29 39 61 0F 9B 14 90 FA 5B 03
         :                     CA 7E CB 12 86 04 B2 E0 79 9D 49 3A C7 B7 BB C8
         :                     63 CE 6D 22 92 A3 48 20 05 1D FE 0F 3B EA 18 AD
         :                     85 4A E0 C8 E2 D7 AE F4 14 7B 88 94 49 8E 9E BB
         :                             [ Another 2080 bytes skipped ]
3788    8:                       OCTET STRING E8 19 FA 42 69 83 0B 0A
         :                       }
         :                     }
         :                   }
         :                 }
         :               }

References#