コード例 #1
0
        /// <summary>
        /// Download the issued certificate.
        /// </summary>
        /// <see cref="https://tools.ietf.org/html/rfc8555#section-7.4.2"/>
        public async Task <AcmeResponse <X509Certificate2Collection> > OrderCertificateGetAsync(string certificateUrl)
        {
            Logger.Info("Getting an ACME certificate list. Params:{@params}", certificateUrl);

            var response = await Request(certificateUrl,
                                         new RequestParams
            {
                Method  = HttpMethod.Post,
                Payload = ""
            });

            var chain        = new X509Certificate2Collection();
            var mediaContnet = (MediaTypeContent)response.Content;
            var rawData      = mediaContnet.ToArray();

            switch (mediaContnet.Type)
            {
            case "application/pkix-cert":
                chain.Add(new X509Certificate2(rawData));
                break;

            case "application/pem-certificate-chain":
                var dec = Encoding.UTF8.GetString(rawData);
                chain.AddRange(PemConverter.Decode(dec).Select(o => new X509Certificate2(o)).ToArray());
                break;

            case "application/pkcs7-mime":
                chain.Import(rawData);
                break;

            default:
                throw new Exception("Wrong Content type");
            }
            var resp = new AcmeResponse <X509Certificate2Collection>()
            {
                StatusCode = (int)response.StatusCode,
                // todo need upgrade
                //ReplayNonce = replayNonceValues?.FirstOrDefault(),
                //Location = locationValues?.FirstOrDefault(),
                //Links = linksValues != null ? new LinkHeaderCollection(linksValues.ToArray()) : null,
                Content = chain,
            };

            return(resp);
        }
コード例 #2
0
        protected override void OnExecute()
        {
            var bytes = System.IO.File.ReadAllBytes(File);
            var raw   = PemConverter.IsPEM(bytes)
                ? PemConverter.Decode(bytes)
                : bytes;

            var signedCms = new SignedCms();

            signedCms.Decode(raw);

            PrintInfoCms(signedCms);

            try
            {
                signedCms.CheckSignature(false);
                Print.Info("Valid signature.");
            } catch (Exception e)
            {
                Print.Info($"{e.Message}");
                Environment.Exit(1);
            }
        }
コード例 #3
0
        public void Decode()
        {
            var res = PemConverter.Decode(PEM);

            Assert.Equal(DATA, Convert.ToBase64String(res[0]));
        }