У меня есть java.security.util.DerValue
, который я извлекаю из X500Name.Декодирование DER-encoded от X500Name
x500Name.findMostSpecificAttribute(SOME_OID)
Некоторые значения хранятся как DER-кодированные. .toString
возвращает мне что-то Лиле:
[DerValue, tag = 18, length = 12]
Как расшифровать его?
Кроме того, из него невозможно получить байты [].
derValue.getOctetString
возвращает мне
java.io.IOException: DerValue.getOctetString, not an Octet String: 18
EDIT:
Мое решение:
def decodeDERValue(derValue: DerValue): String = {
val asnInput = new ASN1InputStream(new ByteArrayInputStream(derValue.toByteArray))
val obj = asnInput.readObject()
val derValueSting = obj match {
case p: DERPrintableString => p.getString
case p: DERUTF8String => p.getString
case p: DERIA5String => p.getString
case _ => ASN1Dump.dumpAsString(obj, true)
}
asnInput.close()
derValueSting.trim
}
'derValue.getDataBytes' возвращает также массивы байтов –