1

Google API のサンプル コードを使用しようとしていますが、機能しません。確かに、私は python に慣れていませんが、次の簡単なテスト プログラムに要約しました。

#!/usr/bin/python

from OpenSSL import crypto

print crypto.sign('key', 'xyzzy', 'sha256')

その結果:

Traceback (most recent call last):
  File "./ot", line 5, in <module>
    print crypto.sign('key', 'xyzzy', 'sha256')
AttributeError: 'module' object has no attribute 'sign'

openssl 暗号モジュール ( /usr/lib/python2.6/site-packages/OpenSSL/crypto.py) を見ると、実際には「署名」が定義されています。

def sign(self, pkey, digest):
    """
    Sign the certificate request using the supplied key and digest

だから私はとても困惑しています。私が知る限り、他のバージョンはありません

pip show pyopenssl
---
Name: pyOpenSSL
Version: 0.14
Location: /usr/lib/python2.6/site-packages
Requires: cryptography, six

コメントに基づく拡張出力:

openssl file:
/usr/lib64/python2.6/site-packages/OpenSSL/__init__.pyc

dir(crypto):
['Error', 'FILETYPE_ASN1', 'FILETYPE_PEM', 'FILETYPE_TEXT', 'NetscapeSPKI', 'NetscapeSPKIType', 'PKCS12', 'PKCS12Type', 'PKCS7Type', 'PKey', 'PKeyType', 'TYPE_DSA', 'TYPE_RSA', 'X509', 'X509Extension', 'X509ExtensionType', 'X509Name', 'X509NameType', 'X509Req', 'X509ReqType', 'X509StoreType', 'X509Type', 'X509_verify_cert_error_string', '_C_API', '__doc__', '__file__', '__name__', '__package__', '_exception_from_error_queue', 'dump_certificate', 'dump_certificate_request', 'dump_privatekey', 'load_certificate', 'load_certificate_request', 'load_pkcs12', 'load_pkcs7_data', 'load_privatekey']

crypto file
/usr/lib64/python2.6/site-packages/OpenSSL/crypto.so

crypto.sign:
Traceback (most recent call last):
  File "./ot", line 16, in <module>
print crypto.sign('key', 'xyzzy', 'sha256')
AttributeError: 'module' object has no attribute 'sign'
4

2 に答える 2

2

いくつかの競合するインストールがあったようです-いくつかのyum python-cryptoパッケージを削除し、pipでopensslをアンインストールしましたが、/usr/lib64/python2.6/site-packages/OpenSSL/(crypto.soを含む)にまだものがありました。そのため、そのディレクトリを手動で削除してから、pyopensslをインストールして問題を解決しました。ポインタをありがとう...

于 2014-08-12T17:15:26.083 に答える