У меня есть следующий код, который генерирует цифровую подпись:
byte[] GetSignature(byte[] message, byte[] privateKey)
{
var ecParams = NistNamedCurves.GetByName("P-256");
var domainParameters = new ECDomainParameters(ecParams.Curve, ecParams.G, ecParams.N, ecParams.H, ecParams.GetSeed());
var d = new BigInteger(1, privateKey);
var privateKeyParameters = new ECPrivateKeyParameters(d, domainParameters);
var signer = SignerUtilities.GetSigner("SHA-256withECDSA");
signer.Init(true, privateKeyParameters);
signer.BlockUpdate(message, 0, message.Length);
var signature = signer.GenerateSignature();
return signature;
}
Этот код возвращает 71-байтовый массив в формате ASN.1, однако мой код потребления ожидает, что подпись будет иметь размер 64 байта, состоящий из значения r и s. Я хотел бы извлечь массивы байтов r и s. Как мне это сделать?