Skip to content

[.NET] Support for AWSSDK for .NET v4 (System.MissingMethodException) #801

@anranstl

Description

@anranstl

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .net codeenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions