diff options
Diffstat (limited to 'crypto/src/asn1/TaggedILEncoding.cs')
-rw-r--r-- | crypto/src/asn1/TaggedILEncoding.cs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/crypto/src/asn1/TaggedILEncoding.cs b/crypto/src/asn1/TaggedILEncoding.cs new file mode 100644 index 000000000..63c54e7bd --- /dev/null +++ b/crypto/src/asn1/TaggedILEncoding.cs @@ -0,0 +1,33 @@ +using System; + +namespace Org.BouncyCastle.Asn1 +{ + internal class TaggedILEncoding + : IAsn1Encoding + { + private readonly int m_tagClass; + private readonly int m_tagNo; + private readonly IAsn1Encoding m_contentsElement; + + internal TaggedILEncoding(int tagClass, int tagNo, IAsn1Encoding contentsElement) + { + m_tagClass = tagClass; + m_tagNo = tagNo; + m_contentsElement = contentsElement; + } + + void IAsn1Encoding.Encode(Asn1OutputStream asn1Out) + { + asn1Out.WriteIdentifier(Asn1Tags.Constructed | m_tagClass, m_tagNo); + asn1Out.WriteByte(0x80); + m_contentsElement.Encode(asn1Out); + asn1Out.WriteByte(0x00); + asn1Out.WriteByte(0x00); + } + + int IAsn1Encoding.GetLength() + { + return Asn1OutputStream.GetLengthOfEncodingIL(m_tagNo, m_contentsElement); + } + } +} |