57 lines
1.2 KiB
C#
57 lines
1.2 KiB
C#
using Org.BouncyCastle.Asn1.X509;
|
|
using Org.BouncyCastle.Math;
|
|
using Org.BouncyCastle.Utilities;
|
|
using Org.BouncyCastle.X509.Store;
|
|
|
|
namespace Org.BouncyCastle.Cms;
|
|
|
|
public class RecipientID : X509CertStoreSelector
|
|
{
|
|
private byte[] keyIdentifier;
|
|
|
|
public byte[] KeyIdentifier
|
|
{
|
|
get
|
|
{
|
|
return Arrays.Clone(keyIdentifier);
|
|
}
|
|
set
|
|
{
|
|
keyIdentifier = Arrays.Clone(value);
|
|
}
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int num = Arrays.GetHashCode(keyIdentifier) ^ Arrays.GetHashCode(base.SubjectKeyIdentifier);
|
|
BigInteger bigInteger = base.SerialNumber;
|
|
if (bigInteger != null)
|
|
{
|
|
num ^= bigInteger.GetHashCode();
|
|
}
|
|
X509Name x509Name = base.Issuer;
|
|
if (x509Name != null)
|
|
{
|
|
num ^= x509Name.GetHashCode();
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj == this)
|
|
{
|
|
return true;
|
|
}
|
|
if (!(obj is RecipientID recipientID))
|
|
{
|
|
return false;
|
|
}
|
|
if (Arrays.AreEqual(keyIdentifier, recipientID.keyIdentifier) && Arrays.AreEqual(base.SubjectKeyIdentifier, recipientID.SubjectKeyIdentifier) && object.Equals(base.SerialNumber, recipientID.SerialNumber))
|
|
{
|
|
return X509CertStoreSelector.IssuersMatch(base.Issuer, recipientID.Issuer);
|
|
}
|
|
return false;
|
|
}
|
|
}
|