Here is an attempt based on RFC 3280.  It seems that the designers
of the EKU extension did not foresee any user-signatures except for e-mail.
In a revised RFC 3280 I believe the "id-kp-emailProtection" text could be
a bit more generalized.  Adding a new OID would only make things worse.


No KU or EKU
-----------------
An "all-round" certificate => included


KU only
---------
nonRepudiation   => included

digitalSignature
Now it gets trickier.  If there is a "matching"
certificate with nonRepudiation set, the digitalSignature-
only certificate should presumably NOT be included.
Question: what is "matching" certificate?


EKU only (very suspect cert)
----------
id-kp-emailProtection => included


KU + EKU
------------
id-kp-emailProtection + KU rules => included

or maybe ignoring EKU and use KU rules would be
better since e-mailProtection is a misnomer?


In case there is no working algorithm, We will have to add a request
flag where you can specify "nonConforming" or similar.

thanx
Anders Rundgren

----- Original Message ----- 
From: "Jean-Marc Desperrier" <[EMAIL PROTECTED]>
Newsgroups: mozilla.dev.tech.crypto
To: <dev-tech-crypto@lists.mozilla.org>
Sent: Tuesday, April 11, 2006 21:09
Subject: Re: certificate requirements for crypto.signText


Nelson B wrote:
> Jean-Marc Desperrier wrote:
>> The trouble is that certUsageEmailSigner in it's current implementation
>> does indeed look for other things than non-repudiation. It checks that
>> the certificate is valid to sign mail, ie if it has an Extended key
>> usage it must include id-kp-emailProtection and the presence or not of
>> an email address interferes also. So some certificate that are perfectly
>> valid to sign data do not get certUsageEmailSigner
> 
> certUsageEmailSigner is merely an enumerated value.
> In what function are you saying that this value has the behaviors you
> describe?

CERT_KeyUsageAndTypeForCertUsage transcodes that value to a 
requiredKeyUsage *and* a requiredCertType of NS_CERT_TYPE_EMAIL :
http://lxr.mozilla.org/security/ident?i=CERT_KeyUsageAndTypeForCertUsage

What I'm talking about comes from that requiredCertType that will be 
compared to cert->nsCertType;

nsCertType is set by cert_GetCertType.
http://lxr.mozilla.org/security/ident?i=cert_GetCertType

The restrictions I talked about are inside the code for cert_GetCertType 
with funny things like this excerpt :

569    /*
570    * for this release, we will allow SSL certs with an email address
571    * to be used for email
572    */
573    if ( ( nsCertType & NS_CERT_TYPE_SSL_CLIENT ) &&
574        cert->emailAddr && cert->emailAddr[0]) {
575        nsCertType |= NS_CERT_TYPE_EMAIL;
576    }

Blame won't tell exactly what this release was because it's earlier than 
the date the code went public in 2000-03-31.

Note that I'm all for NSS being really tolerant in what it thinks is an 
acceptable certificate when selected with certUsageEmailSigner, or else 
we'll really need another, more tolerant, flag.
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to