public bool AddDeviceProvisioningService(string deviceId)
        {
            try
            {
                Console.WriteLine("Starting TPM simulator.");
                using (var security = new SecurityProviderTpmSimulator(RegistrationId))

                    using (var transport = new ProvisioningTransportHandlerAmqp())
                    {
                        Console.WriteLine("Extracting endorsement key.");
                        string base64EK = Convert.ToBase64String(Encoding.ASCII.GetBytes(TpmEndorsementKey));//security.GetEndorsementKey());

                        Console.WriteLine($"\tRegistration ID: {RegistrationId}");
                        Console.WriteLine($"\tEndorsement key: {base64EK}");
                        Console.WriteLine("\tDevice ID: iothubtpmdevice1");
                        Console.WriteLine();
                        Console.WriteLine("Press ENTER when ready.");
                        Console.ReadLine();

                        ProvisioningDeviceClient provClient =
                            ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, _dpsIdScope, security, transport);

                        var sample = new ProvisioningDeviceClientSample(provClient, security);
                        sample.RunSampleAsync().GetAwaiter().GetResult();

                        return(true);
                    }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
        }
Ejemplo n.º 2
0
        public static int Main(string[] args)
        {
            if (string.IsNullOrWhiteSpace(s_idScope) && (args.Length > 0))
            {
                s_idScope = args[0];
            }

            if (string.IsNullOrWhiteSpace(s_idScope))
            {
                Console.WriteLine("ProvisioningDeviceClientSymmetricKey <IDScope>");
                return(1);
            }

            string primaryKey   = "";
            string secondaryKey = "";

            if (!String.IsNullOrEmpty(registrationId) && !String.IsNullOrEmpty(enrollmentGroupPrimaryKey) && !String.IsNullOrEmpty(enrollmentGroupSecondaryKey))
            {
                //Group enrollment flow, the primary and secondary keys are derived from the enrollment group keys and from the desired registration id
                primaryKey   = ComputeDerivedSymmetricKey(Convert.FromBase64String(enrollmentGroupPrimaryKey), registrationId);
                secondaryKey = ComputeDerivedSymmetricKey(Convert.FromBase64String(enrollmentGroupSecondaryKey), registrationId);
            }
            else if (!String.IsNullOrEmpty(registrationId) && !String.IsNullOrEmpty(individualEnrollmentPrimaryKey) && !String.IsNullOrEmpty(individualEnrollmentSecondaryKey))
            {
                //Individual enrollment flow, the primary and secondary keys are the same as the individual enrollment keys
                primaryKey   = individualEnrollmentPrimaryKey;
                secondaryKey = individualEnrollmentSecondaryKey;
            }
            else
            {
                Console.WriteLine("Invalid configuration provided, must provide group enrollment keys or individual enrollment keys");
                return(-1);
            }

            using (var security = new SecurityProviderSymmetricKey(registrationId, primaryKey, secondaryKey))

                // Select one of the available transports:
                // To optimize for size, reference only the protocols used by your application.
                using (var transport = new ProvisioningTransportHandlerAmqp(TransportFallbackType.TcpOnly))
                // using (var transport = new ProvisioningTransportHandlerHttp())
                // using (var transport = new ProvisioningTransportHandlerMqtt(TransportFallbackType.TcpOnly))
                // using (var transport = new ProvisioningTransportHandlerMqtt(TransportFallbackType.WebSocketOnly))
                {
                    ProvisioningDeviceClient provClient =
                        ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, s_idScope, security, transport);

                    var sample = new ProvisioningDeviceClientSample(provClient, security);
                    sample.RunSampleAsync().GetAwaiter().GetResult();
                }
            Console.WriteLine("Enter any key to exit");
            Console.ReadLine();
            return(0);
        }
        public static async Task Main(string[] args)
        {
            // Parse application parameters
            Parameters parameters            = null;
            ParserResult <Parameters> result = Parser.Default.ParseArguments <Parameters>(args)
                                               .WithParsed(parsedParams =>
            {
                parameters = parsedParams;
            })
                                               .WithNotParsed(errors =>
            {
                Environment.Exit(1);
            });

            var sample = new ProvisioningDeviceClientSample(parameters);
            await sample.RunSampleAsync();
        }
        public bool AddDeviceWithDeviceProvisioningCertificateAsync(string deviceId)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(_dpsIdScope))
                {
                    Console.WriteLine("ProvisioningDeviceClientX509 <IDScope>");
                    return(false);
                }

                var certificate = LoadPrivateKey(@"C:/Users/abgaurav/IOT/solutions/device-provisioning/key.pfx");

                using (var security = new SecurityProviderX509Certificate(certificate))

                    using (var transport = new ProvisioningTransportHandlerAmqp(TransportFallbackType.TcpOnly))
                    {
                        ProvisioningDeviceClient provClient =
                            ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, _dpsIdScope, security, transport);

                        //var result = await provClient.RegisterAsync();

                        //Console.WriteLine($"Provisioning result: {result.Status}");

                        //if (result.Status != ProvisioningRegistrationStatusType.Assigned)
                        //{
                        //    throw new InvalidOperationException("Something went wrong while trying to provision.");
                        //}

                        //this.assignedHub = result.AssignedHub;
                        //this.auth = new DeviceAuthenticationWithX509Certificate(result.DeviceId, security.GetAuthenticationCertificate());

                        var sample = new ProvisioningDeviceClientSample(provClient, security);
                        sample.RunSampleAsync().GetAwaiter().GetResult();
                    }
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
        }
Ejemplo n.º 5
0
        public static async Task <int> Main(string[] args)
        {
            // Parse application parameters
            Parameters parameters            = null;
            ParserResult <Parameters> result = Parser.Default.ParseArguments <Parameters>(args)
                                               .WithParsed(parsedParams =>
            {
                parameters = parsedParams;
            })
                                               .WithNotParsed(errors =>
            {
                Environment.Exit(1);
            });

            var sample = new ProvisioningDeviceClientSample(parameters);
            await sample.RunSampleAsync();

            Console.WriteLine("Enter any key to exit.");
            Console.ReadKey();

            return(0);
        }