encodeSingleKey static method

List<int> encodeSingleKey(
  1. IPublicKey publicKey
)

encode public key to SignleKey address

Implementation

static List<int> encodeSingleKey(IPublicKey publicKey) {
  try {
    final pubkeyBytes = switch (publicKey.curve) {
      EllipticCurveTypes.secp256k1 => publicKey.uncompressed,
      EllipticCurveTypes.ed25519 => publicKey.compressed.sublist(1),
      _ =>
        throw AddressConverterException.addressKeyValidationFailed(
          reason: "Unsuported ${publicKey.curve.name} public key.",
        ),
    };
    final structLayout = {publicKey.curve.name: pubkeyBytes};
    final encode = AptosAddrConst.singleKeyAddressLayout.serialize(
      structLayout,
    );
    return hashKeyBytes(
      bytes: encode,
      scheme: AptosAddrConst.signleKeyAddressFlag,
    );
  } on AddressConverterException {
    rethrow;
  } catch (e) {
    throw AddressConverterException.addressBytesValidationFailed(
      details: {"error": e.toString()},
    );
  }
}