Нам нужно хэшировать и проверять токен JWT, используя пользовательский AsymmetricSecurityKey, который использует API Google KMS Cloud для подписи / проверки токена.

Хэш-логика работает нормально, вот реализация:

public override byte[] Sign(byte[] input)
{
    string projectId = "<PROJECT-ID>";

    string location = "global";

    var locationName = new LocationName(projectId, location);

    // Instantiate a Cloud KMS client.
    var client = KeyManagementServiceClient.Create();

    var cryptoKeyVersion = new CryptoKeyVersionName(projectId, location, "test", "asymmetric-signing-key", "1");

    var publicKey = client.GetPublicKey(cryptoKeyVersion);

    byte[] hashedInput;
    using (var hasher = SHA256.Create())
    {
        hashedInput = hasher.ComputeHash(input);
    }

    var digest = new Digest
    {
        Sha256 = ByteString.CopyFrom(hashedInput)
    };

    var asymmetricSignResponse = client.AsymmetricSign(cryptoKeyVersion, digest);

    var output = asymmetricSignResponse.Signature.ToByteArray();

    return output;
}

Мне нужно знать, как проверить подпись, я пробовал много разных способов и библиотек, но всегда терпит неудачу

Документация Google KMS по созданию и проверке цифровых подписей здесь не имеет реализации для .NET C #

Ценю твою помощь!

0
Ahmed Yehia 26 Фев 2020 в 22:34

2 ответа

Лучший ответ