fun getCrlUris()

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
    }