RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 674684 - Enhance certutil to be able to create certs for anonymous PKINIT
Summary: Enhance certutil to be able to create certs for anonymous PKINIT
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: nss
Version: 6.1
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Kai Engert (:kaie) (inactive account)
QA Contact: BaseOS QE Security Team
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-02-02 21:54 UTC by Dmitri Pal
Modified: 2014-05-29 21:44 UTC (History)
11 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-05-02 14:45:31 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Patch to test. (7.60 KB, patch)
2011-02-02 22:32 UTC, Bob Relyea
no flags Details | Diff
original unified patch (22.07 KB, patch)
2013-04-26 22:54 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff
patch v2 (13.14 KB, patch)
2013-04-26 22:59 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff
patch v4 (on top of NSS 3.14.3) (26.43 KB, patch)
2013-04-27 16:40 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff
patch v4 (for NSS 3.15) (13.60 KB, patch)
2013-04-27 20:07 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff
python script that uses pyasn1 to encode a raw DER pkinit-subject-alt-name extension (1.64 KB, text/plain)
2014-02-10 16:07 UTC, Kai Engert (:kaie) (inactive account)
no flags Details
experimental patch 6 (55.94 KB, patch)
2014-02-10 16:10 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff
binary extension file created by the python script (89 bytes, application/octet-stream)
2014-02-10 16:13 UTC, Kai Engert (:kaie) (inactive account)
no flags Details
experimental patch v7 (55.94 KB, patch)
2014-02-10 16:21 UTC, Kai Engert (:kaie) (inactive account)
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Mozilla Foundation 969822 0 -- RESOLVED certutil should be able to embed externally provided binary encodings of extensions when creating new certificates (or c... 2020-02-12 08:19:39 UTC

Description Dmitri Pal 2011-02-02 21:54:25 UTC
With the current certutil for NSS it is not possible to create a certificate that can be used for anonymous PKINIT.

All the details about such cert can be found here: http://k5wiki.kerberos.org/wiki/Pkinit_configuration

We are looking for any way to be able to generate certificates that satisfy specified requirements.

Comment 1 Bob Relyea 2011-02-02 22:32:04 UTC
Created attachment 476672 [details]
Patch to test.

Dimitri, make sure you have the right people who can test proposed patches CC'ed here.


bob

Comment 2 RHEL Program Management 2011-04-04 02:00:41 UTC
Since RHEL 6.1 External Beta has begun, and this bug remains
unresolved, it has been rejected as it is not proposed as
exception or blocker.

Red Hat invites you to ask your support representative to
propose this request, if appropriate and relevant, in the
next release of Red Hat Enterprise Linux.

Comment 6 RHEL Program Management 2011-10-07 16:01:02 UTC
Since RHEL 6.2 External Beta has begun, and this bug remains
unresolved, it has been rejected as it is not proposed as
exception or blocker.

Red Hat invites you to ask your support representative to
propose this request, if appropriate and relevant, in the
next release of Red Hat Enterprise Linux.

Comment 9 Kai Engert (:kaie) (inactive account) 2013-04-26 22:34:02 UTC
Dmitri, has anyone from your team ever tested the patch that Bob had attached, to see if it satisfies your requirements?
If not, should we make a scratch build for you for testing?

Comment 10 Kai Engert (:kaie) (inactive account) 2013-04-26 22:54:36 UTC
Created attachment 740648 [details]
original unified patch

The attached patch wasn't (!) a unified diff.

I had to checkout the original CVS versions of the modified files - which were luckily mentioned in the patch file, applied the patch, and created a unified diff with context.

Comment 11 Kai Engert (:kaie) (inactive account) 2013-04-26 22:59:42 UTC
Created attachment 740651 [details]
patch v2

I've merged the patch to the tip of NSS (3.15).

Comment 12 Kai Engert (:kaie) (inactive account) 2013-04-26 23:20:12 UTC
I've submitted a scratch build. based on NSS 3.14.3 for RHEL 6, which includes the patch from this bug. Because it was easier for me to avoid merging, I've also included the patch from mozilla 757857 (which adds name constraints support).

Dmitri, could you please get the scratch build, and give feedback if this patch works for you? Thanks.

https://brewweb.devel.redhat.com/taskinfo?taskID=5696455
(hopefully build will pass, if not, I'll do another one tomorrow.)

Comment 13 Kai Engert (:kaie) (inactive account) 2013-04-27 12:39:15 UTC
The scratch build failed, because the test suite failed.

The test suite failed several times. I've looked at the first failure, only.

We crash in function AddSubjectAltNames, because it calls PORT_Strdup(NULL), which isn't allowed.

I've tried the obvious fix, by changing the beginning of function AddSubjectAltNames.
I've changed
    char *names = PORT_Strdup(constNames);
to
    char *names = NULL;
    
    if (constNames)
	names = PORT_Strdup(constNames);
  
With that change, we no longer crash, however, the certutil command fails with an error message.

In order to see the failure, use an existing tests_results output, go to the "eve" subdirectory, and run the following command:

certutil -C -c TestCA -m 2060 -v 60 -d ../CA -i req -o Eve.cert -f ../tests.pw -7 eve,eve,beve

Without this patch, NSS succeeds.

With the patch applied, certutil prints:

certutil: Problem creating SubjectAltName extension: Certificate extension not found.
certutil: unable to create cert (Certificate extension not found.)

Comment 14 Kai Engert (:kaie) (inactive account) 2013-04-27 16:40:45 UTC
Created attachment 740860 [details]
patch v4 (on top of NSS 3.14.3)

> certutil: Problem creating SubjectAltName extension: Certificate extension
> not found.
> certutil: unable to create cert (Certificate extension not found.)

I was able to fix this problem, too.

This section in AddExtensions:
  if (emailAddrs || dnsNames) {
     ...
     rv = AddEmailSubjectAlt(arena, &namelist, emailAddrs);
     rv |= AddDNSSubjectAlt(arena, &namelist, dnsNames);
     ...
  }

must be changed, because both functions end up calling AddSubjectAltNames, into which you have introduced a new failure scenario. In the above sequence of calls, any of emailAddrs or dnsNames could be NULL, which now causes AddSubjectAltNames to fail, instead of being a no-op.

I replaced above section with:

    rv = SECSuccess;
    
    if (emailAddrs) {
	rv |= AddEmailSubjectAlt(arena, &namelist, emailAddrs);
    }

    if (dnsNames) {
	rv |= AddDNSSubjectAlt(arena, &namelist, dnsNames);
    }

Comment 15 Kai Engert (:kaie) (inactive account) 2013-04-27 17:16:20 UTC
This scratch build with patch v4 succeeded and passed the test suite:
https://brewweb.devel.redhat.com/taskinfo?taskID=5697441

Dmitri, could you please test it on a RHEL 6 system?

Bob, does it make sense to clarify, using which command line syntax the enhanced certutil can implement the feature that Dmitri has asked for?

Comment 16 Kai Engert (:kaie) (inactive account) 2013-04-27 20:07:47 UTC
Created attachment 740894 [details]
patch v4 (for NSS 3.15)

Comment 17 Kai Engert (:kaie) (inactive account) 2013-04-27 20:28:04 UTC
I think the original request could also get some clarification.
It would be good to make the list of attributes that cannot currently be created with certutil.

Looking at the link given in the initial comment:
- it apparently asks for flexible subject-alt-names,
  which Bob has implemented with the patch
- it also seems to require an extended-key-usage attribute
  with an arbitrary OID value. I don't know if this is possible yet.

Anything else that I missed?

Comment 18 Rob Crittenden 2013-04-29 13:27:01 UTC
This is OpenSSL template we use, named reqcfg:

[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
attributes         = req_attributes
prompt             = no
output_password    = $PASSWORD

[ req_distinguished_name ]
$SUBJBASE
$CERTNAME

[ req_attributes ]
challengePassword = A challenge password

$SUBJBASE is something like O=EXAMPLE.COM
$CERTNAME is something like CN=ipa.example.com

/usr/bin/openssl req -new -config reqcfg -subj CN=ipa.example.com/O=EXAMPLE.COM -key key_fname -out kdc.req

Comment 19 Nalin Dahyabhai 2013-04-29 15:51:06 UTC
Okay, let me try to clarify what we're trying to get into certificates.

In RFC4556, a KDC certificate is, ideally, identified by a couple of things.  First there's the id-pkinit-KPKdc EKU value (1.3.6.1.5.2.3.5), and second there's the principal name.  The principal name (marked by the OID 1.3.6.1.5.2.2) is a DER structure, so the patch's current expectation (assuming I'm reading it right) that the value being passed in is a printable string isn't going to work dependably.

Client certificates carry the id-pkinit-KPClientAuth EKU value (1.3.6.1.5.2.3.4), but IPA doesn't issue them yet.

Certificates you'll find on a smart card often have the Microsoft KP SmartCard Logon EKU (1.3.6.1.4.1.311.20.2.2), and format the principal name as a DER UTF8 String marked with OID 1.3.6.1.4.1.311.20.2.3 (Microsoft NT Principal Name), instead of what RFC 4556 specifies.

So while being able to add arbitrary EKU values would be nice, for our purposes we're only interested in PKINIT KDC (1.3.6.1.5.2.3.5), PKINIT Client (1.3.6.1.5.2.3.4), and Microsoft KP SmartCard Logon (1.3.6.1.4.1.311.20.2.2).

Anyway, I installed the scratch build and ran certutil like so:
  certutil -S -d /tmp -n KDC --extSAN other:1.3.6.1.5.2.2\;krbtgt/EXAMPLE.COM -t ,, -s cn=KDC -x -6

The resulting certificate didn't appear to have an subjectAltName extension in it:
-----BEGIN CERTIFICATE-----
MIIBozCCAQygAwIBAgIFAJtwIlswDQYJKoZIhvcNAQEFBQAwDjEMMAoGA1UEAxMD
S0RDMB4XDTEzMDQyOTE0NTUyNVoXDTEzMDcyOTE0NTUyNVowDjEMMAoGA1UEAxMD
S0RDMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjulMteU/IMcGXaokPMA/M
/kkR2tGthGGpYadsq2Bg+/BkfP3vbYe8AjLF2ENPJumq54HRKlcOT4ndhfhlEIVd
a4p+fpPzkSbWkgnU8+nCG6EllGpYas/LcsRRABiu0SQaYuFR23Eu1ERoIrNqqR0c
OiJMeobMU1w3g6BO4sAkgwIDAQABow0wCzAJBgNVHSUEAjAAMA0GCSqGSIb3DQEB
BQUAA4GBAHLtqGAjL+PJVlHtCFsuLb/gfFf1ljQJzI9CJDwcKDBGt0XWbTxnhkeM
HMtfSeIoGebeDyVyIdyM1Qxwva2QNyiC4LQ90HRxTuMgoBBaO73UMxotE1W8No/l
IEETuWZ8Q59HIwRVYEImM6aeVPhJu9MDBOs6ZwaDKisEdOJTSOCq
-----END CERTIFICATE-----

Hopefully I was just invoking it incorrectly.  Do you have an example of how the --extSAN option is expected to be used?

Comment 20 Kai Engert (:kaie) (inactive account) 2014-02-10 12:39:39 UTC
Rob, Nalin, thank you for the additional details.

There are several issues with the attached patch. I confirm the (apparently untested) patch doesn't yet create an "other" SAN. (There was a typo which lead to an incorrect variable being used, thus it had passed compiling, but resulted in in correct behaviour. Also, the code path for actually adding the extension wasn't reached.)

Still, with the above issues fixed, the result is still incorrect. When dumping a certificate created by the patch, it results in an error message, because of an invalid DER data sequence.

The current patch assumes that the data part of the otherName can be any value, and it simply adds the given string. But in my understanding that's wrong - the data part of otherName still must be a valid encoded DER sequence.

The patch assumes that it's possible to have a general purpose implementation for adding otherName.

I think that's insufficient. It's necessary to know/implement the structure definition of each otherName that we want to implement.

I searched around, and I found an example certificate at
  http://ftp.samba.org/pub/pub/unpacked/lorikeet-heimdal/lib/hx509/data/kdc.crt
which contains:
379  72:         SEQUENCE {
381   3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
386  65:           OCTET STRING, encapsulates {
388  63:             SEQUENCE {
390  61:               [0] {
392   6:                 OBJECT IDENTIFIER '1 3 6 1 5 2 2'
400  51:                 [0] {
402  49:                   SEQUENCE {
404  13:                     [0] {
406  11:                       GeneralString 'TEST.H5L.SE'
       :                       }
419  32:                     [1] {
421  30:                       SEQUENCE {
423   3:                         [0] {
425   1:                           INTEGER 1
       :                           }
428  23:                         [1] {
430  21:                           SEQUENCE {
432   6:                             GeneralString 'krbtgt'
440  11:                             GeneralString 'TEST.H5L.SE'
       :                             }
       :                           }
       :                         }
       :                       }
       :                     }
       :                   }
       :                 }
       :               }
       :             }

while our current (fixed) patch produces:
265  51:         SEQUENCE {
267   3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
272  44:           OCTET STRING, encapsulates {
274  42:             SEQUENCE {
276  40:               [0] {
278   6:                 OBJECT IDENTIFIER '1 3 6 1 5 2 2'
286  30:                 [0] {
288 114:                   [APPLICATION 11] {
290 116:                     [APPLICATION 2] {
292 116:                       [APPLICATION 7] {
294  69:                         Unknown (Reserved) {
296  65:                           [APPLICATION 24]
       :                   'MPLE.COM...U.%..0...+.......0...*.H'
       :                   '............ &...'
       :                   Error: IA5String contains illegal character(s).
363   4:                           Unknown (Reserved)
       :                             Unrecognised primitive, hex value is: 51 B8 40 7D
Error: Inconsistent object length, 4 bytes difference.
       :                           }


I further searched for the definition of this otherName. From
http://www.h5l.org/manual/HEAD/info/heimdal/Setting-up-PK_002dINIT.html :

   The data part of the OtherName is filled with the following DER 
   encoded ASN.1 structure:

            KRB5PrincipalName ::= SEQUENCE {
              realm [0] Realm,
              principalName [1] PrincipalName
            }

   where Realm and PrincipalName is defined by the Kerberos 
   ASN.1 specification.


from https://cwiki.apache.org/confluence/display/DIRxPMGT/Kerberos+review

       KerberosString = GeneralString = (IA5String)

       Realm = KerberosString


from https://cwiki.apache.org/confluence/display/DIRxPMGT/Kerberos+PrincipalName

       PrincipalName   ::= SEQUENCE {
               name-type       [0] Int32,
               name-string     [1] SEQUENCE OF KerberosString
       }

     name-type 1 = Just the name of the principal as in DCE, or for users


This means, if we want to teach certutil how to encode this extension, we'll need a new option that takes parameters:
- realm (string)
- name-type (number. e.g. 1)
- sequence of name-strings (e.g. principal, realm)


I believe most of the code in this patch is useful in general and should be added, but it isn't solving the issue here. We might consider to remove support for the otherName type from this patch, it seems to me it's not helpful, as we don't have a generic way to dynamically describe the respectively required internal structure.


So, we can either implement a hardcoded new option for certutil that implements the PKINIT/KDC extension described here, or we can make use of a new general mechanism to embed externally created extensions, which I've started to work on and described at https://bugzilla.mozilla.org/show_bug.cgi?id=969822

Comment 21 Kai Engert (:kaie) (inactive account) 2014-02-10 16:07:56 UTC
Created attachment 861478 [details]
python script that uses pyasn1 to encode a raw DER pkinit-subject-alt-name extension

This script creates the extension you're looking for and writes it to a file. This is for demonstration purposes. For simplicity, the input values and output filename are fixed in the script.

The output file is a SUBSET of a certificate. The intention is to use it with certutil's upcoming new parameter --extGeneric

Comment 22 Kai Engert (:kaie) (inactive account) 2014-02-10 16:08:53 UTC
The dump of the output file created by the script is:

  0  87: SEQUENCE {
  2  85:   [0] {
  4   6:     OBJECT IDENTIFIER '1 3 6 1 5 2 2'
 12  75:     [0] {
 14  73:       SEQUENCE {
 16  25:         [0] {
 18  23:           GeneralString 'EXAMPLE.COM'
       :           }
 43  44:         [1] {
 45  42:           SEQUENCE {
 47   3:             [0] {
 49   1:               INTEGER 1
       :               }
 52  35:             [1] {
 54  33:               SEQUENCE {
 56   6:                 GeneralString 'krbtgt'
 64  23:                 GeneralString 'EXAMPLE.COM'
       :                 }
       :               }
       :             }
       :           }
       :         }
       :       }
       :     }
       :   }

Comment 23 Kai Engert (:kaie) (inactive account) 2014-02-10 16:10:55 UTC
Created attachment 861481 [details]
experimental patch 6

This is a work-in-progress patch against NSS, which also contains some unrelated changes, which adds the --extGeneric feature to certutil.

Comment 24 Kai Engert (:kaie) (inactive account) 2014-02-10 16:13:17 UTC
Created attachment 861482 [details]
binary extension file created by the python script

Comment 25 Kai Engert (:kaie) (inactive account) 2014-02-10 16:21:20 UTC
Created attachment 861486 [details]
experimental patch v7

Comment 26 Kai Engert (:kaie) (inactive account) 2014-02-10 16:26:02 UTC
Using the attached binary file, and a certutil build with patch v7, use the following command to create a cert:

certutil -d sql:$PWD -S -n KDC -t ,, -s cn=KDC -x \
  --extGeneric 2.5.29.17:not-critical:$PWD/pkinit.san-extension.der 

Result is a certificate with the following section:

certutil -d sql:$PWD -L -n KDC -r | pp -t certificate
...
    Name: Certificate Subject Alt Name
    Other Name: Sequence {
	[0]: {
	    1b:17:45:58:41:4d:50:4c:45:2e:43:4f:4d:40:45:58:
	    41:4d:50:4c:45:2e:43:4f:4d
	}
	[1]: {
	    Sequence {
		[0]: {
		    1 (0x1)
		}
		[1]: {
		    Sequence {
			1b:06:6b:72:62:74:67:74
			1b:17:45:58:41:4d:50:4c:45:2e:43:4f:4d:40:45:
			58:41:4d:50:4c:45:2e:43:4f:4d
		    }
		}
	    }
	}
    }
	OID: OID.1.3.6.1.5.2.2
...


You can use the new command line option --dump-ext-val to extract the binary contents:

certutil -d sql:$PWD -L -n KDC --dump-ext-val 2.5.29.17 | dumpasn1 -

  0  87: SEQUENCE {
  2  85:   [0] {
  4   6:     OBJECT IDENTIFIER '1 3 6 1 5 2 2'
 12  75:     [0] {
 14  73:       SEQUENCE {
 16  25:         [0] {
 18  23:           GeneralString 'EXAMPLE.COM'
       :           }
 43  44:         [1] {
 45  42:           SEQUENCE {
 47   3:             [0] {
 49   1:               INTEGER 1
       :               }
 52  35:             [1] {
 54  33:               SEQUENCE {
 56   6:                 GeneralString 'krbtgt'
 64  23:                 GeneralString 'EXAMPLE.COM'
       :                 }
       :               }
       :             }
       :           }
       :         }
       :       }
       :     }
       :   }

Comment 31 Nalin Dahyabhai 2014-04-24 17:34:45 UTC
I think our focus has moved from using certutil to generate certificates for IPA to having Dogtag issue them instead.  Rob, can you confirm my reading of that, as of https://fedorahosted.org/freeipa/ticket/3494 being fixed?

Anyway, looking at the certutil parts of attachment #8394996 posted to Mozilla's #970539, attempting to pass in a principal name using the 'other' subjectAltName type and the '--extSAN' option wouldn't currently work well because the principal name is encoded as a DER sequence, and certutil would appear to still be expecting a a NUL-terminated string.

Eschewing that and using '--extGeneric' to add a subjectAltName extension directly looks like it would allow us to provide Kerberos principal name values in either or both the RFC4556 format and the format Windows uses, so that's useful.

I think we'd still be missing the ability to add either the specific OID values from comment #19 and/or arbitrary ones, unless '--extGeneric' is meant to be used for that, too.

Comment 32 Kai Engert (:kaie) (inactive account) 2014-04-24 17:43:35 UTC
(In reply to Nalin Dahyabhai from comment #31)
> 
> I think we'd still be missing the ability to add either the specific OID
> values from comment #19 and/or arbitrary ones, unless '--extGeneric' is
> meant to be used for that, too.

Yes, it's meant to be used for that, too.
You would be able to add arbitrary ones, using a two step procedure.

You would use another tool, for example the script from attachment 861478 [details], that you can easily manipulate to contain any values you require, to create the binary representation of the extension and save it to a file.

Then you would use --extGeneric with that binary file together with all the other parameters for certutil that you require.

Comment 33 Rob Crittenden 2014-04-24 18:17:57 UTC
(In reply to Nalin Dahyabhai from comment #31)

Yes, the original reason for this BZ is a non-issue now that we have dropped support for the NSS command-line-based CA in IPA.

The spirit lives on though, to improve the certutil command line to be on-par with openssl.

Comment 34 Kai Engert (:kaie) (inactive account) 2014-04-29 20:50:58 UTC
So, can you please confirm that my description is seen as an enhancement that you will benefit from?

I need this confirmation from anyone to proceed with this work, or I'll stop it.

We don't have the resources to re-implement the full equivalent of the openssl parser, the combined offering here is a reasonable compromise that solves your problem with a reasonable amount of resources.

Comment 35 Nalin Dahyabhai 2014-05-01 22:22:01 UTC
(In reply to Kai Engert (:kaie) from comment #34)
> So, can you please confirm that my description is seen as an enhancement
> that you will benefit from?

I can't provide such confirmation -- the IPA feature which used certutil to issue certificates for IPA clients has been removed in favor of using Dogtag.

Comment 37 Kai Engert (:kaie) (inactive account) 2014-05-02 14:06:00 UTC
would you like to mark this bug as wontfix, if you don't need it any longer?

Comment 38 Elio Maldonado Batiz 2014-05-02 14:45:31 UTC
Closing it as won't fix because the requester no longer needs the enhancement.

Comment 39 Kai Engert (:kaie) (inactive account) 2014-05-29 21:44:22 UTC
FWIW, we've implemented the proposed solutions anyway.
They just landed upstream, and should be available with NSS 3.16.2


Note You need to log in before you can comment on or make changes to this bug.