Exemple #1
0
        public static async Task <byte[]> EncryptData(string toEncrypt, AccountCredentials credentials, string region, CancellationToken token = default)
        {
            try
            {
                var jsonMemStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(toEncrypt ?? ""));
                var cmk           = credentials.cmk;
                var kmsClient     = new AmazonKeyManagementServiceClient(credentials.AWSCredentials, RegionEndpoint.GetBySystemName(region));
                kmsClient.ExceptionEvent += KmsClient_ExceptionEvent;

                var dataKeyRequest = new GenerateDataKeyRequest()
                {
                    KeyId   = cmk, //"alias/console-test1846939174-user1846939660"
                    KeySpec = DataKeySpec.AES_128
                };


                GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest);

                var plaintextKey = await StreamToByteArray(dataKeyResponse.Plaintext);

                var encryptedKey = await StreamToByteArray(dataKeyResponse.CiphertextBlob);

                var key = encryptedKey;

                var encryptedResponse = await kmsClient.EncryptAsync(new EncryptRequest()
                {
                    KeyId     = cmk,
                    Plaintext = jsonMemStream,
                }, token);

                var dataBytes = await GetByteDataPackage(encryptedResponse, key);

                //var dataBytes = Encoding.ASCII.GetBytes(dataPack);
                return(dataBytes);
            }
            catch (Exception exc)  //took just over 15 seconds
            {
            }
            return(null);
        }
Exemple #2
0
        public static async Task PutFile(int cnt, Settings settings, AccountCredentials credentials)
        {
            try
            {
                AmazonS3Client s3Client = new AmazonS3Client(credentials.AWSCredentials,
                                                             RegionEndpoint.GetBySystemName(settings.S3Region)
                                                             );
                var str       = $"Hello world {cnt} from {settings.ParticipantId} on {settings.DeviceId} at {DateTime.Now.ToShortDateString()}";
                var dataBytes = await EncryptData(str, credentials, settings.S3Region);

                using (MemoryStream encryptedStream = new MemoryStream(dataBytes))
                {
                    var toPut = new PutObjectRequest()
                    {
                        BucketName  = settings.S3Bucket,
                        Key         = $"{settings.ParticipantId}-{cnt}- byte cypher-test3.bin",
                        ContentType = "text/plain",
                        InputStream = encryptedStream
                    };
                    await s3Client.PutObjectAsync(toPut);
                }
            }
            catch (WebException exc)
            {
                var c = exc;
            }
            //catch(AmazonS3Exception exc)
            //{
            //    if(exc.ErrorCode == "InvalidAccessKeyId" || exc.ErrorCode == "SignatureDoesNotMatch" || exc.ErrorCode == "InvalidToken")
            //    {
            //        var t = "retry";
            //    }
            //}
            catch (Exception exc)
            {
                throw;
            }
        }