示例#1
0
        internal static Charset GetValidAndTrustedCharset(string charsetName, InboundConversionOptions options)
        {
            Charset validCharset = MimeHelpers.GetValidCharset(charsetName);

            if (validCharset != null && (options.TrustAsciiCharsets || !ConvertUtils.MimeStringEquals(charsetName, "us-ascii")))
            {
                return(validCharset);
            }
            return(null);
        }
示例#2
0
        private static bool IsMessageOpaqueSigned(ICoreItem coreItem, StreamAttachment attachment)
        {
            Util.ThrowOnNullArgument(coreItem, "coreItem");
            string valueOrDefault = coreItem.PropertyBag.GetValueOrDefault <string>(InternalSchema.ItemClass, string.Empty);

            if (!ObjectClass.IsSmime(valueOrDefault))
            {
                return(false);
            }
            coreItem.PropertyBag.Load(new PropertyDefinition[]
            {
                InternalSchema.NamedContentType
            });
            string valueOrDefault2 = coreItem.PropertyBag.GetValueOrDefault <string>(InternalSchema.NamedContentType);

            if (valueOrDefault2 != null)
            {
                byte[]            bytes  = CTSGlobals.AsciiEncoding.GetBytes(valueOrDefault2);
                ContentTypeHeader header = (ContentTypeHeader)Header.Create(HeaderId.ContentType);
                MimeInternalHelpers.SetHeaderRawValue(header, bytes);
                string headerParameter = MimeHelpers.GetHeaderParameter(header, "smime-type", 100);
                if (headerParameter == null || (!ConvertUtils.MimeStringEquals(headerParameter, "signed-data") && !ConvertUtils.MimeStringEquals(headerParameter, "certs-only")))
                {
                    return(false);
                }
            }
            string contentType = attachment.ContentType;

            if (string.Compare(contentType, "application/pkcs7-mime", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(contentType, "application/x-pkcs7-mime", StringComparison.OrdinalIgnoreCase) == 0)
            {
                return(true);
            }
            if (string.Compare(contentType, "application/octet-stream", StringComparison.OrdinalIgnoreCase) == 0)
            {
                string fileName = attachment.FileName;
                string strA     = string.Empty;
                if (fileName != null)
                {
                    string[] array = fileName.Split(new char[]
                    {
                        '.'
                    });
                    if (array.Length > 0)
                    {
                        strA = array[array.Length - 1];
                    }
                }
                return(string.Compare(strA, "p7m", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA, "p7c", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA, "p7s", StringComparison.OrdinalIgnoreCase) == 0);
            }
            return(false);
        }
示例#3
0
        public static Charset ChooseCharset(string partCharset, string messageCharset, InboundConversionOptions conversionOptions)
        {
            Charset charset = MimeHelpers.GetValidAndTrustedCharset(partCharset, conversionOptions);

            if (charset != null)
            {
                return(charset);
            }
            charset = MimeHelpers.GetValidAndTrustedCharset(messageCharset, conversionOptions);
            if (charset != null)
            {
                return(charset);
            }
            charset = conversionOptions.DefaultCharset;
            if (charset != null && charset.IsAvailable)
            {
                return(charset);
            }
            return(Culture.Default.MimeCharset);
        }
示例#4
0
 internal static string GetHeaderParameter(ComplexHeader header, string parameterName, InboundConversionOptions options)
 {
     return(MimeHelpers.GetHeaderParameter(header, parameterName, options.Limits.MaxMimeTextHeaderLength));
 }
示例#5
0
        internal static string GetHeaderValue(Header header, InboundConversionOptions options)
        {
            int lengthLimit = (options != null) ? options.Limits.MaxMimeTextHeaderLength : 2000;

            return(MimeHelpers.GetHeaderValue(header, lengthLimit));
        }
示例#6
0
 internal static string GetHeaderValue(HeaderList headers, HeaderId headerId, InboundConversionOptions options)
 {
     return(MimeHelpers.GetHeaderValue(headers.FindFirst(headerId), options));
 }