From be15049124860ccb7335b92215e8b8dfa1821bf9 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Tue, 16 Nov 2021 22:37:52 +0700 Subject: ASN.1: Staged encoding --- crypto/src/asn1/DerBoolean.cs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'crypto/src/asn1/DerBoolean.cs') diff --git a/crypto/src/asn1/DerBoolean.cs b/crypto/src/asn1/DerBoolean.cs index a6f972629..29e2d8bd9 100644 --- a/crypto/src/asn1/DerBoolean.cs +++ b/crypto/src/asn1/DerBoolean.cs @@ -81,25 +81,14 @@ namespace Org.BouncyCastle.Asn1 get { return value != 0; } } - internal override bool EncodeConstructed(int encoding) + internal override IAsn1Encoding GetEncoding(int encoding) { - return false; + return new PrimitiveEncoding(Asn1Tags.Universal, Asn1Tags.Boolean, GetContents(encoding)); } - internal override int EncodedLength(int encoding, bool withID) + internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo) { - return Asn1OutputStream.GetLengthOfEncodingDL(withID, 1); - } - - internal override void Encode(Asn1OutputStream asn1Out, bool withID) - { - byte contents = value; - if (Asn1OutputStream.EncodingDer == asn1Out.Encoding && IsTrue) - { - contents = 0xFF; - } - - asn1Out.WriteEncodingDL(withID, Asn1Tags.Boolean, contents); + return new PrimitiveEncoding(tagClass, tagNo, GetContents(encoding)); } protected override bool Asn1Equals( @@ -134,5 +123,16 @@ namespace Org.BouncyCastle.Asn1 return b == 0 ? False : b == 0xFF ? True : new DerBoolean(value); } + + private byte[] GetContents(int encoding) + { + byte contents = value; + if (Asn1OutputStream.EncodingDer == encoding && IsTrue) + { + contents = 0xFF; + } + + return new byte[]{ contents }; + } } } -- cgit 1.4.1