Folks, While fiddling with Convert::ASN1's wonderful dump routine, asn_dump(), and Convert::BER's equally nice dump() routine, I came across the following "huh?"...
[Convert::BER->dump() v 1.3101] ... 0060 13 35: UNIVERSAL [19] ... 0097 30 13: SEQUENCE { 0099 06 9: OBJECT ID = 1.2.840.113549.1.1.1 00A4 05 0: NULL 00A6 : } 00A6 04 128: STRING 00A7 : A4 6C D8 2E 34 67 60 F0 24 6F D4 8B C9 36 70 A2 .l..4g`.$o...6p. ... [Convert::ASN1->asn_dump() v 0.20] ... 0060 35: [UNIVERSAL 19] ... 0097 13: SEQUENCE { 0099 9: OBJECT ID = 1.2.840.113549.1.1.1 00A4 0: NULL 00A6 : } 00A6 128: STRING 00A9 : A4 6C D8 2E 34 67 60 F0 24 6F D4 8B C9 36 70 A2 .l..4g`.$o...6p. ... There are a couple differences, some cosmetic, some not so... The inclusion of the 'tag' primitive in the BER output I like, for instance. I'm not sure which is more apprpriated for the context tags. But the "huh" is in the address of the STRING contents. Here I think ASN1 has gotten it right. The "A4" octet is at offset 00A9 in the object, not at 00A7 (which is the length value) as depicted in BER. I think it would be a good thing to have these guys consistent, and I do think the BER string contents' offset isn't kosher. Thoughts? Thanks, rnd