Hi ziggi, Something like this to parse this ASN.1 value: byte[] data = Hex.DecodeStrict("04133011020100310C130141130143130149130150"); Asn1Object obj = Asn1Object.FromByteArray(data); Asn1OctetString oct = Asn1OctetString.GetInstance(obj); Asn1Sequence seq = Asn1Sequence.GetInstance(oct.GetOctets()); DerInteger num = DerInteger.GetInstance(seq[0]); Asn1Set set = Asn1Set.GetInstance(seq[1]); foreach (Asn1Encodable e in set) { DerPrintableString str = DerPrintableString.GetInstance(e); Console.WriteLine(str.GetString()); }
However generally you will need to check the actual ASN.1 syntax definition; there could be optional fields or other variations that a parser for this type would need to handle. Regards, Pete Dettman On 24/6/20 5:34 pm, ziggi slaw wrote: > Consider this input: 04133011020100310C130141130143130149130150 > > It is a DerOctetString, with length of 13h and a value. The value itself > is also an ASN.1 structure: > 30 11 > 02 01 00 > 31 0C > 13 01 41 > 13 01 43 > 13 01 49 > 13 01 50 > > How can I get the 'final' PrintableString values, in this case 41, 43, > 49 and 50? > > I guess first I have to convert input byte array to DerOctetString.... > This is easy, 'var s = new DerOctetString(input);'. Then I should > probably do something like this: > - get the value from the DerOctetString > - generate new DerSequence from the value > - get the DerSet from the DerSequence > - get all PrintableString values from the sequence. > > I stumble right at the beginning - how to you even get the value of of > the DerOctetString? ToString method returns tag, length and value. > GetOctets method returns all bytes, including tag and length, ... > Off course I could use offset (read from index 3 onwards), but there's > probably a more idiomatic way to do it Could anyone help with an example? > > Thanks!