diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-11-11 14:06:03 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-11-11 14:06:03 +0700 |
commit | 46230a012af2824a5e742db8e6dc5b23c720d696 (patch) | |
tree | 9cd842e680b7a9e3eac925f05bde504bb8670859 /crypto/src/asn1/BerSequence.cs | |
parent | Handle high tag numbers (diff) | |
download | BouncyCastle.NET-ed25519-46230a012af2824a5e742db8e6dc5b23c720d696.tar.xz |
ASN.1: Update encoding in line with bc-java
Diffstat (limited to 'crypto/src/asn1/BerSequence.cs')
-rw-r--r-- | crypto/src/asn1/BerSequence.cs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/crypto/src/asn1/BerSequence.cs b/crypto/src/asn1/BerSequence.cs index c8c5bbbbd..a92b70f98 100644 --- a/crypto/src/asn1/BerSequence.cs +++ b/crypto/src/asn1/BerSequence.cs @@ -1,7 +1,5 @@ using System; -using Org.BouncyCastle.Utilities; - namespace Org.BouncyCastle.Asn1 { public class BerSequence @@ -48,14 +46,25 @@ namespace Org.BouncyCastle.Asn1 { } - internal override int EncodedLength(bool withID) + internal override int EncodedLength(int encoding, bool withID) { - throw Platform.CreateNotImplementedException("BerSequence.EncodedLength"); + if (Asn1OutputStream.EncodingBer != encoding) + return base.EncodedLength(encoding, withID); + + int totalLength = withID ? 4 : 3; + + for (int i = 0, count = elements.Length; i < count; ++i) + { + Asn1Object asn1Object = elements[i].ToAsn1Object(); + totalLength += asn1Object.EncodedLength(encoding, true); + } + + return totalLength; } internal override void Encode(Asn1OutputStream asn1Out, bool withID) { - if (!asn1Out.IsBer) + if (Asn1OutputStream.EncodingBer != asn1Out.Encoding) { base.Encode(asn1Out, withID); return; |