publicKey method

  1. @override
KeyPair publicKey(
  1. Uint8List sk
)
override

Implementation

@override
base.KeyPair publicKey(Uint8List sk) {
  // only 2 valid lengths for sk are 32 and 64 or throw exception
  if (sk.length != 32 && sk.length != 64) {
    throw Exception("Invalid secret key length");
  }

  // if sk length is 32, it is a seed, not a secret key
  if (sk.length == 32) {
    return cryptoSignSeedKeypair(sk);
  }

  var seed = sodium!.crypto.sign.skToSeed(SecureKey.fromList(sodium!, sk));
  var temp =
      sodium!.crypto.sign.seedKeyPair(SecureKey.fromList(sodium!, seed.extractBytes()));
  return base.KeyPair(temp.publicKey, temp.secretKey.extractBytes());
}