publicKey method
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());
}