public App( IKeyStorageContainer keyStorageContainer, IStorageContainer storageContainer, IPreferencesManager preferencesManager, IDeviceInformationService deviceInformationService) { Mvx.RegisterSingleton(keyStorageContainer); Mvx.RegisterSingleton(storageContainer); Mvx.RegisterSingleton(preferencesManager); Mvx.RegisterSingleton(deviceInformationService); }
public SecureChannelService( ICryptoService cryptoService, IStorageContainer storageContainer, IKeyStorageContainer keyStorageContainer, IDeviceInformationService deviceInformationService) { _storageContainer = storageContainer; _keyStorageContainer = keyStorageContainer; _deviceId = deviceInformationService.DeviceId; _cryptoService = cryptoService; _httpClient = new HttpClient { BaseAddress = new Uri(_baseUrl), Timeout = TimeSpan.FromSeconds(20) }; }
public async Task <IActionResult> ExchangeTripleDesKeys( [FromBody] ExchangePublicKeyModel exchangePublicKeyModel, [FromServices] ISecurityService securityService, [FromServices] ICryptoService cryptoService, [FromServices] IKeyStorageContainer storageContainer) { if (ModelState.IsValid) { var rsaKey = await securityService.GetPrivateRSAKeyAsync("server"); var clientRsaKey = await securityService.GetClientPublicRSAKeysAsync(exchangePublicKeyModel.Id); var encryptedClientTripleDesKey = Convert.FromBase64String(exchangePublicKeyModel.Key); var decryptedClientTripleDesKey = await cryptoService.DecryptRSAAsync(encryptedClientTripleDesKey, rsaKey); var tripleDesKey = await cryptoService.GenerateTripleDESKeyAsync(); var mergedKey = cryptoService.GenerateCombinedTripleDesKey(tripleDesKey, Convert.FromBase64String(decryptedClientTripleDesKey)); cryptoService.RegisterMergedKey(exchangePublicKeyModel.Id, mergedKey); var model = new ExchangePublicKeyModel { Id = "server", Key = Convert.ToBase64String(tripleDesKey) }; var encryptedModel = await cryptoService.EncryptRSAAsync(JsonConvert.SerializeObject(model), clientRsaKey); _logger.LogInformation("merged key: " + Convert.ToBase64String(mergedKey)); return(Json(Convert.ToBase64String(encryptedModel))); } else { return(BadRequest(ModelState.ValidationState)); } }
/// <summary> /// Constructor /// </summary> /// <param name="cryptoService">Intance of the crypto service</param> /// <param name="keyStorageContainer">Instance of the key storage container</param> public SecurityService(ICryptoService cryptoService, IKeyStorageContainer keyStorageContainer) { _cryptoService = cryptoService; _keyStorageContainer = keyStorageContainer; }