Я использую сертификаты CVC (если вы не слышали о них, притворитесь, что они X509) с подпиткой кривых brainpool256r1 и SHA1. В java с bouncycastle я просто проверяю их следующим образом:Как обрабатывать короткий хеш с более длинным порядком базовой точки в ECDSA
Signature sign = Signature.getInstance("SHA1withECDSA", "BC");
sign.initVerify(key);
sign.update(certificate_data_to_be_verified);
sign.verify(signature);
И все работает нормально. Тем не менее, мне нужно проверить их также во встроенном устройстве, и я столкнулся с проблемой, потому что я должен использовать левые 256 бит хэша, чтобы получить значение z
по крайней мере в соответствии с wikipedia ECDSA article. Но SHA1 имеет только 160 бит.
Как это решается с помощью bouncycastle, и существует ли какая-то общая теория о том, как с этим справиться?
извините за сумбур, но если я правильно понимаю теперь, имея кривую brainpoolp256r1 означает, что я 256bits порядок основания (означающего ключ 512bit) и с помощью того, что я могу иметь SHA1 хэш в BouncyCastle без него жаловаться. Есть ли что-то, чего я еще не вижу? – Petr
Я обновил ответ. Вы также должны изменить вопрос, чтобы упомянуть, что ваш ключ основан на кривой из семейства brainpoolp256r1. – divanov
Спасибо за обновление, я обновил свой квест, надеюсь, теперь он имеет больше смысла. Итак, в основном, что это значит, значение 'e' (' z' в моем вопросе) дополняется нулями слева в том случае, когда я описывал? – Petr