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); } }
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); } }
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); }