summaryrefslogtreecommitdiff
path: root/lib/Crypto/PublicKey
diff options
context:
space:
mode:
authorLegrandin <gooksankoo@hoiptorrow.mailexpire.com>2011-01-16 22:05:54 +0100
committerLegrandin <gooksankoo@hoiptorrow.mailexpire.com>2011-01-16 22:05:54 +0100
commit1221bebb3eb2eb1b6e075cf13c0fb4f550404134 (patch)
treeee69d43d001baa7e9908153b85878d46af20d176 /lib/Crypto/PublicKey
parent894bbc23e986ca21ae6d712604b000169dd88317 (diff)
downloadpycrypto-1221bebb3eb2eb1b6e075cf13c0fb4f550404134.tar.gz
Pure tab-to-space conversion with :retab in vim.
Diffstat (limited to 'lib/Crypto/PublicKey')
-rw-r--r--lib/Crypto/PublicKey/RSA.py122
1 files changed, 61 insertions, 61 deletions
diff --git a/lib/Crypto/PublicKey/RSA.py b/lib/Crypto/PublicKey/RSA.py
index bcb7f58..44a9487 100644
--- a/lib/Crypto/PublicKey/RSA.py
+++ b/lib/Crypto/PublicKey/RSA.py
@@ -134,37 +134,37 @@ class _RSAobj(pubkey.pubkey):
return "<%s @0x%x %s>" % (self.__class__.__name__, id(self), ",".join(attrs))
def exportKey(self, format='PEM'):
- """Export the RSA key. A string is returned
- with the encoded public or the private half
- under the selected format.
-
- format: 'DER' (PKCS#1) or 'PEM' (RFC1421)
- """
- der = DerSequence()
- if self.has_private():
- keyType = "RSA PRIVATE"
- der[:] = [ 0, self.n, self.e, self.d, self.p, self.q,
- self.d % (self.p-1), self.d % (self.q-1),
- inverse(self.q, self.p) ]
- else:
- keyType = "PUBLIC"
- der.append('\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00')
- bitmap = DerObject('BIT STRING')
- derPK = DerSequence()
- derPK[:] = [ self.n, self.e ]
- bitmap.payload = '\x00' + derPK.encode()
- der.append(bitmap.encode())
- if format=='DER':
- return der.encode()
- if format=='PEM':
- pem = "-----BEGIN %s KEY-----\n" % keyType
- binaryKey = der.encode()
- # Each BASE64 line can take up to 64 characters (=48 bytes of data)
- chunks = [ binascii.b2a_base64(binaryKey[i:i+48]) for i in range(0, len(binaryKey), 48) ]
- pem += ''.join(chunks)
- pem += "-----END %s KEY-----" % keyType
- return pem
- return ValueError("Unknown key format '%s'. Cannot export the RSA key." % format)
+ """Export the RSA key. A string is returned
+ with the encoded public or the private half
+ under the selected format.
+
+ format: 'DER' (PKCS#1) or 'PEM' (RFC1421)
+ """
+ der = DerSequence()
+ if self.has_private():
+ keyType = "RSA PRIVATE"
+ der[:] = [ 0, self.n, self.e, self.d, self.p, self.q,
+ self.d % (self.p-1), self.d % (self.q-1),
+ inverse(self.q, self.p) ]
+ else:
+ keyType = "PUBLIC"
+ der.append('\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00')
+ bitmap = DerObject('BIT STRING')
+ derPK = DerSequence()
+ derPK[:] = [ self.n, self.e ]
+ bitmap.payload = '\x00' + derPK.encode()
+ der.append(bitmap.encode())
+ if format=='DER':
+ return der.encode()
+ if format=='PEM':
+ pem = "-----BEGIN %s KEY-----\n" % keyType
+ binaryKey = der.encode()
+ # Each BASE64 line can take up to 64 characters (=48 bytes of data)
+ chunks = [ binascii.b2a_base64(binaryKey[i:i+48]) for i in range(0, len(binaryKey), 48) ]
+ pem += ''.join(chunks)
+ pem += "-----END %s KEY-----" % keyType
+ return pem
+ return ValueError("Unknown key format '%s'. Cannot export the RSA key." % format)
class RSAImplementation(object):
def __init__(self, **kwargs):
@@ -217,15 +217,15 @@ class RSAImplementation(object):
return _RSAobj(self, key)
def _importKeyDER(self, externKey):
- der = DerSequence()
- der.decode(externKey, True)
- if len(der)==9 and der.hasOnlyInts() and der[0]==0:
- # ASN.1 RSAPrivateKey element
- del der[6:] # Remove d mod (p-1), d mod (q-1), and q^{-1} mod p
+ der = DerSequence()
+ der.decode(externKey, True)
+ if len(der)==9 and der.hasOnlyInts() and der[0]==0:
+ # ASN.1 RSAPrivateKey element
+ del der[6:] # Remove d mod (p-1), d mod (q-1), and q^{-1} mod p
der.append(inverse(der[4],der[5])) # Add p^{-1} mod q
- del der[0] # Remove version
- return self.construct(der[:])
- if len(der)==2:
+ del der[0] # Remove version
+ return self.construct(der[:])
+ if len(der)==2:
# The DER object is a SEQUENCE with two elements:
# a SubjectPublicKeyInfo SEQUENCE and an opaque BIT STRING.
#
@@ -237,33 +237,33 @@ class RSAImplementation(object):
# 0x05 0x00 NULL
#
# The second encapsulates the actual ASN.1 RSAPublicKey element.
- if der[0]=='\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00':
- bitmap = DerObject()
- bitmap.decode(der[1], True)
- if bitmap.typeTag=='\x03' and bitmap.payload[0]=='\x00':
- der.decode(bitmap.payload[1:], True)
- if len(der)==2 and der.hasOnlyInts():
- return self.construct(der[:])
- raise ValueError("RSA key format is not supported")
+ if der[0]=='\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00':
+ bitmap = DerObject()
+ bitmap.decode(der[1], True)
+ if bitmap.typeTag=='\x03' and bitmap.payload[0]=='\x00':
+ der.decode(bitmap.payload[1:], True)
+ if len(der)==2 and der.hasOnlyInts():
+ return self.construct(der[:])
+ raise ValueError("RSA key format is not supported")
def importKey(self, externKey):
- """Import an RSA key (public or private half).
+ """Import an RSA key (public or private half).
- externKey: the RSA key to import, encoded as a string.
- The key can be in DER (PKCS#1) or in unencrypted
- PEM format (RFC1421).
+ externKey: the RSA key to import, encoded as a string.
+ The key can be in DER (PKCS#1) or in unencrypted
+ PEM format (RFC1421).
Raises a ValueError/IndexError if the given key cannot be parsed.
- """
- if externKey.startswith('-----'):
- # This is probably a PEM encoded key
- lines = externKey.replace(" ",'').split()
- der = binascii.a2b_base64(''.join(lines[1:-1]))
- return self._importKeyDER(der)
- if externKey[0]=='\x30':
- # This is probably a DER encoded key
- return self._importKeyDER(externKey)
- raise ValueError("RSA key format is not supported")
+ """
+ if externKey.startswith('-----'):
+ # This is probably a PEM encoded key
+ lines = externKey.replace(" ",'').split()
+ der = binascii.a2b_base64(''.join(lines[1:-1]))
+ return self._importKeyDER(der)
+ if externKey[0]=='\x30':
+ # This is probably a DER encoded key
+ return self._importKeyDER(externKey)
+ raise ValueError("RSA key format is not supported")
_impl = RSAImplementation()
generate = _impl.generate