Signature.fromSerializedString constructor

Signature.fromSerializedString(
  1. String serialized
)

Deserialize a signature encoded with serialize into its component parts

Implementation

Signature.fromSerializedString(String serialized) {
  if (serialized.contains('+') || serialized.contains('/')) {
    throw new Exception('string not base64 url safe encoding');
  }
  final decomposedPayload = serialized.split(".");
  if (decomposedPayload.length != 4) {
    throw Exception('Signature should contain 4 parts');
  }
  final signed = decomposedPayload[0];
  final signingStrategy = decomposedPayload[1];
  final encodedSignature = decomposedPayload[2];
  final encodedData = decomposedPayload[3];

  if (signed == 'Sign' && signingStrategy.substring(0, 3) == 'Rsa') {
    this.keySize = int.parse(signingStrategy.substring(3));
    this.signature = base64Url.decode(encodedSignature);
    this.data = base64Url.decode(encodedData);
  } else {
    throw new Exception('String is not a serialized RSA signature');
  }
}