Re: CERT_AsciiToName() and unknown OIDs

John Dennis <[email protected]>
Newsgroups gmane.comp.mozilla.crypto
Message-ID <[email protected]>
On 02/23/2017 09:00 AM, Miklos Vajna wrote:
> Hi,
>
> [ I ran into this problem as a follow-up of the previous ECDSA question
> I asked earlier, but I assume this problem is independent. ]
>
> I'm trying to use CERT_AsciiToName() to get the DER-encoded equivalent
> of a string from an XML signature. The original string from my XML
> signature was:
>
> "C=HU,L=Budapest,O=NISZ Nemzeti Infokommunikációs Szolgáltató Zrt.,CN=Állampolgári Tanúsítványkiadó - Qualified Citizen CA,UNDEF=VATHU-10585560"
>
> CERT_AsciiToName() fails for this, as nss/lib/certdb/alg1485.c's
> name2kinds table has no idea about "UNDEF", and researching a bit it
> seems to be indeed a custom construct, so I complained to the creator of
> the signature about this. As a reply they now improved, their
> replacement is:
>
> "C=HU,L=Budapest,O=NISZ Nemzeti Infokommunikációs Szolgáltató Zrt.,CN=Állampolgári Tanúsítványkiadó - Qualified Citizen CA,2.5.4.97=VATHU-10585560"
>
> This fails the same way, for the same reason. I guess what their
> intention was to encode the OID into the part before the "=" character,
> for an OID that is indeed advertised by ETSI, but has no IANA registered
> type name. Reading ParseRFC1485AVA() in same file my guess was the
> correct syntax would be:
>
> "C=HU,L=Budapest,O=NISZ Nemzeti Infokommunikációs Szolgáltató Zrt.,CN=Állampolgári Tanúsítványkiadó - Qualified Citizen CA,OID.2.5.4.97=VATHU-10585560"
>
> but before suggesting this to the creator of the signature (author of
> the software that generates this XML signature), I wanted to check if
> NSS is happy with it, and it's not.
>
> Here is how it fails exactly: In case of using the proper "OID." prefix,
> ParseRFC1485AVA() calls SEC_StringToOID() and that returns SECSuccess,
> but later the if (kind == SEC_OID_UNKNOWN) condition still leads to
> PORT_SetError(SEC_ERROR_INVALID_AVA) and thus CERT_AsciiToName() fails.
>
> So my question: am I right this is a bug in NSS? If absolutely needed, I
> could work around the problem in my client code, but it would be nice if
> NSS could handle the situation. I guess there are several options, like
> 1) teching NSS about this OID 2) ignoring unknown OIDs 3) allowing
> unknown OIDs and encoding them into the DER blob.
>
> At least it looks a bit confusing that the OID.x.y... syntax is
> supported, but unknown OIDs are not allowed.
>
> If the conclusion is that this new OID just has to be added to the list
> of OIDs NSS recognizes, I can try to craft a patch that does so. (Though
> so far I did not try to build NSS myself, I'm just using the distro
> debug packages.)

You should follow the RFC specifications, in this case RFC-4514 and 
RFC-4512.

The second example with the RDN 2.5.4.97=VATHU-10585560 is correct.

It does appear that ParseRFC1485AVA has a bug

     if (!PL_strncasecmp("oid.", tagBuf, 4)) {
         rv = SEC_StringToOID(arena, &derOid, tagBuf, strlen(tagBuf));

SEC_StringToOID() can handle a numericoid (e.g. dotted decimal) with or 
without a "OID." prefix. The test should include a test for a numericoid.

FWIW the code is implementing a very old obsoleted RFC the "oid." prefix 
comes from RFC-1485 published in 1995, the current RFC 4514 is from 2006.

RFC 4514 obsoletes 2253 which obsoletes 1779 which obsoletes 1485.


-- 
John
-- 
dev-tech-crypto mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-crypto
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.