-
Notifications
You must be signed in to change notification settings - Fork 25
Description
Hi,
I got following error after I upgrade AWS.EncryptionSDK, AWSSDK.KeyManagementService and AWSSDK.Core to latest version:
System.MissingMethodException: 'Method not found: 'Void Amazon.KeyManagementService.Model.GenerateDataKeyRequest.set_NumberOfBytes(Int32)'.'
This exception was originally thrown at this call stack: Com.Amazonaws.Kms.KeyManagementServiceShim.GenerateDataKey(Dafny.Com.Amazonaws.Kms._IGenerateDataKeyRequest) in KeyManagementServiceShim.cs Dafny.Aws.EncryptionSdk.Core.AwsKmsKeyring.AwsKmsKeyring.OnEncrypt(Dafny.Aws.EncryptionSdk.Core._IOnEncryptInput) in AwsKmsKeyring.cs Dafny.Aws.EncryptionSdk.Core.DefaultCMM.DefaultCMM.GetEncryptionMaterials(Dafny.Aws.EncryptionSdk.Core._IGetEncryptionMaterialsInput) in DefaultCMM.cs Dafny.Aws.EncryptionSdk.AwsEncryptionSdk.AwsEncryptionSdk.GetEncryptionMaterials(Dafny.Aws.EncryptionSdk.Core.ICryptographicMaterialsManager, Wrappers_Compile._IOption<Dafny.Aws.EncryptionSdk.Core._IAlgorithmSuiteId>, Wrappers_Compile._IOption<Dafny.IMap<Dafny.ISequence<byte>, Dafny.ISequence<byte>>>, long) in AwsEncryptionSdk.cs Dafny.Aws.EncryptionSdk.AwsEncryptionSdk.AwsEncryptionSdk.EncryptInternal(Dafny.Aws.EncryptionSdk._IEncryptInput) in AwsEncryptionSdk.cs Dafny.Aws.EncryptionSdk.AwsEncryptionSdk.AwsEncryptionSdk.Encrypt(Dafny.Aws.EncryptionSdk._IEncryptInput) in AwsEncryptionSdk.cs AWS.EncryptionSDK.AwsEncryptionSdk._Encrypt(AWS.EncryptionSDK.EncryptInput) in AwsEncryptionSdk.cs AWS.EncryptionSDK.AwsEncryptionSdkBase.Encrypt(AWS.EncryptionSDK.EncryptInput) in AwsEncryptionSdkBase.cs
And following is the versions I'm using:
<PackageReference Include="AWS.EncryptionSDK" Version="3.1.0" />
<PackageReference Include="AWSSDK.Core" Version="4.0.0.18" />
<PackageReference Include="AWSSDK.KeyManagementService" Version="4.0.3.9" />
And the error happened in Encrypt():
public string Encrypt(string plaintext, string keyArn)
{
MemoryStream plaintextStream = new MemoryStream(Encoding.UTF8.GetBytes(plaintext));
// Instantiate the Material Providers and the AWS Encryption SDK
var materialProviders = AwsCryptographicMaterialProvidersFactory.CreateDefaultAwsCryptographicMaterialProviders();
var encryptionSdk = AwsEncryptionSdkFactory.CreateDefaultAwsEncryptionSdk();
// Create the keyring that determines how your data keys are protected.
var createKeyringInput = new CreateAwsKmsKeyringInput
{
KmsClient = new AmazonKeyManagementServiceClient(),
KmsKeyId = keyArn
};
var keyring = materialProviders.CreateAwsKmsKeyring(createKeyringInput);
// Encrypt your plaintext data.
var encryptInput = new EncryptInput
{
Plaintext = plaintextStream,
Keyring = keyring,
EncryptionContext = _encryptionContext
};
var encryptOutput = encryptionSdk.Encrypt(encryptInput);
var ciphertext = encryptOutput.Ciphertext;
return WebEncoders.Base64UrlEncode(encryptOutput.Ciphertext.ToArray());
}
I've tried use AWS.Cryptography.EncryptionSDK instead, but still have the same problem after I upgrade all of them to latest version. Can someone help me have a look at this problem?