Я использую сертификаты CVC (если вы не слышали о них, представьте, что это X509) с подписью эллиптической кривой с кривой brainpool256r1 и хэшем SHA1. В java с bouncycastle я просто проверяю их так:
Signature sign = Signature.getInstance("SHA1withECDSA", "BC");
sign.initVerify(key);
sign.update(certificate_data_to_be_verified);
sign.verify(signature);
И все работает нормально. Однако мне нужно проверить их также на встроенном устройстве, и я столкнулся с проблемой, потому что я должен использовать крайние левые 256 бит хеша, чтобы получить значение z
по крайней мере в соответствии с статья в Википедии ECDSA. Но SHA1 имеет только 160 бит.
Как это решается с помощью bouncycastle, и есть ли какая-то общая теория о том, как с этим справиться?