beta = self.Hash(pi).digest() return beta def verify(self, PK, alpha, pi): s = OS2IP(pi) m = RSAVP1(PK, s) EM = I2OSP(m, PK.k - 1) EM_ = MGF1(alpha, PK.k - 1, self.Hlen, self.Hash) if OS2IP(EM) == OS2IP(EM_): return True else: return False if __name__ == "__main__": if len(sys.argv) < 2: print "USAGE: python vrf-impl.py [plaintext]" exit(1) kf = RSAImplementation() keyPair = kf.generate(1024) pubkey = PublicKeyPrim(keyPair.e, keyPair.n) privkey = PrivateKeyPrim(keyPair.d, keyPair.n) alpha = ''.join(sys.argv[1:]) VRF = RSAFDHVRF() pi = VRF.prove(privkey, alpha) beta = VRF.proof2hash(pi) if VRF.verify(pubkey, alpha, pi): print("It works") else: print("Something went wrong")
cfg = Configuration() cfg.endpoint_process = Endpoint.url('http://site2.enigmabridge.com:11180') cfg.endpoint_enroll = Endpoint.url('http://site2.enigmabridge.com:11182') cfg.api_key = 'API_TEST' cfg.retry = SimpleRetry(max_retry=1, jitter_base=1000, jitter_rand=250) def create_rsa(cfg): cou = CreateUO(configuration=cfg, tpl={TemplateFields.environment: Environment.DEV}) rsa_key = cou.create_rsa(2048) return rsa_key rsa = RSAImplementation() base_path = '/tmp' for idx in range(84, 100): print "Generating key %02d" % idx key = create_rsa(cfg) rsa_key = rsa.construct((key.n, key.e)) pem = rsa_key.exportKey() file_name = os.path.join(base_path, 'pubkey_%02d.pem' % idx) with open(file_name, 'w') as hnd: hnd.write(pem) pass if __name__ == "__main__": print "ok"
def rsa_pub_key_to_pem(n, e): rsa = RSAImplementation() rsa_key = rsa.construct((n, e)) pem = rsa_key.exportKey() return pem
@staticmethod def import_key(data): try: return RSA_.importKey(data).exportKey() except (ValueError, IndexError): pass if len(data) < BLOBHEADER.sizeof(): return buf = io.BytesIO(data) header = BLOBHEADER.parse(buf.read(BLOBHEADER.sizeof())) if header.bType not in BlobTypes: return if header.aiKeyAlg not in RSA.algorithms: return obj = BlobTypes[header.bType]() obj.parse(buf) return obj.export_key() @staticmethod def export_key(n, e, d=None, p=None, q=None, crt=None): wrap = lambda x: None if x is None else long(x) tup = wrap(n), wrap(e), wrap(d), wrap(p), wrap(q), wrap(crt) return RSA_.construct(tup).exportKey() RSA_ = RSAImplementation(use_fast_math=False)