diff options
Diffstat (limited to 'crypto/src/cms/OriginatorId.cs')
-rw-r--r-- | crypto/src/cms/OriginatorId.cs | 51 |
1 files changed, 16 insertions, 35 deletions
diff --git a/crypto/src/cms/OriginatorId.cs b/crypto/src/cms/OriginatorId.cs index 6ae64c503..440112736 100644 --- a/crypto/src/cms/OriginatorId.cs +++ b/crypto/src/cms/OriginatorId.cs @@ -1,49 +1,30 @@ -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Math; +using System; + using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509.Store; namespace Org.BouncyCastle.Cms { - /** - * a basic index for an originator. - */ + // TODO[api] sealed public class OriginatorID - : X509CertStoreSelector + : X509CertStoreSelector, IEquatable<OriginatorID> { - public override int GetHashCode() + public virtual bool Equals(OriginatorID other) { - int code = Arrays.GetHashCode(this.SubjectKeyIdentifier); - - BigInteger serialNumber = this.SerialNumber; - if (serialNumber != null) - { - code ^= serialNumber.GetHashCode(); - } - - X509Name issuer = this.Issuer; - if (issuer != null) - { - code ^= issuer.GetHashCode(); - } - - return code; + return other == null ? false + : other == this ? true + : MatchesSubjectKeyIdentifier(other) + && MatchesSerialNumber(other) + && MatchesIssuer(other); } - public override bool Equals( - object obj) - { - if (obj == this) - return false; - - OriginatorID id = obj as OriginatorID; - - if (id == null) - return false; + public override bool Equals(object obj) => Equals(obj as OriginatorID); - return Arrays.AreEqual(SubjectKeyIdentifier, id.SubjectKeyIdentifier) - && Objects.Equals(SerialNumber, id.SerialNumber) - && IssuersMatch(Issuer, id.Issuer); + public override int GetHashCode() + { + return GetHashCodeOfSubjectKeyIdentifier() + ^ Objects.GetHashCode(SerialNumber) + ^ Objects.GetHashCode(Issuer); } } } |