public async Task <IActionResult> GenerateNewDeviceCertificate([FromBody] DeviceCertificateRequestModel deviceCertificateRequest) { //Get Intermediate certificate properties var certificateProperties = _config.SigningCertificates?.Find(p => p.DeviceType.ToLower().StartsWith(deviceCertificateRequest.DeviceType.ToLower())); if (certificateProperties == null) { throw new Exception($"No matching devicetype found for {deviceCertificateRequest.DeviceType}."); } byte[] certificate = null; //Use a Certificate Signature Request generate from the Device. Generally safer as the private key does not travel. //Currently not working if (!string.IsNullOrEmpty(deviceCertificateRequest.Csr)) { certificate = await _certificateCsrSignator.SignCertificate(certificateProperties, Convert.FromBase64String(deviceCertificateRequest.Csr)); } if (certificate != null) { return(Ok(new DeviceCertificateModel() { DpsIdScope = _config.DPSIdScope, DpsInstance = _config.DPSInstance, Certificate = Convert.ToBase64String(certificate), DeviceType = certificateProperties.DeviceType })); } return(StatusCode(StatusCodes.Status500InternalServerError)); }
public Task <DeviceCertificateModel> GenerateDeviceCertificate(DeviceCertificateRequestModel deviceCertificateRequestModel) { return(Task.FromResult(new DeviceCertificateModel() { Certificate = "asdf", DeviceType = "SmartBulb", DpsIdScope = "", DpsInstance = "asdf" })); }
public async Task <DeviceCertificateModel> GenerateDeviceCertificate(DeviceCertificateRequestModel deviceCertificateRequestModel) { var request = PrepareRequest("/Certificates", Method.POST, deviceCertificateRequestModel); var result = await client.ExecutePostTaskAsync <DeviceCertificateModel>(request); if (result.IsSuccessful) { return(result.Data); } logger.Log($"Error generating device certificate. Status code: {result.StatusCode}, Error Message: {result.ErrorMessage}"); return(null); }
public async Task <DeviceCertificateModel> GenerateCertificate(DeviceCertificateRequestModel deviceRequestObj) { RestRequest request = await PrepareQuery("Certificates", Method.POST); request.AddParameter("application/json", JsonConvert.SerializeObject(deviceRequestObj), ParameterType.RequestBody); var queryResult = await _client.ExecuteTaskAsync <DeviceCertificateModel>(request); if (queryResult.IsSuccessful) { return(queryResult.Data); } else { Debug.WriteLine($"CreationModel: Error while adding a device: {queryResult.StatusCode}"); } return(null); }