#c# #cryptography #bouncycastle
Вопрос:
Я пытаюсь скопировать некоторый код Python таким образом, чтобы он работал одинаково в BouncyCastle C#.
Я полагаю, что код генерирует K в соответствии со спецификацией RFC 6979.
# get deterministic k
sha_digest = hashlib.sha256(digest).digest()
k = ecdsa.rfc6979.generate_k(self._sk.curve.generator.order(),
self._sk.privkey.secret_multiplier,
hashlib.sha256,
sha_digest
)
# sign the message
sigder = self._sk.sign_digest(digest, sigencode=ecdsa.util.sigencode_der, k=k)
Приведенный выше код находится в цикле, и sha_digest изменяется в каждом цикле.
Есть ли где-нибудь в Bouncycastle аналогичный метод generate_k, который я могу вызвать?
Комментарии:
1.
k
можно определить в C#/BouncyCastle сHMacDsaKCalculator#NextK()
помощью .2. Да, HmacDsaKCalculator, но, вероятно, не вызывает его напрямую, а создает с его помощью экземпляр ECDsaSigner. В зависимости от семантики кода python (которую я не знаю), сам ECDsaSigner может потребоваться обернуть DsaDigestSigner.