Parent PRD
#4079
What to build
Extend the did:x509 resolver to perform CRL checking during DID resolution and annotate the resulting DID document's verification methods with expires and revoked metadata.
- Inject
pki.Validator into the did:x509 resolver via constructor injection (NewResolver(pkiValidator))
- Update
vdr.go to pass pkiValidator when constructing the resolver
- In
Resolve(), after chain validation succeeds:
- Perform CRL check via
pkiValidator.CheckCRL(chain)
- If a certificate is revoked, set
Revoked on the verification method with the revocation date
- Set
Expires on the verification method from the leaf certificate's notAfter date
- Remove the CRL check and cert-time validation from
X509CredentialValidator (these are now handled by the resolver)
- Remove the ad-hoc resolver instantiation in
X509CredentialValidator (didx509.NewResolver() at validator.go:276)
This makes CRL and cert-time information available for any credential with a did:x509 issuer, regardless of credential type (PatientEnrollmentCredential, HealthcareProfessionalDelegationCredential, HealthcareProviderCredential, etc.).
See PRD #4079 Part A and PSA 10.4.2 / 10.4.3 for full context.
Acceptance criteria
Blocked by
User stories addressed
- User story 1: PatientEnrollmentCredentials get CRL checks
- User story 4: CRL checks at the key resolution layer for all did:x509 credentials
- User story 5: trust anchor validation at DID resolution layer
- User story 6: key validity information available for time-based checks
- User story 7: existing X509Credential behavior preserved
Parent PRD
#4079
What to build
Extend the did:x509 resolver to perform CRL checking during DID resolution and annotate the resulting DID document's verification methods with
expiresandrevokedmetadata.pki.Validatorinto the did:x509 resolver via constructor injection (NewResolver(pkiValidator))vdr.goto passpkiValidatorwhen constructing the resolverResolve(), after chain validation succeeds:pkiValidator.CheckCRL(chain)Revokedon the verification method with the revocation dateExpireson the verification method from the leaf certificate'snotAfterdateX509CredentialValidator(these are now handled by the resolver)X509CredentialValidator(didx509.NewResolver()at validator.go:276)This makes CRL and cert-time information available for any credential with a did:x509 issuer, regardless of credential type (PatientEnrollmentCredential, HealthcareProfessionalDelegationCredential, HealthcareProviderCredential, etc.).
See PRD #4079 Part A and PSA 10.4.2 / 10.4.3 for full context.
Acceptance criteria
pki.Validatorvia constructor injectionResolve()after chain validationRevokedfield is set on the verification method when the certificate is on the CRLExpiresfield is set on the verification method from the leaf cert'snotAfterX509CredentialValidatorX509CredentialValidatoris removedRevokedset on the keyExpiresset fromnotAfterBlocked by
expires/revokedfields on VerificationMethod in go-did)User stories addressed