public async Task <string> EncryptAsync(string keyId, byte[] bytesToEncrypt) { AesKey aesKey = await _keyStore.GetKeyAsync(keyId) ?? await _keyStore.CreateKeyAsync(keyId); Byte[] bkey = Encoding.UTF8.GetBytes(aesKey.Key); Byte[] bIV = Encoding.UTF8.GetBytes(aesKey.IV); Byte[] encryptData = null; // encrypted data using (Aes Aes = Aes.Create()) { using (MemoryStream Memory = new MemoryStream()) { using (CryptoStream Encryptor = new CryptoStream(Memory, Aes.CreateEncryptor(bkey, bIV), CryptoStreamMode.Write)) { Encryptor.Write(bytesToEncrypt, 0, bytesToEncrypt.Length); Encryptor.FlushFinalBlock(); encryptData = Memory.ToArray(); } } string base64Enc = Convert.ToBase64String(encryptData); return(base64Enc); } }
public async Task GetKeyAsync_should_add_key_to_cache_if_not_exists() { Guid keyId = Guid.NewGuid(); await SimpleKeyStore.CreateKeyAsync(keyId.ToString()); Assert.Equal(0, GetCacheCount()); await _sut.GetKeyAsync(keyId.ToString()); Assert.Equal(1, GetCacheCount()); }
public async Task ConnectAsync(string hostName) { Close(); _socket = _socketFactory.Create(); _socket.OnMessage += OnMessage; _socket.Connect($"ws://{hostName}:3000"); if (!_socket.IsAlive) { throw new ConnectionException($"Unable to conenct to television at {hostName}."); } _hostName = hostName; var key = await _keyStore.GetKeyAsync(hostName); var handshakeCommand = new HandshakeCommand(key); var handshakeResponse = await SendCommandAsync <HandshakeResponse>(handshakeCommand); await _keyStore.StoreKeyAsync(hostName, handshakeResponse.Key); var mouseCommand = new MouseGetCommand(); var mouseGetResponse = await SendCommandAsync <MouseGetResponse>(mouseCommand); _mouseSocket = _socketFactory.Create(); _mouseSocket.Connect(mouseGetResponse.SocketPath); if (!_mouseSocket.IsAlive) { throw new ConnectionException($"Unable to conenct to television mouse service at {hostName}."); } }
public async Task <string> EncryptAsync(string keyId, byte[] bytesToEncrypt) { AsymmetricCipherKeyPair keys = await _keyStore.GetKeyAsync(keyId) ?? await _keyStore.CreateKeyAsync(keyId); SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keys.Public); RsaKeyParameters publicKey = (RsaKeyParameters)PublicKeyFactory.CreateKey(publicKeyInfo); using (RSA rsaa = RSA.Create()) { RSAParameters rsaParameters = new RSAParameters(); rsaParameters.Modulus = publicKey.Modulus.ToByteArrayUnsigned(); rsaParameters.Exponent = publicKey.Exponent.ToByteArrayUnsigned(); rsaa.ImportParameters(rsaParameters); byte[] enc = rsaa.Encrypt(bytesToEncrypt, _rsaEncryptionPadding); string base64Enc = Convert.ToBase64String(enc); return(base64Enc); } }
public async Task <T> GetKeyAsync(string keyId) { T key; byte[] keyInCache = await _cache.GetAsync(keyId); if (keyInCache != null) { key = (T)MessagePackSerializer.Typeless.Deserialize(keyInCache); } else { key = await _keystore.GetKeyAsync(keyId); keyInCache = MessagePackSerializer.Typeless.Serialize(key); await _cache.SetAsync(keyId, keyInCache); } return(key); }