Package tlslite :: Package utils :: Module pycrypto_rsakey |
[hide private]
[frames] | no frames]

# Source Code for Module tlslite.utils.pycrypto_rsakey

     1  # Author: Trevor Perrin
     2  # See the LICENSE file for legal information regarding use of this file.
     3
     4  """PyCrypto RSA implementation."""
     5
     6  from .cryptomath import *
     7
     8  from .rsakey import *
     9  from .python_rsakey import Python_RSAKey
    10
    11  if pycryptoLoaded:
    12
    13      from Crypto.PublicKey import RSA
    14
    15 -    class PyCrypto_RSAKey(RSAKey):
    16 -        def __init__(self, n=0, e=0, d=0, p=0, q=0, dP=0, dQ=0, qInv=0):
    17              if not d:
    18                  self.rsa = RSA.construct( (n, e) )
    19              else:
    20                  self.rsa = RSA.construct( (n, e, d, p, q) )
    21
    22 -        def __getattr__(self, name):
    23              return getattr(self.rsa, name)
    24
    25 -        def hasPrivateKey(self):
    26              return self.rsa.has_private()
    27
    28 -        def _rawPrivateKeyOp(self, m):
    29              s = numberToString(m, numBytes(self.n))
    30              c = stringToNumber(self.rsa.decrypt((s,)))
    31              return c
    32
    33 -        def _rawPublicKeyOp(self, c):
    34              s = numberToString(c, numBytes(self.n))
    35              m = stringToNumber(self.rsa.encrypt(s, None)[0])
    36              return m
    37
    38 -        def generate(bits):
    39              key = PyCrypto_RSAKey()
    40              def f(numBytes):
    41                  return bytes(getRandomBytes(numBytes))
    42              key.rsa = RSA.generate(bits, f)
    43              return key
    44          generate = staticmethod(generate)
    45