diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-03-05 14:56:01 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-03-05 14:56:01 +0700 |
commit | cc722c1881f86bd2c4690b84f8bd99969a63fc80 (patch) | |
tree | 08ffb1d22f99c5d0e16a8e5ca25b4d5362269bd9 /crypto/src/asn1/Asn1Encodable.cs | |
parent | Support 'leaveOpen' in Asn1 streams (diff) | |
download | BouncyCastle.NET-ed25519-cc722c1881f86bd2c4690b84f8bd99969a63fc80.tar.xz |
Improve Asn1 encoding
- reduced allocations for GetEncoded
Diffstat (limited to 'crypto/src/asn1/Asn1Encodable.cs')
-rw-r--r-- | crypto/src/asn1/Asn1Encodable.cs | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/crypto/src/asn1/Asn1Encodable.cs b/crypto/src/asn1/Asn1Encodable.cs index 15918afb0..a6b8d38b9 100644 --- a/crypto/src/asn1/Asn1Encodable.cs +++ b/crypto/src/asn1/Asn1Encodable.cs @@ -18,18 +18,16 @@ namespace Org.BouncyCastle.Asn1 ToAsn1Object().EncodeTo(output, encoding); } + // TODO[api] Make virtual and override in Asn1Object public byte[] GetEncoded() { - MemoryStream bOut = new MemoryStream(); - ToAsn1Object().EncodeTo(bOut); - return bOut.ToArray(); + return ToAsn1Object().InternalGetEncoded(Ber); } + // TODO[api] Make virtual and override in Asn1Object public byte[] GetEncoded(string encoding) { - MemoryStream bOut = new MemoryStream(); - ToAsn1Object().EncodeTo(bOut, encoding); - return bOut.ToArray(); + return ToAsn1Object().InternalGetEncoded(encoding); } /** @@ -54,19 +52,16 @@ namespace Org.BouncyCastle.Asn1 return ToAsn1Object().CallAsn1GetHashCode(); } - public sealed override bool Equals( - object obj) + public sealed override bool Equals(object obj) { if (obj == this) return true; - IAsn1Convertible other = obj as IAsn1Convertible; - - if (other == null) + if (!(obj is IAsn1Convertible that)) return false; - Asn1Object o1 = ToAsn1Object(); - Asn1Object o2 = other.ToAsn1Object(); + Asn1Object o1 = this.ToAsn1Object(); + Asn1Object o2 = that.ToAsn1Object(); return o1 == o2 || (null != o2 && o1.CallAsn1Equals(o2)); } |