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)
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)
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)
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)
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)
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)
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)
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)