On Oct 19, 10:49 am, Brian Smith <bsm...@mozilla.com> wrote:
> I will try to help you if you can wrap the code below in a complete program 
> that I can compile and run using Visual Studio 2010.
>
> ----- Original Message -----
> From: "PeachUser" <anupama.jo...@gmail.com>
> To: dev-tech-cry...@lists.mozilla.org
> Sent: Tuesday, October 19, 2010 8:06:33 AM
> Subject: Re: problem Importing certificates in NSS db using Cert_importcerts -
>
> CAN Somebody please help me ???
> THanks
>
> On Oct 18, 12:32 pm, PeachUser <anupama.jo...@gmail.com> wrote:
> > I am implementing functionality  which needs to take trusted root
> > certs from user and use it to do SSl handshake.
> > I use CERT_ImportCert
> > I read a DER file get the data and length  , create  SECItem  and then
> > pass it to the CERt_importCerts.
> >  I am keeping  both the "keepcerts" and "isCA" flags true.
> > and I am also passing a nickname .
> >  But in the CertArray (return value) the cert does not seem to get the
> > nick name .
> > If I do certutil  -L , I do not see this cert there.
> > what am I doing wrong ? Pl. let me know. I have spent lot of days
> > debugging this but cant get anywhere.
> > Thanks in advance ..
> > Here is my code ...
> >      SECItem ** rawArray;
> >   CERTCertificate ** certArray = NULL;
> >         for(U32 i=0; i<m_certs.size(); i++){
>
> >               BYTE *buf = m_certs.get(i);
> >               U32 len = m_lenArr.get(i);
>
> >           SECItem      certItem ;
>
> >         certItem.data = buf;
> >         certItem.len = len;
> >         certItem.type = siDERCertBuffer;
> >           trustedCerts[i] = certItem;
>
> >         }
>
> >     PLAYEROUTPUT((" in Add trusted certs after getting certs in
> > trusted certs  -setServerRootCertificate\n"));
>
> >         rawArray = (SECItem **) PORT_Alloc(sizeof(SECItem *) *
> > (m_certs.size()));
> >     PLAYEROUTPUT((" in Add trusted certs -allocating memory -
> > setServerRootCertificate\n "));
> >         if(! rawArray) {
> >          PLAYEROUTPUT((" NO Raw Array \n"));
> >         }
> >     for(U32 i =0 ; i < m_certs.size() ; i++ ){
> >         rawArray[i] = &trustedCerts[i];
> >     }
> >     PLAYEROUTPUT((" in Add trusted certs - raw array populated -
> > setServerRootCertificate\n"));
> >     char  nickname [] = "UserRootCert";
> >     SECStatus rv =
> > CERT_ImportCerts(CERT_GetDefaultCertDB(),certUsageSSLServer,m_certs.size(),rawArray,&certArray,
> >                     PR_TRUE,PR_TRUE,nickname);
> >     if(rv != SECSuccess ){
> >         PLAYEROUTPUT((" unable to insert certificate in DB -
> > setServerRootCertificate\n "));
> >     }
> > else if(certArray == NULL ){
> >         PLAYEROUTPUT((" unable to insert certificate in DB certArray
> > is null -setServerRootCertificate\n "));
> >     }
> > else if( certArray[0] ==NULL){
> >         PLAYEROUTPUT((" unable to insert certificate in DB
> > certArray[0] is null -setServerRootCertificate\n "));
> >     }
>
> >     CERTCertTrust *trust = NULL;
> >     trust = (CERTCertTrust *)PORT_ZAlloc(sizeof(CERTCertTrust));
> >     char    trustsetting []= "c,c,c";
> >     rv = CERT_DecodeTrustString(trust, trustsetting);
> >         if (rv) {
> >             PLAYEROUTPUT(("unable to decode trust string"));
>
> >         }
>
> >     CERTCertificate *cert1 = NULL;
>
> >      for(U32 i=0; i< 1; i++){
> >         cert1 = certArray[i];
> >         rv = CERT_ChangeCertTrust(CERT_GetDefaultCertDB(), cert1,
> > trust);
> >         if (rv != SECSuccess) {
> >             PLAYEROUTPUT(("could not change trust on certificate"));
>
> >         }
> >     }
>
> --
> dev-tech-crypto mailing list
> dev-tech-cry...@lists.mozilla.orghttps://lists.mozilla.org/listinfo/dev-tech-crypto

I am using NSS on linux as a part  of a bigger project. To implement
similar functionality on windows I used windows system APIs. If you
have any working example pl. share with me.
Thanks
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to