Есть ли способ установить формат подписи для ECDSA в кодировку BER в Java?
Я пытаюсь подписать сообщение закрытым ключом. Работает хорошо, но подпись закодирована в DER encoding
, Я хочу получить подпись в BER encoding
, Вот метод, используемый для подписи:
public static byte[] sign(String plainText, String privateKeyPath) throws
Exception {
PrivateKey privateKey = getPrivate(privateKeyPath);
System.out.println(privateKey.getAlgorithm());
Signature ecdsaSign = Signature.getInstance("SHA256withECDSA", "BC");
ecdsaSign.initSign(privateKey);
ecdsaSign.update(plainText.getBytes("UTF-8"));
byte[] signature = ecdsaSign.sign();
return signature;
}
я использую BouncyCastle library
1 ответ
Решение
Кодировка DER является верной кодировкой BER
Из резюме X.690 в Википедии
DER (Distinguished Encoding Rules) - это ограниченный вариант BER для создания однозначного синтаксиса передачи для структур данных, описанных в ASN.1. Как и CER, кодировки DER являются действительными кодировками BER. DER - то же самое, что и BER, при этом все параметры, кроме одного отправителя, удалены.