示例#1
0
        /// <summary>
        /// Serializes a SerializedBiscuit to a byte array
        /// </summary>
        /// <returns></returns>
        public Either <Error, byte[]> Serialize()
        {
            Format.Schema.Biscuit biscuit = new Format.Schema.Biscuit()
            {
                Signature = signature.Serialize()
            };

            for (int i = 0; i < keys.Count; i++)
            {
                biscuit.Keys.Add(ByteString.CopyFrom(keys[i].Compress().ToByteArray()));
            }

            biscuit.Authority = ByteString.CopyFrom(authority);

            for (int i = 0; i < blocks.Count; i++)
            {
                biscuit.Blocks.Add(ByteString.CopyFrom(blocks[i]));
            }

            try
            {
                using MemoryStream stream = new MemoryStream();
                biscuit.WriteTo(stream);
                byte[] data = stream.ToArray();
                return(data);
            }
            catch (IOException e)
            {
                return(new SerializationError(e.ToString()));
            }
        }