Exemplo n.º 1
0
def sign_deposit_data(deposit_data: DepositMessage, sk: int) -> Deposit:
    '''
    Given a DepositMessage, it signs its root and returns a Deposit
    '''
    assert bls.PrivToPub(sk) == deposit_data.pubkey
    domain = compute_domain()
    signing_root = compute_signing_root(deposit_data, domain)
    signed_deposit_data = Deposit(**deposit_data.as_dict(),
                                  signature=bls.Sign(sk, signing_root))
    return signed_deposit_data
Exemplo n.º 2
0
 def encrypt(cls, *, secret: bytes, password: str, path: str='',
             kdf_salt: bytes=randbits(256).to_bytes(32, 'big'),
             aes_iv: bytes=randbits(128).to_bytes(16, 'big')):
     keystore = cls()
     keystore.crypto.kdf.params['salt'] = kdf_salt
     decryption_key = keystore.kdf(password=password, **keystore.crypto.kdf.params)
     keystore.crypto.cipher.params['iv'] = aes_iv
     cipher = AES_128_CTR(key=decryption_key[:16], **keystore.crypto.cipher.params)
     keystore.crypto.cipher.message = cipher.encrypt(secret)
     keystore.crypto.checksum.message = SHA256(decryption_key[16:32] + keystore.crypto.cipher.message)
     keystore.pubkey = bls.PrivToPub(int.from_bytes(secret, 'big')).hex()
     keystore.path = path
     return keystore
Exemplo n.º 3
0
def test_fast_aggregate_verify(SKs, message):
    PKs = [G2ProofOfPossession.PrivToPub(sk) for sk in SKs]
    signatures = [G2ProofOfPossession.Sign(sk, message) for sk in SKs]
    aggregate_signature = G2ProofOfPossession.Aggregate(signatures)
    assert G2ProofOfPossession.FastAggregateVerify(PKs, message,
                                                   aggregate_signature)
Exemplo n.º 4
0
def test_pop(sk):
    pk = G2ProofOfPossession.PrivToPub(sk)
    proof = G2ProofOfPossession.PopProve(sk)
    assert G2ProofOfPossession.PopVerify(pk, proof)
Exemplo n.º 5
0
from py_ecc.bls import G2ProofOfPossession as bls
from eth2spec.phase0 import spec

privkeys = [i + 1 for i in range(spec.SLOTS_PER_EPOCH * 16)]
pubkeys = [bls.PrivToPub(privkey) for privkey in privkeys]
pubkey_to_privkey = {
    pubkey: privkey
    for privkey, pubkey in zip(privkeys, pubkeys)
}
Exemplo n.º 6
0
 def withdrawal_pk(self):
     return bls.PrivToPub(self.withdrawal_sk)
Exemplo n.º 7
0
 def signing_pk(self):
     return bls.PrivToPub(self.signing_sk)
Exemplo n.º 8
0
 def signing_pk(self) -> bytes:
     return bls.PrivToPub(self.signing_sk)