Skip to content

Commit

Permalink
fix: CredentialStatusPolicy fails with NPE without credentialStatus (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
philpotisk committed Aug 1, 2023
2 parents 2d90242 + c7d220e commit 78a6a01
Showing 1 changed file with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,22 +50,22 @@ class ExpirationDateAfterPolicy : SimpleVerificationPolicy() {
class CredentialStatusPolicy : SimpleVerificationPolicy() {

override val description: String = "Verify by credential status"
override fun doVerify(vc: VerifiableCredential): VerificationPolicyResult = runCatching {
Klaxon().parse<CredentialStatusCredential>(vc.toJson())!!.credentialStatus!!.let { cs ->
RevocationClientService.check(vc).let {
if (!it.isRevoked) VerificationPolicyResult.success()
else failResult(it, cs)
}
}
}.getOrElse {
VerificationPolicyResult.failure(it)
override fun doVerify(vc: VerifiableCredential): VerificationPolicyResult {
val maybeCredentialStatus = Klaxon().parse<CredentialStatusCredential>(vc.toJson())!!.credentialStatus
return maybeCredentialStatus?.let { cs -> runCatching {
RevocationClientService.check(vc).let {
if (!it.isRevoked) VerificationPolicyResult.success()
else failResult(it, cs)
}
}.getOrElse { VerificationPolicyResult.failure(it) }
} ?: VerificationPolicyResult.success()
}

private fun failResult(status: RevocationStatus, cs: CredentialStatus) = when (status) {
is TokenRevocationStatus -> "CredentialStatus (type ${cs.type}) was REVOKED at timestamp ${status.timeOfRevocation} for id ${cs.id}."
else -> "CredentialStatus ${cs.type} was REVOKED for id ${cs.id}"
}.let {
VerificationPolicyResult.failure(IllegalArgumentException(it))
VerificationPolicyResult.failure(IllegalStateException(it))
}
}

Expand Down

0 comments on commit 78a6a01

Please sign in to comment.