Есть ли способ установить формат подписи для 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, при этом все параметры, кроме одного отправителя, удалены.

Другие вопросы по тегам