init commit
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using Org.BouncyCastle.Asn1;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Security.Certificates;
|
||||
|
||||
namespace Org.BouncyCastle.X509;
|
||||
|
||||
public class X509CertificatePair
|
||||
{
|
||||
private readonly X509Certificate forward;
|
||||
|
||||
private readonly X509Certificate reverse;
|
||||
|
||||
public X509Certificate Forward => forward;
|
||||
|
||||
public X509Certificate Reverse => reverse;
|
||||
|
||||
public X509CertificatePair(X509Certificate forward, X509Certificate reverse)
|
||||
{
|
||||
this.forward = forward;
|
||||
this.reverse = reverse;
|
||||
}
|
||||
|
||||
public X509CertificatePair(CertificatePair pair)
|
||||
{
|
||||
if (pair.Forward != null)
|
||||
{
|
||||
forward = new X509Certificate(pair.Forward);
|
||||
}
|
||||
if (pair.Reverse != null)
|
||||
{
|
||||
reverse = new X509Certificate(pair.Reverse);
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] GetEncoded()
|
||||
{
|
||||
try
|
||||
{
|
||||
X509CertificateStructure x509CertificateStructure = null;
|
||||
X509CertificateStructure x509CertificateStructure2 = null;
|
||||
if (forward != null)
|
||||
{
|
||||
x509CertificateStructure = X509CertificateStructure.GetInstance(Asn1Object.FromByteArray(forward.GetEncoded()));
|
||||
if (x509CertificateStructure == null)
|
||||
{
|
||||
throw new CertificateEncodingException("unable to get encoding for forward");
|
||||
}
|
||||
}
|
||||
if (reverse != null)
|
||||
{
|
||||
x509CertificateStructure2 = X509CertificateStructure.GetInstance(Asn1Object.FromByteArray(reverse.GetEncoded()));
|
||||
if (x509CertificateStructure2 == null)
|
||||
{
|
||||
throw new CertificateEncodingException("unable to get encoding for reverse");
|
||||
}
|
||||
}
|
||||
return new CertificatePair(x509CertificateStructure, x509CertificateStructure2).GetDerEncoded();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new CertificateEncodingException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!(obj is X509CertificatePair x509CertificatePair))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (object.Equals(forward, x509CertificatePair.forward))
|
||||
{
|
||||
return object.Equals(reverse, x509CertificatePair.reverse);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
int num = -1;
|
||||
if (forward != null)
|
||||
{
|
||||
num ^= forward.GetHashCode();
|
||||
}
|
||||
if (reverse != null)
|
||||
{
|
||||
num *= 17;
|
||||
num ^= reverse.GetHashCode();
|
||||
}
|
||||
return num;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user