mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-12-12 23:31:08 +01:00
Ignore certificate signatures of unknown type
This commit is contained in:
parent
89790a0a94
commit
b99822f405
8 changed files with 33 additions and 17 deletions
|
|
@ -170,7 +170,8 @@ enum class SignatureType(val code: Int) {
|
|||
|
||||
@JvmStatic
|
||||
fun isRevocationSignature(signatureType: Int): Boolean {
|
||||
return isRevocationSignature(valueOf(signatureType))
|
||||
val sigType = fromCode(signatureType)
|
||||
return sigType?.let { isRevocationSignature(it) } ?: false
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
|
|
|||
|
|
@ -77,7 +77,8 @@ fun PGPSignature.wasIssuedBy(key: PGPPublicKey): Boolean = wasIssuedBy(OpenPgpFi
|
|||
/** Return true, if this signature is a hard revocation. */
|
||||
val PGPSignature.isHardRevocation
|
||||
get() =
|
||||
when (SignatureType.requireFromCode(signatureType)) {
|
||||
when (SignatureType.fromCode(signatureType)) {
|
||||
null -> false
|
||||
SignatureType.KEY_REVOCATION,
|
||||
SignatureType.SUBKEY_REVOCATION,
|
||||
SignatureType.CERTIFICATION_REVOCATION -> {
|
||||
|
|
@ -104,4 +105,4 @@ val PGPSignature.signatureHashAlgorithm: HashAlgorithm
|
|||
get() = HashAlgorithm.requireFromId(hashAlgorithm)
|
||||
|
||||
fun PGPSignature.isOfType(type: SignatureType): Boolean =
|
||||
SignatureType.requireFromCode(signatureType) == type
|
||||
SignatureType.fromCode(signatureType) == type
|
||||
|
|
|
|||
|
|
@ -235,7 +235,8 @@ abstract class SignatureValidator {
|
|||
signature: PGPSignature,
|
||||
policy: Policy
|
||||
): Policy.HashAlgorithmPolicy {
|
||||
return when (SignatureType.requireFromCode(signature.signatureType)) {
|
||||
return when (SignatureType.fromCode(signature.signatureType)) {
|
||||
null -> policy.certificationSignatureHashAlgorithmPolicy
|
||||
SignatureType.CERTIFICATION_REVOCATION,
|
||||
SignatureType.KEY_REVOCATION,
|
||||
SignatureType.SUBKEY_REVOCATION -> policy.revocationSignatureHashAlgorithmPolicy
|
||||
|
|
@ -598,7 +599,8 @@ abstract class SignatureValidator {
|
|||
if (signatureType.none { signature.isOfType(it) }) {
|
||||
throw SignatureValidationException(
|
||||
"Signature is of type" +
|
||||
" ${SignatureType.requireFromCode(signature.signatureType)}, " +
|
||||
" ${SignatureType.fromCode(signature.signatureType) ?:
|
||||
("0x" + signature.signatureType.toString(16))}, " +
|
||||
"while only ${signatureType.contentToString()} are allowed here.")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,12 +59,13 @@ class SignatureVerifier {
|
|||
policy: Policy,
|
||||
referenceTime: Date
|
||||
): Boolean {
|
||||
val type = SignatureType.requireFromCode(signature.signatureType)
|
||||
val type = SignatureType.fromCode(signature.signatureType)
|
||||
return when (type) {
|
||||
SignatureType.GENERIC_CERTIFICATION,
|
||||
SignatureType.NO_CERTIFICATION,
|
||||
SignatureType.CASUAL_CERTIFICATION,
|
||||
SignatureType.POSITIVE_CERTIFICATION ->
|
||||
SignatureType.POSITIVE_CERTIFICATION,
|
||||
null ->
|
||||
verifyUserIdCertification(
|
||||
userId, signature, signingKey, keyWithUserId, policy, referenceTime)
|
||||
SignatureType.CERTIFICATION_REVOCATION ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue