Index: third_party/tlslite/tlslite/utils/OpenSSL_RSAKey.py |
diff --git a/third_party/tlslite/tlslite/utils/OpenSSL_RSAKey.py b/third_party/tlslite/tlslite/utils/OpenSSL_RSAKey.py |
deleted file mode 100644 |
index fe1a3cd74d29467cd30026d550d71de322cb6246..0000000000000000000000000000000000000000 |
--- a/third_party/tlslite/tlslite/utils/OpenSSL_RSAKey.py |
+++ /dev/null |
@@ -1,148 +0,0 @@ |
-"""OpenSSL/M2Crypto RSA implementation.""" |
- |
-from cryptomath import * |
- |
-from RSAKey import * |
-from Python_RSAKey import Python_RSAKey |
- |
-#copied from M2Crypto.util.py, so when we load the local copy of m2 |
-#we can still use it |
-def password_callback(v, prompt1='Enter private key passphrase:', |
- prompt2='Verify passphrase:'): |
- from getpass import getpass |
- while 1: |
- try: |
- p1=getpass(prompt1) |
- if v: |
- p2=getpass(prompt2) |
- if p1==p2: |
- break |
- else: |
- break |
- except KeyboardInterrupt: |
- return None |
- return p1 |
- |
- |
-if m2cryptoLoaded: |
- class OpenSSL_RSAKey(RSAKey): |
- def __init__(self, n=0, e=0): |
- self.rsa = None |
- self._hasPrivateKey = False |
- if (n and not e) or (e and not n): |
- raise AssertionError() |
- if n and e: |
- self.rsa = m2.rsa_new() |
- m2.rsa_set_n(self.rsa, numberToMPI(n)) |
- m2.rsa_set_e(self.rsa, numberToMPI(e)) |
- |
- def __del__(self): |
- if self.rsa: |
- m2.rsa_free(self.rsa) |
- |
- def __getattr__(self, name): |
- if name == 'e': |
- if not self.rsa: |
- return 0 |
- return mpiToNumber(m2.rsa_get_e(self.rsa)) |
- elif name == 'n': |
- if not self.rsa: |
- return 0 |
- return mpiToNumber(m2.rsa_get_n(self.rsa)) |
- else: |
- raise AttributeError |
- |
- def hasPrivateKey(self): |
- return self._hasPrivateKey |
- |
- def hash(self): |
- return Python_RSAKey(self.n, self.e).hash() |
- |
- def _rawPrivateKeyOp(self, m): |
- s = numberToString(m) |
- byteLength = numBytes(self.n) |
- if len(s)== byteLength: |
- pass |
- elif len(s) == byteLength-1: |
- s = '\0' + s |
- else: |
- raise AssertionError() |
- c = stringToNumber(m2.rsa_private_encrypt(self.rsa, s, |
- m2.no_padding)) |
- return c |
- |
- def _rawPublicKeyOp(self, c): |
- s = numberToString(c) |
- byteLength = numBytes(self.n) |
- if len(s)== byteLength: |
- pass |
- elif len(s) == byteLength-1: |
- s = '\0' + s |
- else: |
- raise AssertionError() |
- m = stringToNumber(m2.rsa_public_decrypt(self.rsa, s, |
- m2.no_padding)) |
- return m |
- |
- def acceptsPassword(self): return True |
- |
- def write(self, password=None): |
- bio = m2.bio_new(m2.bio_s_mem()) |
- if self._hasPrivateKey: |
- if password: |
- def f(v): return password |
- m2.rsa_write_key(self.rsa, bio, m2.des_ede_cbc(), f) |
- else: |
- def f(): pass |
- m2.rsa_write_key_no_cipher(self.rsa, bio, f) |
- else: |
- if password: |
- raise AssertionError() |
- m2.rsa_write_pub_key(self.rsa, bio) |
- s = m2.bio_read(bio, m2.bio_ctrl_pending(bio)) |
- m2.bio_free(bio) |
- return s |
- |
- def writeXMLPublicKey(self, indent=''): |
- return Python_RSAKey(self.n, self.e).write(indent) |
- |
- def generate(bits): |
- key = OpenSSL_RSAKey() |
- def f():pass |
- key.rsa = m2.rsa_generate_key(bits, 3, f) |
- key._hasPrivateKey = True |
- return key |
- generate = staticmethod(generate) |
- |
- def parse(s, passwordCallback=None): |
- if s.startswith("-----BEGIN "): |
- if passwordCallback==None: |
- callback = password_callback |
- else: |
- def f(v, prompt1=None, prompt2=None): |
- return passwordCallback() |
- callback = f |
- bio = m2.bio_new(m2.bio_s_mem()) |
- try: |
- m2.bio_write(bio, s) |
- key = OpenSSL_RSAKey() |
- if s.startswith("-----BEGIN RSA PRIVATE KEY-----"): |
- def f():pass |
- key.rsa = m2.rsa_read_key(bio, callback) |
- if key.rsa == None: |
- raise SyntaxError() |
- key._hasPrivateKey = True |
- elif s.startswith("-----BEGIN PUBLIC KEY-----"): |
- key.rsa = m2.rsa_read_pub_key(bio) |
- if key.rsa == None: |
- raise SyntaxError() |
- key._hasPrivateKey = False |
- else: |
- raise SyntaxError() |
- return key |
- finally: |
- m2.bio_free(bio) |
- else: |
- raise SyntaxError() |
- |
- parse = staticmethod(parse) |