def valid_sig(xml, sig, pubkey): import base64, digest from M2Crypto import RSA digest1 = digest.sha1(xml, None) rsa = RSA.load_pub_key(pubkey) digest2 = rsa.public_decrypt(base64.decodestring(sig), RSA.pkcs1_padding) return (digest1 == digest2)
def create_sig(self, data): import base64, digest from M2Crypto import RSA sha1 = digest.sha1(data, None) rsa = RSA.load_key(self.privkey) sig = rsa.private_encrypt(sha1, RSA.pkcs1_padding) sig = base64.encodestring(sig) sig = re.sub("\n", "", sig) return sig
def getpeerkeysha1(self): import digest from M2Crypto import m2, BIO pubkey = self.connection.get_peer_cert().get_pubkey() bio = BIO.MemoryBuffer() m2.pem_write_bio_pubkey(bio.bio, pubkey) sha1 = digest.sha1(bio.read()) bio.write_close() return sha1