ASN.1 - Abstract Syntax Notation One


Intro

 

My notes on ASN.1

From Wikipedia: Abstract Syntax Notation One (ASN.1) is a standard interface description language for defining data structures that can be serialized and deserialized in a cross-platform way. It is broadly used in telecommunications and computer networking, and especially in cryptography.

 

SSH keys are an ASN.1 encoded data structure.


Decoders

 

 

 

Input is the key file generated with ssh-keygen. It is a PEM (Base64-encoded file)

$ openssl asn1parse -inform PEM -in /c/temp/sshkey.private 0:d=0 hl=4 l=1188 cons: SEQUENCE 4:d=1 hl=2 l= 1 prim: INTEGER :00 7:d=1 hl=4 l= 257 prim: INTEGER :C6490E13CDD6D9C393EC85A115CF5A3DA6909900DD833B970AFFA9A591DAFBE6EE4A437E820D2D72BEC5C3C34B19AE7E53379CDAB120D1699E7AF075DC0228629D0C672113AB8EADFA393DA6E37067022DF5780166E7C6B5913059B156C3FBD52CDC0E5C17B85164AD1915B380FA44792BF94DBD558CB64805D1A985320ADB6026CFA65B4E132C88C9F225A7C4C09FD3F0F40EDE6C92F75BD41C4BA838C033A14203E24374304677F976A1C8AD07255ABAF0AB1539B79F5C6D6FBC0DC6009DBD93125AAAF45F8189EA66BC9637BC370878CD53873FD89929FA7F0BD129F168D03E59803B8E23F24C5D22B3CBB3325610E25D4BCE1FFCFCCA6F842405F2BDB677 268:d=1 hl=2 l= 3 prim: INTEGER :010001 273:d=1 hl=4 l= 257 prim: INTEGER :BA75606387210ECE37802778FF45699AA7D339CDF27FC1BD9B7E274DA706C1F2BB09E2C6480D943B5EE221E0B7F2828010492F9B070DD15EFCC4A6F26DDD2994F21203B8BB028CBD559C1639A58EC18EEF20F1A47FDC5CA3C8D02AC7F4CB7F394B61F3AEEE2F497ADEBBC40874B4E346FEEF050792372C0236569E8EBE2C2F756782E273B10AD865769B8F28D2C0F2B98C315453290FBB4F65529D79B061C90A51C520CE8552A62359692D33503CA9769CB6FAD447DCC41AE64A8DD582A3BC5F110B8EF0A0E60292DB03A37145A4634579CF5369ADCCB32F837D04211CA6452882F76C90CE36D9AB56FB582B8D3FC9E538699FC70360D0CF085EA25D407E2121 534:d=1 hl=3 l= 129 prim: INTEGER :E9D58E8B01926EEC6E52BE9F8204C0FC6CF2C3A684F9D30D4CB9586AE9482AD73A6B1520151F95A2F76462F1DF1088C2D0A712E701F43BCDD87664BA973F87A85329460BA97BB22C3F278D3ADB4612E06C2F50ACAAD23351767D24F156A3ED6439433308CD474E311C0FDF2A1F1B5D7C9332A3873494C71CD85B87731C754463 666:d=1 hl=3 l= 129 prim: INTEGER :D914D61A9F9F0EFE6979DC27D6E3CACAF56566EA384E4D77C00581FC1A2AE1934D55F636C5109C231674EA7EC056A4E342473CA5A424D7411BE7B1D07F49350B132B75F93C13004BC01F5F41AB29EBB029603A7ABCAD553AA339F2D871DA79FB3F6CF03B550B10EE56C33E8B85FC52A2063A5BC66ED2845689073C55CFD6AFDD 798:d=1 hl=3 l= 128 prim: INTEGER :707839617ED611E842802613CE93BEC72B17F1270CDAA4BAC6E67732A516031516921ECD199BE17B4B06CBD88E740373C0AC3B994505562682311FEDE785B5182F37B0EB370FB9F9323F31DCD74EF31162B7B753F5ADB8E53BDAA1843B2A09AAA5283F49C282C387377A22DABDAF89DDBB6725E48853EF195EAF578CF4692B05 929:d=1 hl=3 l= 128 prim: INTEGER :3BCFA2E23902B135E5C7DEA1D77271E893CE7999A523E5F24DA4F6D888393267CC9217C1A5705B24CBC630E9F582A9F1B7CC3AE8849E65F49984B0187B49A764C2C661BDE710712F6DE2F6F2F7FF17E234B43FC89B7DC292E2704FF9D4FCD6492483967932885704E440ED55B1F800A885C0C4929AEC43EC37DB1783A93D44BD 1060:d=1 hl=3 l= 129 prim: INTEGER :CA9BCC2CD81CAF49456CF468D38A509A8C5A8B27479563344F698E9FFBE1AFFD455F00F57873E4B49005A95DBBF9B5B924CDB4B479A2CF4CA80BCDABD7B50A13B4AC2B8E9A251CA207533E96BBE9F869B7C021116E6CE74DFFE68BA11434C810D16DD5CCB1937F8EF638E1E33EC512DD455C8C99D3ED3FC6DE9518B6136684CC

Â