Код: Выделить всё
using System.Security.Cryptography;
using (ECDsa ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256))
{
string input = "some base64 encoded data";
byte[] data_bytes = Convert.FromBase64String(input);
byte[] hash = SHA256.Create().ComputeHash(data_bytes);
byte[] publicKeyBytes = ecdsa.ExportSubjectPublicKeyInfo();
Console.WriteLine($"Public Key:\n{Convert.ToBase64String(publicKeyBytes)}\n");
// Sign the hash using the Rfc3279DerSequence format
byte[] signature_der = ecdsa.SignHash(hash, DSASignatureFormat.Rfc3279DerSequence);
bool isValid_der = ecdsa.VerifyHash(hash, signature_der, DSASignatureFormat.Rfc3279DerSequence);
Console.WriteLine($"Signature valid: {isValid_der}\n");
string signature_b64_der = Convert.ToBase64String(signature_der);
Console.WriteLine($"DER Signature:\n{signature_b64_der}\n");
// Sign the hash using the IeeeP1363FixedFieldConcatenation format
byte[] signature_ieee = ecdsa.SignHash(hash, DSASignatureFormat.IeeeP1363FixedFieldConcatenation);
bool isValid_ieee = ecdsa.VerifyHash(hash, signature_ieee, DSASignatureFormat.IeeeP1363FixedFieldConcatenation);
Console.WriteLine($"Signature valid: {isValid_ieee}\n");
string signature_b64_ieee = Convert.ToBase64String(signature_ieee);
Console.WriteLine($"IEEE Signature:\n{signature_b64_ieee}\n");
}
Похоже, что подпись, возвращаемая Azure Key Vault, возвращается только в формате IEEE P1363, и я не нашел способа вернуть RFC. Формат последовательности 3279 DER.
Мой вопрос: есть ли способ получить подпись Azure Key Vault в другом формате и, конечно же, иметь возможность проверить эту подпись?
Я попробовал использовать CryptographyClient.SignAsync, но он снова возвращает только формат IEEE P1363, а мне нужен и другой формат (если возможно).
Подробнее здесь: https://stackoverflow.com/questions/791 ... ure-format
Мобильная версия