예제 #1
0
        /// <summary>
        /// Get Raw data
        /// </summary>
        /// <returns></returns>
        public static byte[] ToRawData(this X509CrlModel model)
        {
            const string certPemHeader = "-----BEGIN X509 CRL-----";
            const string certPemFooter = "-----END X509 CRL-----";

            if (model.Crl == null)
            {
                throw new ArgumentNullException(nameof(model.Crl));
            }
            switch (model.Crl.Type)
            {
            case JTokenType.Bytes:
                return((byte[])model.Crl);

            case JTokenType.String:
                var request = (string)model.Crl;
                if (request.Contains(certPemHeader,
                                     StringComparison.OrdinalIgnoreCase))
                {
                    var strippedCertificateRequest = request.Replace(
                        certPemHeader, "", StringComparison.OrdinalIgnoreCase);
                    strippedCertificateRequest = strippedCertificateRequest.Replace(
                        certPemFooter, "", StringComparison.OrdinalIgnoreCase);
                    return(Convert.FromBase64String(strippedCertificateRequest));
                }
                return(Convert.FromBase64String(request));

            default:
                throw new ArgumentException("Bad crl data.", nameof(model.Crl));
            }
        }
예제 #2
0
 /// <summary>
 /// Convert to service model
 /// </summary>
 /// <returns></returns>
 public static Crl ToStackModel(this X509CrlModel model)
 {
     return(CrlEx.ToCrl(model.ToRawData()));
 }