// Decompiled with JetBrains decompiler // Type: Microsoft.InfoCards.X509RecipientIdentity // Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // MVID: ADE0A079-11DB-4A46-8BDE-D2A592CA8DEA // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Expiro.w-67b630ead60119692b9abbdfd8717c96904ef041127c2cae033c86b718eaa61e.exe using Microsoft.InfoCards.Diagnostics; using System; using System.IdentityModel.Tokens; using System.Security.Cryptography.X509Certificates; using System.ServiceModel; namespace Microsoft.InfoCards { internal class X509RecipientIdentity : RecipientIdentity { private X509Certificate2Collection m_certificates; private Recipient.RecipientCertParameters m_recipientParams; private bool isChainTrusted; public Recipient.RecipientCertParameters RecipientParams => this.m_recipientParams; public X509Certificate2 LeafCertificate => this.m_certificates[0]; public X509RecipientIdentity(EndpointAddress epr, X509Certificate2Collection certificates) : base(epr) { this.m_certificates = certificates; } public override void Validate() { if (this.HasBeenValidated) return; this.isChainTrusted = this.ValidateCertificate(); this.Identifier = Recipient.CertGetRecipientIdHash(this.LeafCertificate, this.m_certificates, this.isChainTrusted, out this.m_recipientParams); this.OrganizationIdentifier = Recipient.CertGetRecipientOrganizationIdHash(this.LeafCertificate, this.m_certificates, this.ValidateCertificate()); this.OrganizationPPIDIdentifier = Recipient.CertGetRecipientOrganizationPPIDSeedHash(this.LeafCertificate, this.m_certificates, this.ValidateCertificate()); this.HasBeenValidated = true; } public override string GetName() { string name = this.LeafCertificate.FriendlyName; if (string.IsNullOrEmpty(name)) name = this.LeafCertificate.GetNameInfo(X509NameType.SimpleName, false); return name; } private bool ValidateCertificate() { bool chainTrustPassed = false; try { InfoCardX509Validator.ValidateChainOrPeer(this.LeafCertificate, this.m_certificates, out chainTrustPassed); } catch (SecurityTokenValidationException ex) { throw InfoCardTrace.ThrowHelperError((Exception) new IdentityValidationException(SR.GetString("RecipientCertificateNotValid"), (Exception) ex)); } return chainTrustPassed; } } }