sign method
Signs bytes.
Example
In this example, we use Ed25519
:
import 'package:cryptography/cryptography.dart';
Future<void> main() async {
final signedMessage = [1,2,3];
final ed25519 = Ed25519();
final keyPair = await ed25519.newKeyPair();
final signature = await ed25519.sign(
signedMessage,
keyPair: keyPair,
);
// ...
final isRealSignature = await ed25519.verify(
signedMessage,
signature: signature,
);
print('Signature verification result: $isRealSignature');
}
Implementation
@override
Future<Signature> sign(
List<int> message, {
required KeyPair keyPair,
}) async {
if (isSupportedPlatform) {
final keyPairData = await keyPair.extract();
if (keyPairData is! RsaKeyPairData) {
throw ArgumentError.value(
keyPair,
'keyPair',
);
}
final result = await invokeMethod(
'RsaPss.sign',
{
'data': base64Encode(message),
'd': base64Encode(keyPairData.d),
'e': base64Encode(keyPairData.e),
'n': base64Encode(keyPairData.n),
'p': base64Encode(keyPairData.p),
'q': base64Encode(keyPairData.q),
},
);
final bytes = base64Decode(result['bytes'] as String);
return Signature(
bytes,
publicKey: await keyPairData.extractPublicKey(),
);
}
return await fallback.sign(
message,
keyPair: keyPair,
);
}