public EnrollementDTO GetEnrollmentInfo(String apiEndpoint, long enrollmentID) { String html = string.Empty; String URL = requestProtocol + Constants.BASE_URL + "/" + apiEndpoint + "?serialNo=" + enrollmentID + "&actionType=key"; EnrollementDTO enrollmentDTOForRemoteInit; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); enrollmentDTOForRemoteInit = new EnrollementDTO(); PopulateEnrollmentDTOFromApi(reader, enrollmentDTOForRemoteInit); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Enrollment Data Fetch Exception" + ex); throw new Exception("Enrollment Data Fetch Exception"); } return(enrollmentDTOForRemoteInit); }
private void PopulateEnrollmentDTOFromApi(StreamReader reader, EnrollementDTO enrollmentDTO) { int index = 0; String line = String.Empty; Console.WriteLine("API Call For EnrollmentDTO"); //depricated while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); LegacyEnrollementDTOInitialaization(index, line, enrollmentDTO); index++; } }
protected static X509Name GenerateRelativeDistinguishedName(EnrollementDTO enrollmentDTO) { IDictionary attributes = new Hashtable(); IList ordering; attributes.Add(X509Name.CN, enrollmentDTO.getCommonName()); attributes.Add(X509Name.O, enrollmentDTO.organization); attributes.Add(X509Name.OU, enrollmentDTO.organizationUnit); attributes.Add(X509Name.C, enrollmentDTO.country); attributes.Add(X509Name.ST, enrollmentDTO.state); attributes.Add(X509Name.L, enrollmentDTO.area); attributes.Add(X509Name.PostalCode, enrollmentDTO.postalCode); attributes.Add(X509Name.SerialNumber, enrollmentDTO.getSerialNumber()); ordering = new ArrayList(attributes.Keys); return(new X509Name(ordering, attributes)); }
private void SaveKeys(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO) { switch (enrollmentDTO.keyStoreType) { case Constants.KeyStore.SMART_CARD: { WritePrivateKeyToSmartCard(asymmetricCipherKeyPair, enrollmentDTO); } break; case Constants.KeyStore.WINDOWS: { WritePrivateKeyToWindowsKeystore(asymmetricCipherKeyPair, enrollmentDTO); } break; } }
public void KeyGeneratorCaller(long serverGeneratedEnrollmentID) { //confession of economic hitman EnrollementDTO enrollmentDTO = null; BigInteger enrollmentID = null; AsymmetricCipherKeyPair asymmetricCipherKeyPair; Pkcs10CertificationRequest certificationRequest; GetEnrollmentDTO(out enrollmentDTO, serverGeneratedEnrollmentID); enrollmentID = BigInteger.ValueOf(enrollmentDTO.ID); IsPassphaseCorrect(InputHandler.GetUserPassPhase(), enrollmentDTO.passPhase); //populate AsymmetricCipherKeyPair asymmetricCipherKeyPair = GetKeyPair(); //populate Pkcs10CertificationRequest certificationRequest = GetCSR(asymmetricCipherKeyPair, enrollmentDTO); // save generated private key into windows or smart card store. SaveKeys(asymmetricCipherKeyPair, enrollmentDTO); //Generate .p7b in server GenerationRequestToServerForDotP7B(enrollmentDTO.ID, enrollmentDTO.keyStoreType, certificationRequest); Console.WriteLine("Key Generation and Write: Done Successfully"); }
internal Pkcs10CertificationRequest GenerateCertificateSigningRequest(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO) { Pkcs10CertificationRequest pkcs10CertificationRequest = null; try { X509Name x509NameAsSubject = GenerateRelativeDistinguishedName(enrollmentDTO); Asn1SignatureFactory asn1SignatureFactory = new Asn1SignatureFactory(Constants.Algorithm.SIGNING, asymmetricCipherKeyPair.Private); pkcs10CertificationRequest = new Pkcs10CertificationRequest(asn1SignatureFactory, x509NameAsSubject, asymmetricCipherKeyPair.Public, null, asymmetricCipherKeyPair.Private); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("CSR generation failed : " + ex); throw new Exception("CSR generation failed"); } return(pkcs10CertificationRequest); }
private void LegacyEnrollementDTOInitialaization(int index, String line, EnrollementDTO enrollmentDTO) { switch (index) { case 0: enrollmentDTO.ID = long.Parse(line); break; case 1: enrollmentDTO.firstName = line; break; case 2: enrollmentDTO.lastName = line; break; case 3: enrollmentDTO.email = line; break; case 4: enrollmentDTO.organization = line; break; case 5: enrollmentDTO.organizationUnit = line; break; case 6: enrollmentDTO.subjectAtlName = line; //email break; case 7: enrollmentDTO.area = line; break; case 8: enrollmentDTO.address = line; //blank break; case 9: enrollmentDTO.country = line; break; case 10: enrollmentDTO.state = line; break; case 11: enrollmentDTO.postalCode = line; break; case 12: enrollmentDTO.mobileNumber = line; //blank break; case 13: enrollmentDTO.serialNumber = line; //blank break; case 14: enrollmentDTO.passPhase = line; break; case 15: enrollmentDTO.identityType = line; break; case 16: enrollmentDTO.identityNo = line; break; case 17: enrollmentDTO.keyStoreType = Int32.Parse(line); break; case 18: enrollmentDTO.smartCardType = Int32.Parse(line); break; default: break; } }
private void WritePrivateKeyToWindowsKeystore(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO) { WindowsKeystoreHandler windowsKeystoreHandler = new WindowsKeystoreHandler(); windowsKeystoreHandler.writePrivateKey(asymmetricCipherKeyPair, enrollmentDTO.ID); }
private ObjectHandle WritePrivateKeyToSmartCard(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO) { Pkcs1xHandler pkcs1xHandler = new Pkcs1xHandler(); SmartCardHandler smartCardHandler = new SmartCardHandler(); ObjectHandle objectHandle; Session smartCardSession = null; { smartCardHandler.Start(out smartCardSession); objectHandle = smartCardHandler.ImportPrivateKeyToSmartCard(smartCardSession, asymmetricCipherKeyPair, enrollmentDTO.ID); smartCardHandler.Destroy(smartCardSession); } return(objectHandle); }
private void GetEnrollmentDTO(out EnrollementDTO enrollmentDTO, long serverGeneratedEnrollmentID) { enrollmentDTO = new NetworkHandler().GetEnrollmentInfo(Constants.PartialUrlOfApi.ENROLLMENT_INFO, serverGeneratedEnrollmentID); }
private Pkcs10CertificationRequest GetCSR(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO) { return(new Pkcs1xHandler().GenerateCertificateSigningRequest(asymmetricCipherKeyPair, enrollmentDTO)); }