Você pode ver a estrutura gerada usando ferramentas como dumpasn1
ou openssl asn1parse -i
.
Eu tentei criar uma estrutura de exemplo usando o esquema e um verdadeiro compilador ASN.1 .
-
A admissionAuthority, eu acho , só precisa ser configurada para marcação explícita. (Eu não tenho a menor idéia sobre tags embora.
admissionAuthority = EXPLICIT:1, IA5STRING:MyGeneralName
Que parece corresponder à saída do compilador.
-
"UTF8String:" do OpenSSL se estende até o final da linha. Então, o que você tem é um professionItem, com o valor "
String1,UTF8String:String2
".Vários valores podem ser definidos assim:
professionItems.0 = UTF8String:String1 professionItems.1 = UTF8String:String2
Mas, como eles precisam estar dentro de uma SEQUENCE, você precisa novamente de uma seção separada:
professionItems = SEQUENCE:item_sect [item_sect] 0 = UTF8String:String1 1 = UTF8String:String2
-
Mas, professionItems precisa ser uma SEQÜÊNCIA de professionInfo SEQ. Para uma SEQ de apenas um item, a opção mais simples é:
professionItems = SEQWRAP, SEQUENCE:item_sect
Se você precisasse de vários itens, teria que usar outra seção:
professionItems = SEQUENCE:prof_items_sect [prof_items_sect] 0 = SEQUENCE:item0_sect 1 = SEQUENCE:item1_sect ...
Reproduzi seu exemplo com sucesso em comentários com:
[seq_sect] # GeneralName tag [4] is directoryName #admissionAuthority = EXPLICIT:1, IA5STRING:[email protected] #admissionAuthority = EXPLICIT:2, IA5STRING:example.com admissionAuthority = EXPLICIT:4, SEQUENCE:authority_name_sect #admissionAuthority = EXPLICIT:6, IA5STRING:https://www.example.com/ # this could be a "SEQWRAP, SEQUENCE:admission0_sect" # as long as there's only one admission item contentsOfAdmissions = SEQUENCE:admissions_sect [authority_name_sect] # this is a Name aka a RDNSequence... # each RelativeDistinguishedName generally only has one AttributeTypeAndValue # (multiple happen in LDAP but rarely), thus SETWRAP does the job here rdn.1 = SETWRAP, SEQUENCE:authority_dn_C_sect rdn.2 = SETWRAP, SEQUENCE:authority_dn_O_sect rdn.3 = SETWRAP, SEQUENCE:authority_dn_postal_sect [authority_dn_C_sect] oid = OID:2.5.4.6 value = PRINTABLESTRING:DE [authority_dn_O_sect] oid = OID:2.5.4.10 value = UTF8String:Firma A [authority_dn_postal_sect] oid = OID:2.5.4.16 value = SEQUENCE:authority_dn_postal_values [authority_dn_postal_values] 0 = UTF8String:Street 1 = UTF8String:PostalCode Adress 2 = UTF8String:DE [admissions_sect] admission.0 = SEQUENCE:admission0_sect [admission0_sect] professionInfos = SEQUENCE:professionInfos_sect [professionInfos_sect] professionInfo.0 = SEQUENCE:professionInfo0_sect [professionInfo0_sect] # namingAuthority = ... professionItems = SEQUENCE:professionItems_sect # professionOIDs = ... [professionItems_sect] professionItem.0 = UTF8String:Arzt/Ärztin