createInvoiceDigitalSignature static method
Creates a digital signature for the given invoice hash using the provided private key.
invoiceHashBase64
- The Base64-encoded hash of the invoice.
privateKeyPem
- The PEM-encoded EC private key.
Returns the Base64-encoded digital signature.
Implementation
static String createInvoiceDigitalSignature(
String invoiceHashBase64,
String privateKeyPem,
) {
final invoiceHashBytes = base64.decode(invoiceHashBase64);
// Parse the EC private key from PEM format
final privateKey = _parseECPrivateKeyFromPem(privateKeyPem);
// Sign using SHA-256 with ECDSA
final signer = Signer('SHA-256/ECDSA');
signer.init(
true, // true = signing
ParametersWithRandom(
PrivateKeyParameter<ECPrivateKey>(privateKey),
_getSecureRandom(),
),
);
ECSignature sig =
signer.generateSignature(Uint8List.fromList(invoiceHashBytes))
as ECSignature;
// ASN.1 encode (DER format)
final asn1Seq =
ASN1Sequence()
..add(ASN1Integer(sig.r))
..add(ASN1Integer(sig.s));
final derEncoded = asn1Seq.encodedBytes;
return base64.encode(derEncoded);
}