def toDER_PrivateKey(self): derPrivKey = DerSequence() derPrivKey[:] = [ 0, self.key.n, self.key.e, self.key.d, self.key.q, self.key.p, self.key.d % (self.key.q-1), self.key.d % (self.key.p-1), self.key.u ] return derPrivKey.encode()
def fromPEM_PublicKey(self, publicKeyData): try: key64 = '' for line in publicKeyData.splitlines(): if line.count('BEGIN RSA PUBLIC KEY') or line.count('END RSA PUBLIC KEY'): continue key64 += line.strip() pubSeq = DerSequence() pubSeq.decode(b64decode(key64)) self.key = RSA.construct( (pubSeq[0], pubSeq[1]) ) except: raise RSAError, 'unable to load object from data'
def toPEM_PublicKey(self): pemSeq = DerSequence() pemSeq[:] = [ self.key.key.n, self.key.key.e ] s = b64encode(pemSeq.encode()) src = '-----BEGIN RSA PUBLIC KEY-----\n' while True: src += s[:64] + '\n' s = s[64:] if s == '': break src += '-----END RSA PUBLIC KEY-----' return src
def toDER_PublicKey(self): derPK = DerSequence() derPK[:] = [ self.key.key.n, self.key.key.e ] return derPK.encode()
def fromPKey_PublicKey(self, pkey): src = dump_privatekey(FILETYPE_ASN1, pkey) pub_der = DerSequence() pub_der.decode(src) self.key = RSA.construct((long(pub_der._seq[1]), long(pub_der._seq[2])))