Example #1
0
    def test_seed_encode_decode_secp256k1(self):
        hex_string = "CF2DE378FBDD7E2EE87D486DFB5A7BFF"
        encoded_string = "sn259rEFXrQrWyx3Q7XneWcwV6dfL"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.SECP256K1)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.SECP256K1)
Example #2
0
    def test_seed_encode_decode_ed25519_high(self):
        hex_string = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
        encoded_string = "sEdV19BLfeQeKdEXyYA4NhjPJe6XBfG"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.ED25519)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.ED25519)
Example #3
0
    def test_seed_encode_decode_ed25519_low(self):
        hex_string = "00000000000000000000000000000000"
        encoded_string = "sEdSJHS4oiAdz7w2X2ni1gFiqtbJHqE"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.ED25519)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.ED25519)
Example #4
0
    def test_seed_encode_decode_ed25519(self):
        hex_string = "4C3A1D213FBDFB14C7C28D609469B341"
        encoded_string = "sEdTM1uX8pu2do5XvTnutH6HsouMaM2"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.ED25519)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.ED25519)
Example #5
0
    def test_seed_encode_decode_secp256k1_high(self):
        hex_string = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
        encoded_string = "saGwBRReqUNKuWNLpUAq8i8NkXEPN"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.SECP256K1)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.SECP256K1)
Example #6
0
    def test_seed_encode_decode_secp256k1_low(self):
        hex_string = "00000000000000000000000000000000"
        encoded_string = "sp6JS7f14BuwFY8Mw6bTtLKWauoUs"
        hex_string_bytes = bytes.fromhex(hex_string)

        encode_result = addresscodec.encode_seed(hex_string_bytes,
                                                 CryptoAlgorithm.SECP256K1)
        self.assertEqual(encode_result, encoded_string)

        decode_result, encoding_type = addresscodec.decode_seed(encoded_string)
        self.assertEqual(decode_result, hex_string_bytes)
        self.assertEqual(encoding_type, CryptoAlgorithm.SECP256K1)
Example #7
0
def generate_seed(
    entropy: Optional[str] = None,
    algorithm: CryptoAlgorithm = CryptoAlgorithm.ED25519,
) -> str:
    """
    Generates a seed suitable for use with derive.

    Args:
        entropy: Must be at least addresscodec.SEED_LENGTH bytes long and
            will be truncated to that length
        algorithm: CryptoAlgorithm to use for seed generation

    Returns:
        A seed suitable for use with derive
    """
    if entropy is None:
        parsed_entropy = token_bytes(addresscodec.SEED_LENGTH)
    else:
        parsed_entropy = bytes(entropy, "UTF-8")[:addresscodec.SEED_LENGTH]
    return addresscodec.encode_seed(parsed_entropy, algorithm)
Example #8
0
def generate_seed(
    entropy: Optional[str] = None,
    algorithm: CryptoAlgorithm = CryptoAlgorithm.ED25519,
) -> str:
    """
    Generate a seed value that cryptographic keys can be derived from.

    Args:
        entropy: Must be at least addresscodec.SEED_LENGTH bytes long and
            will be truncated to that length
        algorithm: CryptoAlgorithm to use for seed generation. The  default is
            :data:`CryptoAlgorithm.ED25519 <xrpl.CryptoAlgorithm.ED25519>`.

    Returns:
        A seed value that can be used to derive a key pair with the given
            cryptographic algorithm.
    """
    if entropy is None:
        parsed_entropy = token_bytes(addresscodec.SEED_LENGTH)
    else:
        parsed_entropy = bytes(entropy, "UTF-8")[: addresscodec.SEED_LENGTH]
    return addresscodec.encode_seed(parsed_entropy, algorithm)