// 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); }
// 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); }
// 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()); }