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(
          "Unsupported public key: Aptos SingleKey can only be generated from secp256k1 or ed25519 public keys.")
    };
    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("Invalid aptos MultiKey address bytes.",
        details: {"error": e.toString()});
  }
}