internal byte[][] EncodeUserPrincipalName(string upn) { // AnotherName ::= SEQUENCE { // type-id OBJECT IDENTIFIER, // value[0] EXPLICIT ANY DEFINED BY type-id // } byte[][] upnUtf8 = DerEncoder.SegmentedEncodeUtf8String(upn.ToCharArray()); // [0] EXPLICIT byte[][] payloadTlv = DerEncoder.ConstructSegmentedSequence(upnUtf8); payloadTlv[0][0] = DerSequenceReader.ContextSpecificConstructedTag0; byte[][] anotherNameTlv = DerEncoder.ConstructSegmentedSequence( DerEncoder.SegmentedEncodeOid(Oids.UserPrincipalName), payloadTlv); anotherNameTlv[0][0] = (byte)GeneralNameTag.OtherName; return(anotherNameTlv); }