If I remove cert_pi_certList from the array, invalid_args error turns into untrusted_issuer error (-8172). So, it seems that even if I don't add the intermediate CA certificate in certList, the lookup in cert DB is fine, but it doesn't manage to validate the CA certificate. Indeed, if I give only the CA certificate as input, I got inadequate_cert_type error (-8101). Same result by removing also cert_pi_useAIACertFetch. I try to change the certificate usages parameter, but the error varies from invalid_args to inadeauqte_key_usage(-8102).
I know that the certificate chain is correct, I have already used it as a testing input for other libraries, and I know I have a trust anchor for the CA certificate in my system root certificates. I think that the issue is the error inadequate_cert_type on the CA certificate, but I have no idea about what can cause this error. Moreover, I got invalid_args error even passing trustAnchors instead of cert_pi_certList. So, I suppose there are some issues with the processing made by Cert_PKIXVerifyCert function. Thank You, Nicholas 2016-02-06 2:42 GMT+01:00 Julien Pierre <julien.pie...@oracle.com>: > Nicholas, > > It looks like > > cert_pi_certList > > is indeed never processed. So that seems to be unimplemented. I'm not > quite sure why that is. It's been a long type since I worked on NSS/libpkix. > What happens if you remove that parameter from your list ? > > Once the certs are decoded, presumably in your parse_cert function, they > will be available in the NSS softoken as temp certs, and will be searchable > and findable by CERT_PKIXVerifyCert . > The chain building should rebuild the chain (or possibly another chain). > If you are using AIA fetch with cert_pi_useAIACertFetch, then presumably, > your chain is possibly incomplete. > Thus, you don't really want to use cert_pi_certList anyway, as that would > imply no more building. > > I think if you remove the cert_pi_certList, and if you have a trust anchor > in your softoken cert DB, then the rebuilding+validation should work. > > Julien > > On 2/5/2016 06:03, Nicholas Mainardi wrote: > >> Hello, >> >> Thank you for your reply. I looked for the function you mentioned and I >> looked at the usage examples. I edit <http://pastebin.com/4BQsinXM> my >> previous code to use the function, but I'm getting error invalid_args >> (-8187). After some trials, I figure out it's caused by the >> cert_pi_certList type in input parameter. Looking at how these parameters >> are processed, I got to this function >> < >> http://mxr.mozilla.org/security/source/security/nss/lib/certhigh/certvfypkix.c#1509 >> >, >> which contains a switch on the param type. However, it doesn't exist a >> case >> for every types listed here >> < >> http://mxr.mozilla.org/security/source/security/nss/lib/certdb/certt.h#898 >> >, >> >> and the default case raise invalid_args. Isn't this a bug of this >> function? >> >> However, I tried also with cert_pi_trustAnchors type (which has a case in >> the function), but I got the same error. And also if I change the >> certificate usage parameter, I got this error. So, is there something >> wrong >> in the code I have written? >> >> Thanks, >> >> Nicholas >> >> 2016-02-04 1:14 GMT+01:00 Julien Pierre <julien.pie...@oracle.com>: >> >> CERT_VerifyCertNow is a legacy API that does not support the full set of >>> RFC 3280/5280 features. >>> To support things like policy checks, you can use libpkix . >>> Look for CERT_PKIXVerifyCert . There are examples of usage in the NSS >>> test >>> programs vfychain and tstclnt . >>> The library supports many more options than may be tested, though. >>> >>> Julien >>> >>> On 2/3/2016 08:37, Nicholas Mainardi wrote: >>> >>> Hello, >>>> >>>> I'm comparing different libraries to verify X509 certificate chains. I >>>> had >>>> some issues to find how to use NSS to perform this task. At the end, I >>>> managed to get a working code with one certificate chain. You can find >>>> the >>>> code in this question >>>> < >>>> >>>> http://stackoverflow.com/questions/34982796/how-to-parse-and-validate-certificates-with-nss >>>> I asked on stack overflow. I would like to know if the code I wrote is >>>> the >>>> correct way to verify a certificate chain using NSS, and if there are >>>> other >>>> parameters to customize the verify algorithm which can be set (i.e. a >>>> flag >>>> to enable policy check etc.). If the code is correct, I suggest it could >>>> be >>>> added to NSS examples on the documentation. >>>> >>>> Thank You, >>>> >>>> Nicholas >>>> >>>> -- >>> 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 > -- dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto