
org.pgpainless.key.SubkeyIdentifier.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pgpainless-core Show documentation
Show all versions of pgpainless-core Show documentation
Simple to use OpenPGP API for Java based on Bouncycastle
The newest version!
// SPDX-FileCopyrightText: 2023 Paul Schaub
//
// SPDX-License-Identifier: Apache-2.0
package org.pgpainless.key
import openpgp.openPgpKeyId
import org.bouncycastle.openpgp.PGPKeyRing
import org.bouncycastle.openpgp.PGPPublicKey
/**
* Tuple class used to identify a subkey by fingerprints of the primary key of the subkeys key ring,
* as well as the subkeys fingerprint.
*/
class SubkeyIdentifier(
val primaryKeyFingerprint: OpenPgpFingerprint,
val subkeyFingerprint: OpenPgpFingerprint
) {
constructor(fingerprint: OpenPgpFingerprint) : this(fingerprint, fingerprint)
constructor(keys: PGPKeyRing) : this(keys.publicKey)
constructor(key: PGPPublicKey) : this(OpenPgpFingerprint.of(key))
constructor(
keys: PGPKeyRing,
keyId: Long
) : this(
OpenPgpFingerprint.of(keys.publicKey),
OpenPgpFingerprint.of(
keys.getPublicKey(keyId)
?: throw NoSuchElementException(
"OpenPGP key does not contain subkey ${keyId.openPgpKeyId()}")))
constructor(
keys: PGPKeyRing,
subkeyFingerprint: OpenPgpFingerprint
) : this(OpenPgpFingerprint.of(keys), subkeyFingerprint)
val keyId = subkeyFingerprint.keyId
val fingerprint = subkeyFingerprint
val subkeyId = subkeyFingerprint.keyId
val primaryKeyId = primaryKeyFingerprint.keyId
val isPrimaryKey = primaryKeyId == subkeyId
fun matches(fingerprint: OpenPgpFingerprint) =
primaryKeyFingerprint == fingerprint || subkeyFingerprint == fingerprint
override fun equals(other: Any?): Boolean {
if (other == null) {
return false
}
if (this === other) {
return true
}
if (other !is SubkeyIdentifier) {
return false
}
return primaryKeyFingerprint == other.primaryKeyFingerprint &&
subkeyFingerprint == other.subkeyFingerprint
}
override fun hashCode(): Int {
return primaryKeyFingerprint.hashCode() + 31 * subkeyFingerprint.hashCode()
}
override fun toString(): String = "$subkeyFingerprint $primaryKeyFingerprint"
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy