mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-09-09 18:29:39 +02:00
Add documentation to PolicyAdapter
This commit is contained in:
parent
d955341231
commit
3c28660f26
1 changed files with 70 additions and 4 deletions
|
@ -9,8 +9,16 @@ import org.bouncycastle.openpgp.api.OpenPGPPolicy
|
||||||
import org.bouncycastle.openpgp.api.OpenPGPPolicy.OpenPGPNotationRegistry
|
import org.bouncycastle.openpgp.api.OpenPGPPolicy.OpenPGPNotationRegistry
|
||||||
import org.pgpainless.policy.Policy
|
import org.pgpainless.policy.Policy
|
||||||
|
|
||||||
|
/** Adapter class that adapts a PGPainless [Policy] object to Bouncy Castles [OpenPGPPolicy]. */
|
||||||
class PolicyAdapter(val policy: Policy = Policy.getInstance()) : OpenPGPPolicy {
|
class PolicyAdapter(val policy: Policy = Policy.getInstance()) : OpenPGPPolicy {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine, whether the hash algorithm of a document signature is acceptable.
|
||||||
|
*
|
||||||
|
* @param algorithmId hash algorithm ID
|
||||||
|
* @param signatureCreationTime optional signature creation time
|
||||||
|
* @return boolean indicating whether the hash algorithm is acceptable
|
||||||
|
*/
|
||||||
override fun isAcceptableDocumentSignatureHashAlgorithm(
|
override fun isAcceptableDocumentSignatureHashAlgorithm(
|
||||||
algorithmId: Int,
|
algorithmId: Int,
|
||||||
signatureCreationTime: Date?
|
signatureCreationTime: Date?
|
||||||
|
@ -21,6 +29,13 @@ class PolicyAdapter(val policy: Policy = Policy.getInstance()) : OpenPGPPolicy {
|
||||||
policy.dataSignatureHashAlgorithmPolicy.isAcceptable(algorithmId, signatureCreationTime)
|
policy.dataSignatureHashAlgorithmPolicy.isAcceptable(algorithmId, signatureCreationTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine, whether the hash algorithm of a revocation signature is acceptable.
|
||||||
|
*
|
||||||
|
* @param algorithmId hash algorithm ID
|
||||||
|
* @param revocationCreationTime optional revocation signature creation time
|
||||||
|
* @return boolean indicating whether the hash algorithm is acceptable
|
||||||
|
*/
|
||||||
override fun isAcceptableRevocationSignatureHashAlgorithm(
|
override fun isAcceptableRevocationSignatureHashAlgorithm(
|
||||||
algorithmId: Int,
|
algorithmId: Int,
|
||||||
revocationCreationTime: Date?
|
revocationCreationTime: Date?
|
||||||
|
@ -32,6 +47,13 @@ class PolicyAdapter(val policy: Policy = Policy.getInstance()) : OpenPGPPolicy {
|
||||||
algorithmId, revocationCreationTime)
|
algorithmId, revocationCreationTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine, whether the hash algorithm of a certification signature is acceptable.
|
||||||
|
*
|
||||||
|
* @param algorithmId hash algorithm ID
|
||||||
|
* @param certificationCreationTime optional certification signature creation time
|
||||||
|
* @return boolean indicating whether the hash algorithm is acceptable
|
||||||
|
*/
|
||||||
override fun isAcceptableCertificationSignatureHashAlgorithm(
|
override fun isAcceptableCertificationSignatureHashAlgorithm(
|
||||||
algorithmId: Int,
|
algorithmId: Int,
|
||||||
certificationCreationTime: Date?
|
certificationCreationTime: Date?
|
||||||
|
@ -43,32 +65,76 @@ class PolicyAdapter(val policy: Policy = Policy.getInstance()) : OpenPGPPolicy {
|
||||||
algorithmId, certificationCreationTime)
|
algorithmId, certificationCreationTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the default hash algorithm for certification signatures. This is used as fallback if
|
||||||
|
* not suitable hash algorithm can be negotiated.
|
||||||
|
*
|
||||||
|
* @return default certification signature hash algorithm
|
||||||
|
*/
|
||||||
override fun getDefaultCertificationSignatureHashAlgorithm(): Int {
|
override fun getDefaultCertificationSignatureHashAlgorithm(): Int {
|
||||||
return policy.certificationSignatureHashAlgorithmPolicy.defaultHashAlgorithm.algorithmId
|
return policy.certificationSignatureHashAlgorithmPolicy.defaultHashAlgorithm.algorithmId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the default hash algorithm for document signatures. This is used as fallback if not
|
||||||
|
* suitable hash algorithm can be negotiated.
|
||||||
|
*
|
||||||
|
* @return default document signature hash algorithm
|
||||||
|
*/
|
||||||
override fun getDefaultDocumentSignatureHashAlgorithm(): Int {
|
override fun getDefaultDocumentSignatureHashAlgorithm(): Int {
|
||||||
return policy.dataSignatureHashAlgorithmPolicy.defaultHashAlgorithm.algorithmId
|
return policy.dataSignatureHashAlgorithmPolicy.defaultHashAlgorithm.algorithmId
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isAcceptableSymmetricKeyAlgorithm(p0: Int): Boolean {
|
/**
|
||||||
return policy.symmetricKeyEncryptionAlgorithmPolicy.isAcceptable(p0)
|
* Determine, whether the given symmetric encryption algorithm is acceptable.
|
||||||
|
*
|
||||||
|
* @param algorithmId symmetric encryption algorithm ID
|
||||||
|
* @return boolean indicating, whether the encryption algorithm is acceptable
|
||||||
|
*/
|
||||||
|
override fun isAcceptableSymmetricKeyAlgorithm(algorithmId: Int): Boolean {
|
||||||
|
return policy.symmetricKeyEncryptionAlgorithmPolicy.isAcceptable(algorithmId)
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Return the default symmetric encryption algorithm. This algorithm is used as fallback to
|
||||||
|
* encrypt messages if no suitable symmetric encryption algorithm can be negotiated.
|
||||||
|
*
|
||||||
|
* @return default symmetric encryption algorithm
|
||||||
|
*/
|
||||||
override fun getDefaultSymmetricKeyAlgorithm(): Int {
|
override fun getDefaultSymmetricKeyAlgorithm(): Int {
|
||||||
return policy.symmetricKeyEncryptionAlgorithmPolicy.defaultSymmetricKeyAlgorithm.algorithmId
|
return policy.symmetricKeyEncryptionAlgorithmPolicy.defaultSymmetricKeyAlgorithm.algorithmId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine, whether the [bitStrength] of an asymmetric public key of the given algorithm is
|
||||||
|
* strong enough.
|
||||||
|
*
|
||||||
|
* @param algorithmId public key algorithm ID
|
||||||
|
* @param bitStrength strength of the key in bits
|
||||||
|
* @return boolean indicating whether the bit strength is sufficient
|
||||||
|
*/
|
||||||
override fun isAcceptablePublicKeyStrength(algorithmId: Int, bitStrength: Int): Boolean {
|
override fun isAcceptablePublicKeyStrength(algorithmId: Int, bitStrength: Int): Boolean {
|
||||||
return policy.publicKeyAlgorithmPolicy.isAcceptable(algorithmId, bitStrength)
|
return policy.publicKeyAlgorithmPolicy.isAcceptable(algorithmId, bitStrength)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getNotationRegistry(): OpenPGPPolicy.OpenPGPNotationRegistry {
|
/**
|
||||||
|
* Adapt PGPainless' [org.pgpainless.util.NotationRegistry] to Bouncy Castles
|
||||||
|
* [OpenPGPNotationRegistry].
|
||||||
|
*
|
||||||
|
* @return adapted [OpenPGPNotationRegistry]
|
||||||
|
*/
|
||||||
|
override fun getNotationRegistry(): OpenPGPNotationRegistry {
|
||||||
return object : OpenPGPNotationRegistry() {
|
return object : OpenPGPNotationRegistry() {
|
||||||
|
|
||||||
|
/** Determine, whether the given [notationName] is known by the registry. */
|
||||||
override fun isNotationKnown(notationName: String?): Boolean {
|
override fun isNotationKnown(notationName: String?): Boolean {
|
||||||
return notationName?.let { policy.notationRegistry.isKnownNotation(it) } ?: false
|
return notationName?.let { policy.notationRegistry.isKnownNotation(it) } ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a known notation name to the registry.
|
||||||
|
*
|
||||||
|
* @param notationName notation name
|
||||||
|
*/
|
||||||
override fun addKnownNotation(notationName: String?) {
|
override fun addKnownNotation(notationName: String?) {
|
||||||
notationName?.let { policy.notationRegistry.addKnownNotation(it) }
|
notationName?.let { policy.notationRegistry.addKnownNotation(it) }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue