pgpainless/pgpainless-core/src/test/kotlin/org/pgpainless/bouncycastle/extensions/PGPPublicKeyExtensionsTest.kt

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

61 lines
1.9 KiB
Kotlin
Raw Normal View History

2024-03-05 21:17:03 +01:00
// SPDX-FileCopyrightText: 2024 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0
package org.pgpainless.bouncycastle.extensions
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.pgpainless.PGPainless
import org.pgpainless.algorithm.PublicKeyAlgorithm
import org.pgpainless.key.TestKeys
import org.pgpainless.key.generation.KeySpec
import org.pgpainless.key.generation.type.KeyType
import org.pgpainless.key.generation.type.ecc.EllipticCurve
import org.pgpainless.key.generation.type.eddsa.EdDSACurve
class PGPPublicKeyExtensionsTest {
@Test
fun `test getCurveName for all ECDSA curves`() {
for (curve in EllipticCurve.values()) {
2024-03-05 21:30:28 +01:00
val key =
PGPainless.buildKeyRing()
.setPrimaryKey(KeySpec.getBuilder(KeyType.ECDSA(curve)))
.build()
.publicKey
2024-03-05 21:17:03 +01:00
assertEquals(curve.curveName, key.getCurveName())
}
}
@Test
fun `test getCurveName for legacy EdDSA curves`() {
for (curve in EdDSACurve.values()) {
2024-03-05 21:30:28 +01:00
val key =
PGPainless.buildKeyRing()
.setPrimaryKey(KeySpec.getBuilder(KeyType.EDDSA(curve)))
.build()
.publicKey
2024-03-05 21:17:03 +01:00
assertEquals(curve.curveName, key.getCurveName())
}
}
@Test
fun `test getCurveName fails for non-curve keys`() {
// RSA
val key = TestKeys.getJulietPublicKeyRing()
assertEquals(PublicKeyAlgorithm.RSA_GENERAL, key.publicKey.publicKeyAlgorithm)
2024-03-05 21:30:28 +01:00
assertThrows<IllegalArgumentException> { key.publicKey.getCurveName() }
2024-03-05 21:17:03 +01:00
}
@Test
fun `openPgpFingerprint returns fitting fingerprint`() {
val key = TestKeys.getEmilSecretKeyRing()
assertEquals(TestKeys.EMIL_FINGERPRINT, key.publicKey.openPgpFingerprint)
}
}