public async Task <AuthorizationToken> ParseAuthorizationToken(SerializedAuthorizationToken serializedAuthorizationToken) { return(_serializationService.DeserializeFromBytes <AuthorizationToken>( await _encryptThenMacService.ValidateAndDecrypt( _serializationService.DeserializeFromBytes <EncryptThenMacData>( Convert.FromBase64String(serializedAuthorizationToken.AuthorizationToken) ) ) )); }
public Task ProcessMessageAsCommand(byte[] messageBytes) { Message message = _serializationService.DeserializeFromBytes <Message>(messageBytes); ICommand command = _commandMessageDeserializer.DeserializeCommandFromMessage(message); return(_commandDispatcher.DispatchAsync(command)); }
public async Task <byte[]> ValidateAndDecrypt(EncryptThenMacData encryptThenMacData) { byte[] data = Convert.FromBase64String(encryptThenMacData.Data); byte[] hmac = Convert.FromBase64String(encryptThenMacData.Hmac); if (!await _hmacService.IsValid(hmac, data)) { throw new Exception("HMAC is not valid."); } AesEncryptedData aesEncryptedData = _serializationService.DeserializeFromBytes <AesEncryptedData>(data); return(await _aesEncryptionService.Decrypt(aesEncryptedData)); }