toBytes method

  1. @override
List<int> toBytes([
  1. EncodeType encodeType = EncodeType.comprossed
])
override

Implementation

@override
List<int> toBytes([EncodeType encodeType = EncodeType.comprossed]) {
  List<int> encode() {
    final xBytes = BigintUtils.toBytes(
      x,
      length: BigintUtils.bitlengthInBytes(curve.p),
    );
    final yBytes = BigintUtils.toBytes(
      y,
      length: BigintUtils.bitlengthInBytes(curve.p),
    );
    return [...xBytes, ...yBytes];
  }

  switch (encodeType) {
    case EncodeType.raw:
      return encode();
    case EncodeType.uncompressed:
      return [0x04, ...encode()];
    case EncodeType.hybrid:
      final raw = encode();
      int prefix = 0x06;
      if (y.isOdd) {
        prefix = 0x07;
      }
      return [prefix, ...raw];
    default:
      final List<int> xBytes = BigintUtils.toBytes(
        x,
        length: BigintUtils.bitlengthInBytes(curve.p),
      );
      int prefix = 0x02;
      if (y.isOdd) {
        prefix = 0x03;
      }
      return [prefix, ...xBytes];
  }
}