Пример #1
0
        public override EnrollmentResult Enroll(ICertificateDataReader certificateDataReader, string csr, string subject, Dictionary <string, string[]> san, EnrollmentProductInfo productInfo, CSS.PKI.PKIConstants.X509.RequestFormat requestFormat, RequestUtilities.EnrollmentType enrollmentType)
        {
            Logger.MethodEntry(ILogExtensions.MethodLogLevel.Debug);

            foreach (KeyValuePair <string, string> configEntry in productInfo.ProductParameters)
            {
                Logger.Trace($"{configEntry.Key}: {configEntry.Value}");
            }

            string[][] parameterKeys = new string[][] { };
            if (enrollmentType == RequestUtilities.EnrollmentType.New)
            {
                parameterKeys = new string[][] { new string[] { "Email", "string" },
                                                 new string[] { "FirstName", "string" },
                                                 new string[] { "LastName", "string" },
                                                 new string[] { "Phone", "string" },
                                                 new string[] { "CertificatePeriodInYears", "int" } }
            }
            ;
            else
            {
                parameterKeys = new string[][] { new string[] { "PriorCertSN", "string" } }
            };

            ValidateParameters <string>(productInfo.ProductParameters, parameterKeys);

            POSTCertificateEnrollmentResponse enrollmentResponse = new POSTCertificateEnrollmentResponse();

            try
            {
                switch (enrollmentType)
                {
                case RequestUtilities.EnrollmentType.New:
                    switch (productInfo.ProductID)
                    {
                    case "DV_SSL":
                    case "DV_WILDCARD_SSL":
                    case "UCC_DV_SSL":
                        enrollmentResponse = EnrollDV(productInfo, csr, san);
                        break;

                    case "OV_SSL":
                    case "OV_CS":
                    case "OV_DS":
                    case "OV_WILDCARD_SSL":
                    case "UCC_OV_SSL":
                        enrollmentResponse = EnrollOV(productInfo, csr, san);
                        break;

                    case "EV_SSL":
                    case "UCC_EV_SSL":
                        enrollmentResponse = EnrollEV(productInfo, csr, san);
                        break;

                    default:
                        return(new EnrollmentResult {
                            Status = 30, StatusMessage = $"Error attempting to enroll certificate {subject}: Invalid Product ID - {productInfo.ProductID}."
                        });
                    }

                    break;

                case RequestUtilities.EnrollmentType.Renew:
                case RequestUtilities.EnrollmentType.Reissue:
                    CAConnectorCertificate certificate = certificateDataReader.GetCertificateRecord(DataConversion.HexToBytes(productInfo.ProductParameters["PriorCertSN"]));
                    enrollmentResponse = RenewReissue(certificate.CARequestID, productInfo, csr, san, enrollmentType == RequestUtilities.EnrollmentType.Renew);
                    break;

                default:
                    return(new EnrollmentResult {
                        Status = 30, StatusMessage = $"Unsupported EnrollmentType: {enrollmentType}"
                    });
                }
            }
            catch (Exception ex)
            {
                return(new EnrollmentResult {
                    Status = 30, StatusMessage = $"Error attempting to enroll certificate {subject}: {ex.Message}."
                });
            }

            EnrollmentResult result = new EnrollmentResult();

            CertificateStatusEnum certStatus = CertificateStatusEnum.PENDING_ISSUANCE;

            for (int i = 0; i < _enrollmentRetries; i++)
            {
                try
                {
                    GETCertificateDetailsResponse certResponse = JsonConvert.DeserializeObject <GETCertificateDetailsResponse>(_api.GetCertificate(enrollmentResponse.certificateId));
                    Enum.TryParse(certResponse.status, out certStatus);
                    if (certStatus == CertificateStatusEnum.ISSUED)
                    {
                        break;
                    }
                }
                catch (Exception) { }

                Thread.Sleep(_secondsBetweenEnrollmentRetries * 1000);
            }

            string pemCertificate = certStatus == CertificateStatusEnum.ISSUED ? RemovePEMHeader(JsonConvert.DeserializeObject <GETCertificateResponse>(_api.DownloadCertificate(enrollmentResponse.certificateId)).pems.certificate) : string.Empty;

            Logger.MethodExit(ILogExtensions.MethodLogLevel.Debug);

            return(new EnrollmentResult {
                CARequestID = enrollmentResponse.certificateId,
                Certificate = pemCertificate,
                Status = APIProcessor.MapReturnStatus(certStatus),
                StatusMessage = $"GoDaddy Status = {certStatus.ToString()}"
            });
        }
Пример #2
0
        public override EnrollmentResult Enroll(string csr, string subject, Dictionary <string, string[]> san, EnrollmentProductInfo productInfo, CSS.PKI.PKIConstants.X509.RequestFormat requestFormat, RequestUtilities.EnrollmentType enrollmentType)
        {
            Logger.MethodEntry(ILogExtensions.MethodLogLevel.Debug);

            Logger.MethodExit(ILogExtensions.MethodLogLevel.Debug);

            throw new NotImplementedException();
        }