Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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++;
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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");
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
        private void WritePrivateKeyToWindowsKeystore(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO)
        {
            WindowsKeystoreHandler windowsKeystoreHandler = new WindowsKeystoreHandler();

            windowsKeystoreHandler.writePrivateKey(asymmetricCipherKeyPair, enrollmentDTO.ID);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 private void GetEnrollmentDTO(out EnrollementDTO enrollmentDTO, long serverGeneratedEnrollmentID)
 {
     enrollmentDTO = new NetworkHandler().GetEnrollmentInfo(Constants.PartialUrlOfApi.ENROLLMENT_INFO, serverGeneratedEnrollmentID);
 }
Ejemplo n.º 11
0
 private Pkcs10CertificationRequest GetCSR(AsymmetricCipherKeyPair asymmetricCipherKeyPair, EnrollementDTO enrollmentDTO)
 {
     return(new Pkcs1xHandler().GenerateCertificateSigningRequest(asymmetricCipherKeyPair, enrollmentDTO));
 }