validateReceiverEncoding static method

List<int> validateReceiverEncoding({
  1. required List<int> data,
  2. required Typecode typecode,
  3. required UnifiedReceiverMode mode,
})

Implementation

static List<int> validateReceiverEncoding({
  required List<int> data,
  required Typecode typecode,
  required UnifiedReceiverMode mode,
}) {
  final len = typecode.getLength(mode);
  if (len != null && data.length != len) {
    throw ZCashKeyEncodingError.invalidUnifiedBytes(mode);
  }
  switch (mode) {
    case UnifiedReceiverMode.address:
      return data;
    case UnifiedReceiverMode.fvk:
    case UnifiedReceiverMode.ivk:
      if (typecode == Typecode.p2sh) {
        throw ZCashKeyEncodingError.invalidUnifiedTypeCode(mode);
      }
      return data;
    case UnifiedReceiverMode.sk:
      if (typecode == Typecode.p2sh || typecode == Typecode.unknown) {
        throw ZCashKeyEncodingError.invalidUnifiedTypeCode(mode);
      }
      return data;
  }
}