internal override void Encode( DerOutputStream derOut) { if (derOut is Asn1OutputStream || derOut is BerOutputStream) { derOut.WriteTag((byte)(Asn1Tags.Constructed | Asn1Tags.Tagged), tagNo); derOut.WriteByte(0x80); if (!IsEmpty()) { if (!explicitly) { IEnumerable eObj; if (obj is Asn1OctetString) { if (obj is BerOctetString) { eObj = (BerOctetString) obj; } else { Asn1OctetString octs = (Asn1OctetString)obj; eObj = new BerOctetString(octs.GetOctets()); } } else if (obj is Asn1Sequence) { eObj = (Asn1Sequence) obj; } else if (obj is Asn1Set) { eObj = (Asn1Set) obj; } else { throw Platform.CreateNotImplementedException(obj.GetType().Name); } foreach (Asn1Encodable o in eObj) { derOut.WriteObject(o); } } else { derOut.WriteObject(obj); } } derOut.WriteByte(0x00); derOut.WriteByte(0x00); } else { base.Encode(derOut); } }
public byte[] GetEncoded( string encoding) { if (encoding.Equals(Der)) { MemoryStream bOut = new MemoryStream(); DerOutputStream dOut = new DerOutputStream(bOut); dOut.WriteObject(this); return bOut.ToArray(); } return GetEncoded(); }
internal override void Encode( DerOutputStream derOut) { lock (this) { if (parsed) { base.Encode(derOut); } else { derOut.WriteEncoded(Asn1Tags.Sequence | Asn1Tags.Constructed, encoded); } } }
/* * A note on the implementation: * <p> * As Der requires the constructed, definite-length model to * be used for structured types, this varies slightly from the * ASN.1 descriptions given. Rather than just outputing Sequence, * we also have to specify Constructed, and the objects length. */ internal override void Encode( DerOutputStream derOut) { // TODO Intermediate buffer could be avoided if we could calculate expected length MemoryStream bOut = new MemoryStream(); DerOutputStream dOut = new DerOutputStream(bOut); foreach (Asn1Encodable obj in this) { dOut.WriteObject(obj); } dOut.Close(); byte[] bytes = bOut.ToArray(); derOut.WriteEncoded(Asn1Tags.Sequence | Asn1Tags.Constructed, bytes); }
internal override void Encode( DerOutputStream derOut) { char[] c = str.ToCharArray(); byte[] b = new byte[c.Length * 2]; for (int i = 0; i != c.Length; i++) { b[2 * i] = (byte)(c[i] >> 8); b[2 * i + 1] = (byte)c[i]; } derOut.WriteEncoded(Asn1Tags.BmpString, b); }
internal override void Encode(DerOutputStream derOut) { MemoryStream ms = new MemoryStream(); WriteEncodable(ms, directReference); WriteEncodable(ms, indirectReference); WriteEncodable(ms, dataValueDescriptor); WriteEncodable(ms, new DerTaggedObject(Asn1Tags.External, externalContent)); derOut.WriteEncoded(Asn1Tags.Constructed, Asn1Tags.External, ms.ToArray()); }
internal override void Encode( DerOutputStream derOut) { byte[] bytes = new byte[GetBytes().Length + 1]; bytes[0] = (byte) PadBits; Array.Copy(GetBytes(), 0, bytes, 1, bytes.Length - 1); derOut.WriteEncoded(Asn1Tags.BitString, bytes); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(isConstructed ? Asn1Tags.Constructed : 0, tag, data); }
internal abstract void Encode(DerOutputStream derOut);
internal override void Encode( DerOutputStream derOut) { int classBits = Asn1Tags.Application; if (isConstructed) { classBits |= Asn1Tags.Constructed; } derOut.WriteEncoded(classBits, tag, octets); }
internal override void Encode( DerOutputStream derOut) { // TODO Should we make sure the byte value is one of '0' or '0xff' here? derOut.WriteEncoded(Asn1Tags.Boolean, new byte[]{ value }); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.UtcTime, GetOctets()); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.UniversalString, this.str); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.Enumerated, bytes); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.GeneralizedTime, GetOctets()); }
internal override void Encode( DerOutputStream derOut) { OidTokenizer tok = new OidTokenizer(identifier); MemoryStream bOut = new MemoryStream(); DerOutputStream dOut = new DerOutputStream(bOut); string token = tok.NextToken(); int first = int.Parse(token); token = tok.NextToken(); int second = int.Parse(token); WriteField(bOut, first * 40 + second); while (tok.HasMoreTokens) { token = tok.NextToken(); if (token.Length < 18) { WriteField(bOut, Int64.Parse(token)); } else { WriteField(bOut, new BigInteger(token)); } } dOut.Close(); derOut.WriteEncoded(Asn1Tags.ObjectIdentifier, bOut.ToArray()); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.Utf8String, Encoding.UTF8.GetBytes(str)); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.Integer, bytes); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.PrintableString, GetOctets()); }
internal override void Encode( DerOutputStream derOut) { if (derOut is Asn1OutputStream || derOut is BerOutputStream) { derOut.WriteByte(Asn1Tags.Constructed | Asn1Tags.OctetString); derOut.WriteByte(0x80); // // write out the octet array // foreach (DerOctetString oct in this) { derOut.WriteObject(oct); } derOut.WriteByte(0x00); derOut.WriteByte(0x00); } else { base.Encode(derOut); } }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.Null, zeroBytes); }
internal override void Encode( DerOutputStream derOut) { derOut.WriteEncoded(Asn1Tags.NumericString, GetOctets()); }