[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Problem with validateChkCRL. (Bug?)
William,
You are correct, the call to validateChkCRL() is incorrect. I'm not sure if
a fix for this bug will be incorporated into CML v1.9.2 or not, as its
release is imminent. In v2.0, this function and the other CRL processing
functions were re-written.
- Rich
---------------------------
Richard E. Nicholas
Principal Secure Systems Engineer
Getronics Government Solutions, LLC
Richard.Nicholas@xxxxxxxxxxxxxxxx
(301) 939-2722
> -----Original Message-----
> From: William Adams [mailto:William.Adams@xxxxxxxxxxx]
> Sent: Wednesday, July 11, 2001 4:40 AM
> To: CML List (E-mail)
> Subject: Problem with validateChkCRL. (Bug?)
>
>
>
> I am trying to use CM_RetrieveKey to obtain a public key and
> validate a
> certificate. I am using a certificate that I know has been
> revoked, and upon
> calling CM_RequestCRLs and CM_DecodeCRL I can see that the
> CRL does revoke
> the certificate. However CM_RetrieveKey would always return
> CM_NO_ERROR.
>
> I stepped through CM_RetrieveKey to find the problem and it
> occurred in
> validateChkCRL. The revoked certificate contains a CRL
> Distribution point
> that points to the CRL. During the call to CMU_Get_DistPts
> after the CRL(s)
> have been retrieved and the best CRL chosen then the
> following call is made;
>
> validateChkCRL ( sessionID,
> cert_type,
> my_crl,
> new_dist_pts->reasons,
> FALSE,
> work_cert,
> NULL );
>
> The last parameter passed in to validateChkCRL is the
> certIssuer. In this
> function there is a check to make sure that the CRL came from
> the correct
> place by comparing the issuing distribution point of the CRL with the
> certissuer. If the issDistPoint name is of type
> CM_DIST_PT_FULL_NAME and is
> a CM_X500_NAME then the following code is executed;
>
> if (genNames->gen_name.flag == CM_X500_NAME)
> {
> if (CMU_DNcmp(certIssuer, genNames->gen_name.name.dn) == 0)
> {
> nameFound = TRUE;
> break;
> }
> }
>
> However since NULL was passed in as cert_issuer then this
> will always fail,
> thus the CRL will be regarded as invalid (returns
> CMI_DP_CRL_NAME_MISMATCH)
> and not used to check the revocation status of the
> certificate. To fix this
> I think you would pass in the name of the CRL distribution
> point on the
> certificate, in this specific case the validateChkCRL call would be;
>
> validateChkCRL ( sessionID,
> cert_type,
> my_crl,
> new_dist_pts->reasons,
> FALSE,
> work_cert,
>
> new_dist_pts->dpName.name.full->gen_name.name.dn );
>
> Obviously you would want to perform some kind of check so
> that the correct
> dpName.name is passed in depending on dpName.flag. Is this a
> bug or have I
> misunderstood the processes involved?
>
> William Adams
> Software Engineer
> Nexor.
> ================
> Tel: +44 115 9535536
> Fax: +44 115 9520519
>
>
>