pgpainless/sequoia-wot-vectors/src/testFixtures/kotlin/org/sequoia_pgp/wot/vectors/ArtifactVectors.kt

51 lines
1.7 KiB
Kotlin

// SPDX-FileCopyrightText: 2023 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: BSD-3-Clause
package org.sequoia_pgp.wot.vectors
import org.pgpainless.PGPainless
import org.pgpainless.policy.Policy
import org.pgpainless.wot.KeyRingCertificateStore
import org.pgpainless.wot.WebOfTrust
import org.pgpainless.wot.network.Network
import org.pgpainless.wot.network.ReferenceTime
import java.io.InputStream
import java.lang.IllegalArgumentException
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
interface ArtifactVectors {
private fun parseDate(string: String): Date {
return try {
SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
.apply { timeZone = TimeZone.getTimeZone("UTC") }
.parse(string)
} catch (e: ParseException) {
SimpleDateFormat("yyyy-MM-dd")
.apply {timeZone = TimeZone.getTimeZone("UTC") }
.parse(string)
} catch (e: ParseException) {
throw IllegalArgumentException(e)
}
}
fun parseReferenceTime(string: String): ReferenceTime {
return ReferenceTime.timestamp(parseDate(string))
}
fun getResourceName(): String
fun getNetworkAt(referenceTime: ReferenceTime, policy: Policy = PGPainless.getPolicy()): Network {
val inputStream = keyRingInputStream()
val keyRing = PGPainless.readKeyRing().publicKeyRingCollection(inputStream)
val store = KeyRingCertificateStore(keyRing)
return WebOfTrust(store).buildNetwork(policy, referenceTime)
}
fun keyRingInputStream(): InputStream {
return ArtifactVectors::class.java.classLoader.getResourceAsStream(getResourceName())!!
}
}