Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 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);
        }