1
でメッセージに署名するときrsa
キーとBLAKE2b
ハッシュとメッセージに署名しようとしたとき、私はMacOSのとUbuntu上で、次のエラーメッセージが出てきたrasied。例外は、RSAキー
InternalError: Unknown OpenSSL error. This error is commonly encountered
when another library is not cleaning up the OpenSSL error stack. If you
are using cryptography with another library that uses OpenSSL try
disabling it before reporting a bug. Otherwise please file an issue at
https://github.com/pyca/cryptography/issues with information on how to
reproduce this. ([])
これはどこでデバッグを開始するのかちょっと分かりません。私がここで紛失しているものはありますか?あなたはrsa
署名とBLAKE2b
ハッシングを使用することはできませんか?
In [1]: from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, rsa
In [2]: private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=4096,
backend=default_backend()
)
In [3]: message = b'The quick brown fox jumps over the lazy dog'
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.BLAKE2b(64)),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.BLAKE2b(64)
)
かなり決定的だトレースバック
<ipython-input-3-6b4492bdbf5d> in <module>()
6 salt_length=padding.PSS.MAX_LENGTH
7 ),
----> 8 hashes.BLAKE2b(64)
9)
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in sign(self, data, padding, algorithm)
413 self._backend, data, algorithm
414 )
--> 415 return _rsa_sig_sign(self._backend, padding, algorithm, self, data)
416
417
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in _rsa_sig_sign(backend, padding, algorithm, private_key, data)
220 pkey_ctx = _rsa_sig_setup(
221 backend, padding, algorithm, private_key, data,
--> 222 backend._lib.EVP_PKEY_sign_init
223 )
224 buflen = backend._ffi.new("size_t *")
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in _rsa_sig_setup(backend, padding, algorithm, key, data, init_func)
191 padding_enum = _rsa_sig_determine_padding(backend, key, padding, algorithm)
192 evp_md = backend._lib.EVP_get_digestbyname(algorithm.name.encode("ascii"))
--> 193 backend.openssl_assert(evp_md != backend._ffi.NULL)
194 pkey_ctx = backend._lib.EVP_PKEY_CTX_new(key._evp_pkey, backend._ffi.NULL)
195 backend.openssl_assert(pkey_ctx != backend._ffi.NULL)
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py in openssl_assert(self, ok)
104
105 def openssl_assert(self, ok):
--> 106 return binding._openssl_assert(self._lib, ok)
107
108 def activate_builtin_random(self):
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/bindings/openssl/binding.py in _openssl_assert(lib, ok)
73 "issues with information on how to reproduce "
74 "this. ({0!r})".format(errors_with_text),
---> 75 errors_with_text
76 )
77
は、[1のPKCS#](HTTPSでPSS仕様(セクション8.1および9.1.1を通じて見ました//tools.ietf.org/html/rfc8017)どちらも私の以前の仮説の正しい:OpenSSLは本当に知っておく必要がありませんので、PSSパディングは---署名内のハッシュのためのオブジェクト識別子(OID)が埋め込まれません。あなたの塩の長さが長すぎるではない場合BLAKE2b、またPSSは、アルゴリズムの特定のセットにハッシュを制限しない。 – lockcmpxchg8b
二一目で、私は疑問に思う。私は 'padding.PSS.MAX_LENGTH'を解釈する方法を正確に知っているが、していません - - '<512である塩-LEN使用してみてくださいlockcmpxchg8b @ 2' –
lockcmpxchg8b
を:私は256単位=' salt_lengthを試してみましたが、同じエラーを得たトレースバックを追加しました。 –