Search code examples
pythonubuntu-14.04pycrypto

'exportKey' function not recognized in pycrypto-2.6.1(python 2.7.6) ubuntu14.04 LTS


Hello I'm trying to run this simple code to generate a private key:

from Crypto.PublicKey import RSA
key = RSA.generate(2048)
f = open('mykey.pem','w')
f.write(RSA.exportKey('PEM'))
f.close()

But I get this error:

Traceback (most recent call last):
  File "erase-this.py", line 5, in <module>
    f.write(RSA.exportKey('PEM'))
AttributeError: 'module' object has no attribute 'exportKey'

I checked inside /pycrypto-2.6.1/lib/Crypto/PublicKey, and the function

def exportKey(self, format='PEM', passphrase=None, pkcs=1):

is present inside RSA.py.

Does someone knows why I get the error:

AttributeError: 'module' object has no attribute 'exportKey'???

Solution

  • exportKey() is a method of the key, not a module function. So you need to do

    f.write(key.exportKey('PEM'))
    

    Here's a short demo (using a smaller key size).

    #!/usr/bin/env python
    
    from Crypto.PublicKey import RSA
    key = RSA.generate(1024)
    print key.exportKey('PEM')
    
    pub_key = key.publickey()
    print pub_key.exportKey('PEM')
    

    typical output

    -----BEGIN RSA PRIVATE KEY-----
    MIICWwIBAAKBgQDqYiWx1bwP0aF0TJhRBXzFv+WBPUKD965CbvoU/xiMj7Eu5crD
    36k6t44Po696gxVN+rGWUo2VKFVUsi1A3oqhkyFnF6JJxkt42w4sUVNd91PvBzxI
    ermBnciyhPjJY8pfWWSaGwZxdqSfBDieeCfAk7NKW8aRzfP178Mz4mCwYQIDAQAB
    AoGAMzhzqGNfD83uDK5YcwxR8h03mIC8sn5EFLyP5lrBEKauP+Nz5k5Qe0Z1wzEw
    PgO7eikY+hLcYgZIb5Pok86OWMnkeGMY7px+Ti67Y2q9w8euJ1hQV3pmAZNB9XaQ
    nuQrG3UNParBh/SaqnHGhtVoAKLX6HXV/sG6URJtQUBbaYECQQDtzl+DC0qi93ew
    lsEXRIjGMJjOJ7UphKHllHUN2gfxnTyEGN3QSd6Za/AURejQ8aGK9IByo3GONYSY
    /iy+j0Z5AkEA/FC8lhp8xVzk3qZtJ6lnKnRBMa+Wcy1wREcaUIJvIyKGdp6W3NJ5
    qJZmJOASx/FWyayIh61AEhvXUW/qMKPfKQJACabqsYLv0JWCwiQcSjl547FtQlDS
    RZEgkRTpe1pyIBhlsGbh+eZFpqx+3hPIU1K7X8x0ujJwFXmOnDcU0dc24QJAC+5Z
    bJOmEMMaw3iFMtns2fITXyEZcSrV4zSlhucUEEpCp3tKUPjW7eTmwZmi6bd8zh6N
    ejT0EaclYGF1ZoVpOQJAP0gyfT3wRcAeqt9io5FyYZvhijmnCpQ+N7jci1Bcri/G
    94r8T4jhw9ezl8bjrtytaMiQdNnM2vn/Iqbrd/Cl3Q==
    -----END RSA PRIVATE KEY-----
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqYiWx1bwP0aF0TJhRBXzFv+WB
    PUKD965CbvoU/xiMj7Eu5crD36k6t44Po696gxVN+rGWUo2VKFVUsi1A3oqhkyFn
    F6JJxkt42w4sUVNd91PvBzxIermBnciyhPjJY8pfWWSaGwZxdqSfBDieeCfAk7NK
    W8aRzfP178Mz4mCwYQIDAQAB
    -----END PUBLIC KEY-----