public async Task <KeyModel> Create(string ownerPublicKey, KeyModel model) { var existing = await _keyData.GetByPublicKey(model.PublicKey); if (existing != null) { throw new ApiGatewayException("A key with same PublicKey already exists", HttpStatusCode.BadRequest); } var ownerKey = await _keyData.GetByPublicKey(ownerPublicKey); model.OwnerKeyId = ownerKey.Id; var result = await _keyData.Create(model); await ReGenerateSecret1(ownerPublicKey, result.PublicKey); var keyModel = await ReGenerateSecret2(ownerPublicKey, result.PublicKey); _logger.LogInformation(LogEvents.NewKeyCreated, string.Empty, ownerPublicKey, model.PublicKey); return(keyModel); }