mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-12-22 19:08:00 +01:00
Add syntactic sugar for SignatureSubpacketCallback factory methods
This commit is contained in:
parent
b103f3ecc2
commit
bd26268533
5 changed files with 257 additions and 1 deletions
|
@ -156,4 +156,52 @@ interface BaseSignatureSubpackets {
|
||||||
fun addEmbeddedSignature(embeddedSignature: EmbeddedSignature): BaseSignatureSubpackets
|
fun addEmbeddedSignature(embeddedSignature: EmbeddedSignature): BaseSignatureSubpackets
|
||||||
|
|
||||||
fun clearEmbeddedSignatures(): BaseSignatureSubpackets
|
fun clearEmbeddedSignatures(): BaseSignatureSubpackets
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
/** Factory method for a [Callback] that does nothing. */
|
||||||
|
@JvmStatic fun nop() = object : Callback {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the hashed
|
||||||
|
* subpacket area of a [BaseSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = BaseSignatureSubpackets.applyHashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyHashed(function: BaseSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(hashedSubpackets: BaseSignatureSubpackets) {
|
||||||
|
function(hashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the unhashed
|
||||||
|
* subpacket area of a [BaseSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = BaseSignatureSubpackets.applyUnhashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyUnhashed(function: BaseSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyUnhashedSubpackets(unhashedSubpackets: BaseSignatureSubpackets) {
|
||||||
|
function(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,4 +7,52 @@ package org.pgpainless.signature.subpackets
|
||||||
interface CertificationSubpackets : BaseSignatureSubpackets {
|
interface CertificationSubpackets : BaseSignatureSubpackets {
|
||||||
|
|
||||||
interface Callback : SignatureSubpacketCallback<CertificationSubpackets>
|
interface Callback : SignatureSubpacketCallback<CertificationSubpackets>
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
/** Factory method for a [Callback] that does nothing. */
|
||||||
|
@JvmStatic fun nop() = object : Callback {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the hashed
|
||||||
|
* subpacket area of a [CertificationSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = CertificationSubpackets.applyHashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyHashed(function: CertificationSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(hashedSubpackets: CertificationSubpackets) {
|
||||||
|
function(hashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the unhashed
|
||||||
|
* subpacket area of a [CertificationSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = CertificationSubpackets.applyUnhashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyUnhashed(function: CertificationSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyUnhashedSubpackets(unhashedSubpackets: CertificationSubpackets) {
|
||||||
|
function(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,4 +27,56 @@ interface RevocationSignatureSubpackets : BaseSignatureSubpackets {
|
||||||
): RevocationSignatureSubpackets
|
): RevocationSignatureSubpackets
|
||||||
|
|
||||||
fun setRevocationReason(reason: RevocationReason?): RevocationSignatureSubpackets
|
fun setRevocationReason(reason: RevocationReason?): RevocationSignatureSubpackets
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
/** Factory method for a [Callback] that does nothing. */
|
||||||
|
@JvmStatic fun nop() = object : Callback {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the hashed
|
||||||
|
* subpacket area of a [RevocationSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = RevocationSignatureSubpackets.applyHashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyHashed(function: RevocationSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(
|
||||||
|
hashedSubpackets: RevocationSignatureSubpackets
|
||||||
|
) {
|
||||||
|
function(hashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the unhashed
|
||||||
|
* subpacket area of a [RevocationSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = RevocationSignatureSubpackets.applyUnhashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyUnhashed(function: RevocationSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyUnhashedSubpackets(
|
||||||
|
unhashedSubpackets: RevocationSignatureSubpackets
|
||||||
|
) {
|
||||||
|
function(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,22 @@ import org.pgpainless.algorithm.*
|
||||||
|
|
||||||
interface SelfSignatureSubpackets : BaseSignatureSubpackets {
|
interface SelfSignatureSubpackets : BaseSignatureSubpackets {
|
||||||
|
|
||||||
interface Callback : SignatureSubpacketCallback<SelfSignatureSubpackets>
|
interface Callback : SignatureSubpacketCallback<SelfSignatureSubpackets> {
|
||||||
|
fun then(nextCallback: SignatureSubpacketCallback<SelfSignatureSubpackets>): Callback {
|
||||||
|
val currCallback = this
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(hashedSubpackets: SelfSignatureSubpackets) {
|
||||||
|
currCallback.modifyHashedSubpackets(hashedSubpackets)
|
||||||
|
nextCallback.modifyHashedSubpackets(hashedSubpackets)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun modifyUnhashedSubpackets(unhashedSubpackets: SelfSignatureSubpackets) {
|
||||||
|
currCallback.modifyUnhashedSubpackets(unhashedSubpackets)
|
||||||
|
nextCallback.modifyUnhashedSubpackets(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun setKeyFlags(vararg keyflags: KeyFlag): SelfSignatureSubpackets
|
fun setKeyFlags(vararg keyflags: KeyFlag): SelfSignatureSubpackets
|
||||||
|
|
||||||
|
@ -116,4 +131,52 @@ interface SelfSignatureSubpackets : BaseSignatureSubpackets {
|
||||||
fun setFeatures(isCritical: Boolean, vararg features: Feature): SelfSignatureSubpackets
|
fun setFeatures(isCritical: Boolean, vararg features: Feature): SelfSignatureSubpackets
|
||||||
|
|
||||||
fun setFeatures(features: Features?): SelfSignatureSubpackets
|
fun setFeatures(features: Features?): SelfSignatureSubpackets
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
/** Factory method for a [Callback] that does nothing. */
|
||||||
|
@JvmStatic fun nop() = object : Callback {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the hashed
|
||||||
|
* subpacket area of a [SelfSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = SelfSignatureSubpackets.applyHashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyHashed(function: SelfSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(hashedSubpackets: SelfSignatureSubpackets) {
|
||||||
|
function(hashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the unhashed
|
||||||
|
* subpacket area of a [SelfSignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = SelfSignatureSubpackets.applyUnhashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyUnhashed(function: SelfSignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyUnhashedSubpackets(unhashedSubpackets: SelfSignatureSubpackets) {
|
||||||
|
function(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,51 @@ class SignatureSubpackets :
|
||||||
fun createEmptySubpackets(): SignatureSubpackets {
|
fun createEmptySubpackets(): SignatureSubpackets {
|
||||||
return SignatureSubpackets()
|
return SignatureSubpackets()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Factory method for a [Callback] that does nothing. */
|
||||||
|
@JvmStatic fun nop() = object : Callback {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the hashed
|
||||||
|
* subpacket area of a [SignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = SignatureSubpackets.applyHashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyHashed(function: SignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyHashedSubpackets(hashedSubpackets: SignatureSubpackets) {
|
||||||
|
function(hashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory function with receiver, which returns a [Callback] that modifies the unhashed
|
||||||
|
* subpacket area of a [SignatureSubpackets] object.
|
||||||
|
*
|
||||||
|
* Can be called like this:
|
||||||
|
* ```
|
||||||
|
* val callback = SignatureSubpackets.applyUnhashed {
|
||||||
|
* setCreationTime(date)
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun applyUnhashed(function: SignatureSubpackets.() -> Unit): Callback {
|
||||||
|
return object : Callback {
|
||||||
|
override fun modifyUnhashedSubpackets(unhashedSubpackets: SignatureSubpackets) {
|
||||||
|
function(unhashedSubpackets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setRevocationReason(
|
override fun setRevocationReason(
|
||||||
|
|
Loading…
Reference in a new issue