mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 19:36:11 +00:00
f2ac1ece55
add
65 lines
2.5 KiB
C#
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: 516D8B44-4448-4D2C-8B8E-FFBB3FFE472B
|
|
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Expiro.w-69bb73081eac86b8cf86f45e33515d0095855636967076e2b593d7a30cd80a07.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;
|
|
}
|
|
}
|
|
}
|