createInvoiceDigitalSignature static method

String createInvoiceDigitalSignature(
  1. String invoiceHashBase64,
  2. String privateKeyPem
)

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);
}