public override async Task <int> Write(IAsn1Serializer serializer, Asn1Boolean item, Stream stream, CancellationToken cancellationToken) { var boolean = (Asn1Boolean)item; var identBytes = await SerializerUtility.WriteIdentifier(item.Id, stream, cancellationToken); var buffer = new byte[] { 1, boolean.Value?(byte)0xff :(byte)0x00 }; await stream.WriteBERBytes(buffer, cancellationToken : cancellationToken); return(identBytes + buffer.Length); }
public override async Task <int> Write(IAsn1Serializer asn1Serializer, Asn1Set item, Stream stream, CancellationToken cancellationToken) { var(ms, setItemBytes) = await SerializerUtility.WriteItemsToBufferedStream(asn1Serializer, item.Items, cancellationToken); var identBytes = await SerializerUtility.WriteIdentifier(item.Id, stream, cancellationToken); var lenBytes = await SerializerUtility.WriteLength(setItemBytes, stream, cancellationToken); await ms.CopyToAsync(stream, cancellationToken); return(identBytes + lenBytes + setItemBytes); }
public override async Task <(Asn1Object, int)> Read(IAsn1Serializer serializer, Identifier id, int length, Stream stream, CancellationToken cancellationToken) { var totalLength = 0; var lst = new List <Asn1Object>(); while (length > 0) { var(obj, bytesRead) = await serializer.Read(stream, cancellationToken); lst.Add(obj); length -= bytesRead; totalLength += bytesRead; } return(new Asn1Set(lst), totalLength); }
public static async Task <(MemoryStream ms, int innerLength)> WriteItemsToBufferedStream( IAsn1Serializer asn1Serializer, IEnumerable <Asn1Object> items, CancellationToken cancellationToken) { var ms = new MemoryStream(); var sequenceItemsBytes = 0; foreach (var part in items) { sequenceItemsBytes += await asn1Serializer.Write(part, ms, cancellationToken); } await ms.FlushAsync(cancellationToken); ms.Position = 0; return(ms, sequenceItemsBytes); }
public CertificateRequestAsn1DEREncoder(IAsn1Serializer serializer) { this.serializer = serializer; }
public override async Task <int> Write(IAsn1Serializer asn1Serializer, Asn1Null item, Stream stream, CancellationToken cancellationToken) { return(await SerializerUtility.WriteIdentifier(item.Id, stream, cancellationToken)); }
public override Task <(Asn1Object, int)> Read(IAsn1Serializer serializer, Identifier id, int length, Stream stream, CancellationToken cancellationToken) { return(Task.FromResult(((Asn1Object) new Asn1Null(), 0))); }
public CertificateRequestAsn1DEREncoder(IAsn1Serializer serializer) { this.serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); }
public abstract Task <int> Write(IAsn1Serializer asn1Serializer, Asn1Object item, Stream stream, CancellationToken cancellationToken);
public abstract Task <(Asn1Object, int)> Read(IAsn1Serializer serializer, Identifier id, int length, Stream stream, CancellationToken cancellationToken);