in lib/src/main/kotlin/org/jetbrains/zip/signer/signer/CertificateUtils.kt [121:144]
fun getCrlUris(certificate: X509Certificate): List<URI> {
val crlDistributionPointsBytes = certificate.getExtensionValue(Extension.cRLDistributionPoints.id)
?: return emptyList()
val derOctetString = ASN1InputStream(ByteArrayInputStream(crlDistributionPointsBytes)).use {
it.readObject() as DEROctetString
}
val crlDistPoint = ASN1InputStream(ByteArrayInputStream(derOctetString.octets)).use {
CRLDistPoint.getInstance(it.readObject())
}
val crlUris = mutableListOf<URI>()
crlDistPoint.distributionPoints.forEach { distributionPoint ->
val distributionPointName = distributionPoint.distributionPoint
if (distributionPointName.type == DistributionPointName.FULL_NAME) {
val generalNames = GeneralNames.getInstance(distributionPointName.name).names
generalNames.forEach { generalName ->
if (generalName.tagNo == GeneralName.uniformResourceIdentifier) {
val url = ASN1IA5String.getInstance(generalName.name).string
crlUris.add(URI(url))
}
}
}
}
return crlUris
}