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); }
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; } }