diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-10-14 22:49:24 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-10-14 22:49:24 +0700 |
commit | 378482f5a877e34ae9cabade06d6f3111c088f49 (patch) | |
tree | 79c396cc9b79d129e95ec3927c54d139d6b5bc72 /crypto/src/asn1/DERExternal.cs | |
parent | Add withID to Encode method (diff) | |
download | BouncyCastle.NET-ed25519-378482f5a877e34ae9cabade06d6f3111c088f49.tar.xz |
Initial pass at EncodedLength methods
Diffstat (limited to 'crypto/src/asn1/DERExternal.cs')
-rw-r--r-- | crypto/src/asn1/DERExternal.cs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/crypto/src/asn1/DERExternal.cs b/crypto/src/asn1/DERExternal.cs index 4f3c6ed6c..f457917ca 100644 --- a/crypto/src/asn1/DERExternal.cs +++ b/crypto/src/asn1/DERExternal.cs @@ -89,7 +89,32 @@ namespace Org.BouncyCastle.Asn1 ExternalContent = externalData.ToAsn1Object(); } - internal override void Encode(Asn1OutputStream asn1Out, bool withID) + internal override int EncodedLength(bool withID) + { + int contentsLength = 0; + if (directReference != null) + { + contentsLength += directReference.EncodedLength(true); + } + if (indirectReference != null) + { + contentsLength += indirectReference.EncodedLength(true); + } + if (dataValueDescriptor != null) + { + // TODO[asn1] + //contentsLength += dataValueDescriptor.ToDerObject().EncodedLength(true); + contentsLength += dataValueDescriptor.GetDerEncoded().Length; + } + + // TODO[asn1] + //contentsLength += new DerTaggedObject(true, encoding, externalContent).EncodedLength(true); + contentsLength += new DerTaggedObject(Asn1Tags.External, externalContent).EncodedLength(true); + + return Asn1OutputStream.GetLengthOfEncodingDL(withID, contentsLength); + } + + internal override void Encode(Asn1OutputStream asn1Out, bool withID) { MemoryStream ms = new MemoryStream(); WriteEncodable(ms, directReference); |