Google / Tink: используйте материал ключа шифрования AWS KMS Key, но получите исключение NullPointerException - PullRequest
0 голосов
/ 07 ноября 2018

Когда я использовал следующую демонстрацию для шифрования материала ключа, я получил исключение NullPointerException в методе AwsKmsClient (). GetAead ().

String masterKeyUri = "aws-kms://arn:aws:kms:us-east-1:007084425826:key/84a65985-f868-4bfc-83c2-366618acf147";
KeysetHandle keysetHandle = KeysetHandle.read(
        JsonKeysetReader.withFile(new File(keysetFilename)),
        new AwsKmsClient().getAead(masterKeyUri));

Я отладил и обнаружил, что клиент AWSKMS (this.client) в AwsKmsClient имеет значение null.

public Aead getAead(String uri) throws GeneralSecurityException {
        if (this.keyUri != null && !this.keyUri.equals(uri)) {
            throw new GeneralSecurityException(String.format("this client is bound to %s, cannot load keys bound to %s", this.keyUri, uri));
        } else {
            return new AwsKmsAead(this.client, Validators.validateKmsKeyUriAndRemovePrefix("aws-kms://", uri));
        }
    }

Вы знаете, как бороться с этой проблемой? или как правильно использовать AWS KMS? Заранее спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Извините за медленный ответ. Кажется, вы забыли добавить учетные данные?

Пожалуйста, попробуйте это и дайте мне знать, если это работает:

String masterKeyUri = "aws-kms://arn:aws:kms:us-east-1:007084425826:key/84a65985-f868-4bfc-83c2-366618acf147";
KeysetHandle keysetHandle = KeysetHandle.read(
        JsonKeysetReader.withFile(new File(keysetFilename)),
        new AwsKmsClient().withDefaultCredentials().getAead(masterKeyUri))

Хотя API можно улучшить. Я посмотрю, как это сделать.

...