diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-05-04 13:08:25 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-05-04 13:08:25 +0700 |
commit | 525dad93ce6d9444bab33f68fa5a43d8d9b9f94b (patch) | |
tree | 2cec4a9619a2f2edf88dc7b3536f106d96544ad7 /crypto/src/cms | |
parent | When there is reference equality, Equals() should return true. (diff) | |
download | BouncyCastle.NET-ed25519-525dad93ce6d9444bab33f68fa5a43d8d9b9f94b.tar.xz |
Refactoring in CMS cert selectors
Diffstat (limited to 'crypto/src/cms')
-rw-r--r-- | crypto/src/cms/OriginatorId.cs | 51 | ||||
-rw-r--r-- | crypto/src/cms/RecipientId.cs | 56 | ||||
-rw-r--r-- | crypto/src/cms/SignerId.cs | 49 |
3 files changed, 49 insertions, 107 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); } } } diff --git a/crypto/src/cms/RecipientId.cs b/crypto/src/cms/RecipientId.cs index 815f3ff90..c4107b14e 100644 --- a/crypto/src/cms/RecipientId.cs +++ b/crypto/src/cms/RecipientId.cs @@ -1,58 +1,40 @@ using System; -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Math; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509.Store; namespace Org.BouncyCastle.Cms { + // TODO[api] sealed public class RecipientID - : X509CertStoreSelector + : X509CertStoreSelector, IEquatable<RecipientID> { - private byte[] keyIdentifier; + private byte[] m_keyIdentifier; public byte[] KeyIdentifier { - get { return Arrays.Clone(keyIdentifier); } - set { keyIdentifier = Arrays.Clone(value); } + get { return Arrays.Clone(m_keyIdentifier); } + set { m_keyIdentifier = Arrays.Clone(value); } } - public override int GetHashCode() + public virtual bool Equals(RecipientID other) { - int code = Arrays.GetHashCode(keyIdentifier) - ^ 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 + : Arrays.AreEqual(m_keyIdentifier, other.m_keyIdentifier) + && MatchesSubjectKeyIdentifier(other) + && MatchesSerialNumber(other) + && MatchesIssuer(other); } - public override bool Equals( - object obj) - { - if (obj == this) - return true; + public override bool Equals(object obj) => Equals(obj as RecipientID); - RecipientID id = obj as RecipientID; - - if (id == null) - return false; - - return Arrays.AreEqual(keyIdentifier, id.keyIdentifier) - && Arrays.AreEqual(SubjectKeyIdentifier, id.SubjectKeyIdentifier) - && Objects.Equals(SerialNumber, id.SerialNumber) - && IssuersMatch(Issuer, id.Issuer); + public override int GetHashCode() + { + return Arrays.GetHashCode(m_keyIdentifier) + ^ GetHashCodeOfSubjectKeyIdentifier() + ^ Objects.GetHashCode(SerialNumber) + ^ Objects.GetHashCode(Issuer); } } } diff --git a/crypto/src/cms/SignerId.cs b/crypto/src/cms/SignerId.cs index 3d38a58dc..ca84a6cf7 100644 --- a/crypto/src/cms/SignerId.cs +++ b/crypto/src/cms/SignerId.cs @@ -1,51 +1,30 @@ using System; -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Math; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509.Store; namespace Org.BouncyCastle.Cms { - /** - * a basic index for a signer. - */ + // TODO[api] sealed public class SignerID - : X509CertStoreSelector + : X509CertStoreSelector, IEquatable<SignerID> { - public override int GetHashCode() + public virtual bool Equals(SignerID 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 true; + public override bool Equals(object obj) => Equals(obj as SignerID); - SignerID id = obj as SignerID; - - if (id == null) - return false; - - 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); } } } |