EOSPublicKey.fromString constructor

EOSPublicKey.fromString(
  1. String keyStr
)

Construct EOS public key from string

Implementation

factory EOSPublicKey.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 eosRegex = RegExp(r"^EOS", caseSensitive: true, multiLine: false);
    if (!eosRegex.hasMatch(keyStr)) {
      throw InvalidKey("No leading EOS");
    }
    String publicKeyStr = keyStr.substring(3);
    Uint8List buffer = EOSKey.decodeKey(publicKeyStr);
    return EOSPublicKey.fromBuffer(buffer);
  } else if (match.length == 1) {
    Match m = match.first;
    String? keyType = m.group(1);
    Uint8List buffer = EOSKey.decodeKey(m.group(2)!, keyType);
    return EOSPublicKey.fromBuffer(buffer);
  } else {
    throw InvalidKey('Invalid public key format');
  }
}