ASN.1 Decoder


Instructions:
  • EITHER {Load, or Drag&Drop} on the Choose File button, your certificate file (any format),
  • OR {Paste} your PEM/base64/hex encoded blob in the input, AND {Press} on convert.
  • ( ALTERNATIVELY, you can {convert} between ascii and hexadecimal and between base64 and hexadecimal OR {swap} input and output fields. )
  • Gotcha!
More stuff at the bottom of the page for those who learn.


Input
Output

ASN.1 Decoder by: manaslu_eiger@yahoo.co.jp
Original from: www.geocities.co.jp/SiliconValley-SanJose/3377/asn1JS.js
I've made some changes.
Previous from: https://holtstrom.com/michael/tools/asn1decoder.php
And I've added a few more things to make it more gooder (zv)

Input can be: 30 03 02 01 ff (HEX string) 30030201ff (HEX string, without space) 30 03 02 01 FF (HEX string, upper case) 30030201FF (HEX string, without space, upper case) MAMCAf8= (BASE64/PEM)

Carriage-returns, line-feeds, and tab will be ignored as white space.

Each HEX token must be two digits. I.E. use 03 instead of 3.


20221011-zv: I copied most of this from https://holtstrom.com/michael/tools/asn1decoder.php and https://holtstrom.com/michael/tools/asciihexconverter.php

a) I mixed both into one single page (more convenient) and added removal of OpenSSL delimiters (-----(BEGIN|END).*?-----) so people can simply paste the whole PEM file in the input,

b) documenting all the OIDs needed to properly interpret any ASN.1 dump in our environment (if there are still unresolved OIDs, the comment points to a likely source of information)

c) implemented some sanity checks regarding the class and P/C parts of the X.690 BER encoding,

d) and modified ASN.1 decoding by adding recursive interpretation of OCTETSTRINGs and BISTRINGs contents into ASN.1, and ASCII in case of failure. In case of failure, the initial value is returned; and...

e) added file input and drag and drop to be able to also load non base64 or hex encoded files (pure binary, yadda yadda!). This avoids going through the pain of doing everything by hand.

NB: the output window is by default 128 characters wide, meaning in hex dumps, like for the public key display, this amounts to 128 nibbles /2 = 64 bytes x8 = 512 bits per line. Counting the length of the keys is therefore pretty easy.

NB2: sometimes readASN1 occurs for a value, which messes up the output. Will look into it later, for in the depths of recursivity, there is no trivial solution...

Useful references:


Examples:

OID: 06092A864886F70D010105 -----BEGIN CERTIFICATE----- MIINzDCCDLSgAwIBAgIQC1zFgQBsvtbgdrqYZH0UZjANBgkqhkiG9w0BAQsFADBP MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMjA5MDIwMDAwMDBa Fw0yMzAyMTAyMzU5NTlaMHYxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/n nIExEjAQBgNVBAcMCeadreW3nuW4gjElMCMGA1UEChMcQWxpYmFiYSBDbG91ZCBD b21wdXRpbmcgTHRkLjEYMBYGA1UEAxMPYWUwMS5hbGljZG4uY29tMFkwEwYHKoZI zj0CAQYIKoZIzj0DAQcDQgAEWLOb0N+BL9zduoTE1SssUfeoQLB+Cx8Vo5hm0Pmx BsCXK76a/pPDNvAbzUAlKsvVMjzjw7r+5fsHnqXyYyj8baOCC0YwggtCMB8GA1Ud IwQYMBaAFLdrouqoqoSMeeq02g+YssWVdrn0MB0GA1UdDgQWBBQos+jiIox3RwB2 s8xExNIKET+TOjCCB/AGA1UdEQSCB+cwggfjgg9hZTAxLmFsaWNkbi5jb22CEzEx MTEuYWxpZXhwcmVzcy5jb22CEGEuYWxpZXhwcmVzcy5jb22CEmFjcy5hbGlleHBy ZXNzLmNvbYIRYWNzLmFsaWV4cHJlc3MudXOCGWFjdGl2aXRpZXMuYWxpZXhwcmVz cy5jb22CE2FjdGl2aXRpZXMuaXRhby5jb22CD2FlaXMuYWxpY2RuLmNvbYIUYWVs aXZlLXJ1LmFsaWNkbi5jb22CGmFlbGl2ZXFhLWNlbnRlci5hbGljZG4uY29tgh5h ZXByb2R1Y3Rzb3VyY2VzaXRlLmFsaWNkbi5jb22CDmFldS5hbGljZG4uY29tghNh amF4LmFsaWV4cHJlc3MuY29tghZhcGkuZG9zLmFsaWV4cHJlc3MuY29tghRhcGku bS5hbGlleHByZXNzLmNvbYIRYXNzZXRzLmFsaWNkbi5jb22CDGIuYWxpY2RuLmNv bYITYmVzdC5hbGlleHByZXNzLmNvbYIVYnJhbmRzLmFsaWV4cHJlc3MuY29tghJj ZHAuYWxpZXhwcmVzcy5jb22CE2NuLm0uYWxpZXhwcmVzcy5jb22CHWNvbm5lY3Rr ZXl3b3JkLmFsaWV4cHJlc3MuY29tghNkZXNjLmFsaWV4cHJlc3MuY29tghFlcy5h bGlleHByZXNzLmNvbYIXZmVlZGJhY2suYWxpZXhwcmVzcy5jb22CFmZyZWlnaHQu YWxpZXhwcmVzcy5jb22CDGcuYWxpY2RuLmNvbYIUZ3JvdXAuYWxpZXhwcmVzcy5j b22CFGd0cmV1LmFsaWV4cHJlc3MuY29tghRndHJoei5hbGlleHByZXNzLmNvbYIU Z3RycnUuYWxpZXhwcmVzcy5jb22CFGd0cnVzLmFsaWV4cHJlc3MuY29tghFoNS5h bGlleHByZXNzLmNvbYIUaDUuZGUuYWxpZXhwcmVzcy5jb22CFGg1LmVzLmFsaWV4 cHJlc3MuY29tghRoNS5mci5hbGlleHByZXNzLmNvbYIUaDUucGwuYWxpZXhwcmVz cy5jb22CFGg1LnJ1LmFsaWV4cHJlc3MuY29tghRoNS50aC5hbGlleHByZXNzLmNv bYIUaDUudHIuYWxpZXhwcmVzcy5jb22CEWhlLmFsaWV4cHJlc3MuY29tghpob3Rw cm9kdWN0cy5hbGlleHByZXNzLmNvbYIMaS5hbGljZG4uY29tghNpbGNlLmFsaWV4 cHJlc3MuY29tgg5pbWcuYWxpY2RuLmNvbYINaXMuYWxpY2RuLmNvbYIRamEuYWxp ZXhwcmVzcy5jb22CEWxhemFkYS5hbGljZG4uY29tghlsaWdodGhvdXNlLmFsaWV4 cHJlc3MuY29tghRsb2dpbi5hbGlleHByZXNzLmNvbYITbG9naW4uYWxpZXhwcmVz cy51c4IQbS5hbGlleHByZXNzLmNvbYIPbS5hbGlleHByZXNzLnVzghNtLmFyLmFs aWV4cHJlc3MuY29tghNtLmRlLmFsaWV4cHJlc3MuY29tghNtLmVzLmFsaWV4cHJl c3MuY29tghNtLmZyLmFsaWV4cHJlc3MuY29tghNtLmhlLmFsaWV4cHJlc3MuY29t ghNtLmlkLmFsaWV4cHJlc3MuY29tghNtLml0LmFsaWV4cHJlc3MuY29tghNtLmph LmFsaWV4cHJlc3MuY29tghNtLmtvLmFsaWV4cHJlc3MuY29tghNtLm5sLmFsaWV4 cHJlc3MuY29tghNtLnBsLmFsaWV4cHJlc3MuY29tghNtLnB0LmFsaWV4cHJlc3Mu Y29tghNtLnJ1LmFsaWV4cHJlc3MuY29tghNtLnRoLmFsaWV4cHJlc3MuY29tghNt LnRyLmFsaWV4cHJlc3MuY29tghNtLnZpLmFsaWV4cHJlc3MuY29tghNtYWNjLmFs aWV4cHJlc3MuY29tghRtYmVzdC5hbGlleHByZXNzLmNvbYIRbWVkdXNhLmFsaWNk bi5jb22CFm1lc3NhZ2UuYWxpZXhwcmVzcy5jb22CEm1zdS5hbGlleHByZXNzLmNv bYIRbXkuYWxpZXhwcmVzcy5jb22CF3Bhc3Nwb3J0LmFsaWV4cHJlc3MuY29tghhw cm9tb3Rpb24uYWxpZXhwcmVzcy5jb22CEXB0LmFsaWV4cHJlc3MuY29tghFydS5h bGlleHByZXNzLmNvbYIWcy5jbGljay5hbGlleHByZXNzLmNvbYITc2FsZS5hbGll eHByZXNzLmNvbYIYc2VsZWN0aW9uLmFsaWV4cHJlc3MuY29tghtzaG9wcGluZ2Nh cnQuYWxpZXhwcmVzcy5jb22CHHNob3BwaW5nY2FydDEuYWxpZXhwcmVzcy5jb22C EnNzci5hbGlleHByZXNzLmNvbYIRc3R5bGUuYWxpYmFiYS5jb22CFHN0eWxlLmFs aWV4cHJlc3MuY29tghB0LmFsaWV4cHJlc3MuY29tggx1LmFsaWNkbi5jb22CF3Vz LWNsaWNrLmFsaWV4cHJlc3MuY29tghR1cy5hZS5hbGlleHByZXNzLmNvbYIXdXMu Y29icmEuYWxpZXhwcmVzcy5jb22CEnd3dy5hbGlleHByZXNzLmNvbYIRd3d3LmFs aWV4cHJlc3MudXOCEXd3dy5hbGx5bGlrZXMuY29tMA4GA1UdDwEB/wQEAwIHgDAd BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgY8GA1UdHwSBhzCBhDBAoD6g PIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VExTUlNBU0hBMjU2 MjAyMENBMS00LmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0Rp Z2lDZXJ0VExTUlNBU0hBMjU2MjAyMENBMS00LmNybDA+BgNVHSAENzA1MDMGBmeB DAECAjApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMw fwYIKwYBBQUHAQEEczBxMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy dC5jb20wSQYIKwYBBQUHMAKGPWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E aWdpQ2VydFRMU1JTQVNIQTI1NjIwMjBDQTEtMS5jcnQwCQYDVR0TBAIwADCCAX0G CisGAQQB1nkCBAIEggFtBIIBaQFnAHUA6D7Q2j71BjUy51covIlryQPTy9ERa+zr aeF3fW0GvW4AAAGC++k90wAABAMARjBEAiBwYbpnRuzLTXj/yPmFo+2ekI5bV81A OGYyycQ8Kpxw/wIgSwBOvPADrIPJpsv2iBvHzJoHtKt2zOKfiwUmG/GOnWkAdQA1 zxkbv7FsV78PrUxtQsu7ticgJlHqP+Eq76gDwzvWTAAAAYL76T4ZAAAEAwBGMEQC IHfdPPjDPdgcIWFfALXOxSAqFYuryq4izuUbabXZWmqlAiBTHf3JFCq2OYOOUVsH x06cYbbphFVnSGaMPbPr4sqUggB3ALc++yTfnE26dfI5xbpY9Gxd/ELPep81xJ4d CYEl7bSZAAABgvvpPhUAAAQDAEgwRgIhAOMkR37GI+WU8ZzR4aQQNYGSOeiGvCBs wgs5nOeRfpu0AiEAzZw6cQ5uwKCZwfmp/igB2M3k4DLFqbTxkKN728oK6/MwDQYJ KoZIhvcNAQELBQADggEBALZj06ChZofdbA4VFt0eDWt/x3sdP/KGrVWC2CfMwbW/ qJo2vSSyTJSEdUkGgOUwMoDhMyDidsw+Wh4I6hK3OjZOuTXAhhI31H4lP/OIUTQx KVBXhXZ1ngratP+ykm2+Rzt0Qedh9z0uBc4Hz/16zEoeDxL4McgPEWTv+mVYN7g5 VKnxiaijr8JlMaFrqHvvZ3LQiZdmds0T2uL7wchG0sXuMUn12jVF5p61q1lakFdM FulC46MFX+W/JXujhcnqUc2PHmTNa3+FKQlnzp01sfszB2v5eV/qtegfNL6H67RL gmGk8GOypSDovq92dqcrALvGqaMW9aljMkwwezPCWOg= -----END CERTIFICATE-----

d0jQ