2017-12-15 10 views
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 
+0

は、[1のPKCS#](HTTPSでPSS仕様(セクション8.1および9.1.1を通じて見ました//tools.ietf.org/html/rfc8017)どちらも私の以前の仮説の正しい:OpenSSLは本当に知っておく必要がありませんので、PSSパディングは---署名内のハッシュのためのオブジェクト識別子(OID)が埋め込まれません。あなたの塩の長さが長すぎるではない場合BLAKE2b、またPSSは、アルゴリズムの特定のセットにハッシュを制限しない。 – lockcmpxchg8b

+0

二一目で、私は疑問に思う。私は 'padding.PSS.MAX_LENGTH'を解釈する方法を正確に知っているが、していません - - '<512である塩-LEN使用してみてくださいlockcmpxchg8b @ 2' – lockcmpxchg8b

+0

を:私は256単位=' salt_lengthを試してみましたが、同じエラーを得たトレースバックを追加しました。 –

答えて

0

。あなたのトレースバックでは、OpenSSLはBLAKE2bが何であるかを知りません。ライン192名で、それを検索しようとすると、検索がNULLを返したため、ライン193はアサートを失敗します:

192  evp_md = backend._lib.EVP_get_digestbyname(algorithm.name.encode("ascii")) 
--> 193  backend.openssl_assert(evp_md != backend._ffi.NULL) 
関連する問題