AMAXPublicKey.fromString constructor

AMAXPublicKey.fromString(
  1. String keyStr
)

Construct AMAX public key from string

Implementation

factory AMAXPublicKey.fromString(String keyStr) {
  RegExp publicRegex = RegExp(r"^PUB_([A-Za-z0-9]+)_([A-Za-z0-9]+)", caseSensitive: true, multiLine: false);
  Iterable<Match> match = publicRegex.allMatches(keyStr);

  if (match.isEmpty) {
    RegExp amaRegex = RegExp(r"^AM", caseSensitive: true, multiLine: false);
    if (!amaRegex.hasMatch(keyStr)) {
      throw InvalidKey("No leading AM");
    }
    String publicKeyStr = keyStr.substring(2);
    Uint8List buffer = AMAXKey.decodeKey(publicKeyStr);
    return AMAXPublicKey.fromBuffer(buffer);
  } else if (match.length == 1) {
    Match m = match.first;
    String? keyType = m.group(1);
    Uint8List buffer = AMAXKey.decodeKey(m.group(2)!, keyType);
    return AMAXPublicKey.fromBuffer(buffer);
  } else {
    throw InvalidKey('Invalid public key format');
  }
}