MalwareSourceCode/MSIL/Virus/Win32/E/Virus.Win32.Expiro.w-67b630ead60119692b9abbdfd8717c96904ef041127c2cae033c86b718eaa61e/Microsoft/InfoCards/X509RecipientIdentity.cs
2022-08-18 06:28:56 -05:00

65 lines
2.5 KiB
C#

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