Ejemplo n.º 1
0
        // Token: 0x06001C2F RID: 7215 RVA: 0x0006FDB8 File Offset: 0x0006DFB8
        internal string GetIssuerDisplayNameFromCertificate(X509Certificate2 certificate)
        {
            IList <KeyValuePair <Oid, string> > list = X500DistinguishedNameDecoder.Decode(certificate.IssuerName);

            if (list == null || list.Count == 0)
            {
                return(string.Empty);
            }
            foreach (KeyValuePair <Oid, string> keyValuePair in list)
            {
                if (string.Equals(keyValuePair.Key.Value, GetCertsInfo.commonNameOid.Value, StringComparison.OrdinalIgnoreCase))
                {
                    return(keyValuePair.Value);
                }
            }
            return(string.Empty);
        }
Ejemplo n.º 2
0
        // Token: 0x06001A0E RID: 6670 RVA: 0x00096EA0 File Offset: 0x000950A0
        private static string FormatSigningCertificateId(UserContext userContext)
        {
            byte[] array;
            try
            {
                array = Convert.FromBase64String(userContext.UserOptions.SigningCertificateId);
            }
            catch (FormatException)
            {
                return(null);
            }
            int num = 0;

            if (array.Length < num + 4)
            {
                return(null);
            }
            int num2 = BitConverter.ToInt32(array, num);

            num += 4;
            if (num2 == 1)
            {
                if (array.Length < num + 4)
                {
                    return(null);
                }
                int num3 = BitConverter.ToInt32(array, num);
                num += 4;
                if (array.Length < num + num3)
                {
                    return(null);
                }
                byte[] array2 = new byte[num3];
                Array.Copy(array, num, array2, 0, num3);
                StringBuilder stringBuilder = new StringBuilder(num3);
                foreach (KeyValuePair <Oid, string> keyValuePair in X500DistinguishedNameDecoder.Decode(new X500DistinguishedName(array2)))
                {
                    if (stringBuilder.Length != 0)
                    {
                        stringBuilder.Append(", ");
                    }
                    stringBuilder.Append(keyValuePair.Value);
                }
                num += num3;
                if (array.Length < num + 4)
                {
                    return(null);
                }
                int num4 = BitConverter.ToInt32(array, num);
                num += 4;
                if (array.Length < num + num4)
                {
                    return(null);
                }
                StringBuilder stringBuilder2 = new StringBuilder(num4 * 3);
                for (int i = num4 - 1; i >= 0; i--)
                {
                    stringBuilder2.AppendFormat(CultureInfo.InvariantCulture, "{0:x2}", new object[]
                    {
                        array[i + num]
                    });
                    if (i > 0)
                    {
                        stringBuilder2.Append(' ');
                    }
                }
                num += num4;
                return(string.Format(LocalizedStrings.GetNonEncoded(264112142), stringBuilder.ToString(), stringBuilder2.ToString()));
            }
            else
            {
                if (num2 != 2)
                {
                    return(null);
                }
                if (array.Length < num + 4)
                {
                    return(null);
                }
                int num5 = BitConverter.ToInt32(array, num);
                num += 4;
                if (array.Length < num + num5)
                {
                    return(null);
                }
                byte[] array3 = new byte[num5];
                Array.Copy(array, num, array3, 0, num5);
                AsnEncodedData asnEncodedData = new AsnEncodedData(array3);
                num += num5;
                return(string.Format(LocalizedStrings.GetNonEncoded(347942879), asnEncodedData.Format(false)));
            }
            string result;

            return(result);
        }
Ejemplo n.º 3
0
        // Token: 0x06001C2D RID: 7213 RVA: 0x0006F8E4 File Offset: 0x0006DAE4
        internal string GetIdFromCertificate(X509Certificate2 certificate)
        {
            string emailAdress = X509PartialCertificate.GetEmailAdress(certificate);

            if (!string.IsNullOrEmpty(emailAdress))
            {
                return(emailAdress);
            }
            string senderCertificateAttributesToDisplay = this.smimeAdminOptions.SenderCertificateAttributesToDisplay;

            if (string.IsNullOrEmpty(senderCertificateAttributesToDisplay))
            {
                return(null);
            }
            IList <KeyValuePair <Oid, string> > list = X500DistinguishedNameDecoder.Decode(certificate.SubjectName);

            if (list == null || list.Count == 0)
            {
                return(null);
            }
            StringBuilder stringBuilder = null;

            string[] array = this.smimeAdminOptions.SenderCertificateAttributesToDisplay.Split(GetCertsInfo.comma, StringSplitOptions.RemoveEmptyEntries);
            bool     flag  = true;
            bool     flag2 = false;

            foreach (string text in array)
            {
                string text2 = text.Trim();
                if (!string.IsNullOrEmpty(text2))
                {
                    Oid oid = new Oid(text2);
                    flag2 = false;
                    foreach (KeyValuePair <Oid, string> keyValuePair in list)
                    {
                        if (string.Equals(keyValuePair.Key.Value, oid.Value, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(keyValuePair.Value))
                        {
                            if (stringBuilder == null)
                            {
                                stringBuilder = new StringBuilder();
                            }
                            if (!flag)
                            {
                                stringBuilder.Append(", ");
                            }
                            else
                            {
                                flag = false;
                            }
                            stringBuilder.Append(keyValuePair.Value);
                            flag2 = true;
                            break;
                        }
                    }
                    if (!flag2)
                    {
                        return(null);
                    }
                }
            }
            if (stringBuilder == null)
            {
                return(null);
            }
            return(stringBuilder.ToString());
        }