Exemplo n.º 1
0
        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")
Exemplo n.º 2
0
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"
Exemplo n.º 3
0
def rsa_pub_key_to_pem(n, e):
    rsa = RSAImplementation()
    rsa_key = rsa.construct((n, e))
    pem = rsa_key.exportKey()
    return pem
Exemplo n.º 4
0
    @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)