コード例 #1
0
        /// <summary>
        /// Serializes an array of IStatements.
        /// </summary>
        /// <param name="statements">statements</param>
        /// <param name="serializeGroup">If true, will serialize statements[0].Group.  If false, will  not serialize group.</param>
        /// <param name="serializeBases">If true, will serialize all bases.  If false, will not serialize bases.</param>
        /// <returns>Array of strings.  String[2i] is the serialized statement, String[2i+1] is the actual class name</returns>
        public static string[] Serialize(IStatement[] statements, bool serializeGroup = true, bool serializeBases = true)
        {
            string[] output = new string[statements.Length * 2];
            for (int i = 0; i < statements.Length; ++i)
            {
                if ((i == 0) && (serializeGroup))
                {
                    statements[i].IsGroupSerializable = true;
                }
                else
                {
                    statements[i].IsGroupSerializable = false;
                }

                if (serializeBases == true)
                {
                    statements[i].AreBasesSerializable = true;
                }
                else
                {
                    statements[i].AreBasesSerializable = false;
                }
                output[2 * i]     = CryptoSerializer.Serialize <IStatement>(statements[i]);
                output[2 * i + 1] = statements[i].GetType().FullName;
            }
            return(output);
        }
コード例 #2
0
 public void VerifierOnSerializing(StreamingContext context)
 {
     _closedEq = null;
     if (AreStatementsSerializable)
     {
         _closedEq = CryptoSerializer.Serialize(this.Statements, false, true);
     }
 }
コード例 #3
0
        internal void OnPPSerializing(StreamingContext context)
        {
            if ((PublicValues == null) || (!ArePublicValuesSerializable))
            {
                _publicValues = null;
            }
            else
            {
                _publicValues = CryptoSerializer.SerializeGroupElementArray(this.PublicValues, "PublicValues");
            }

            if ((Witnesses == null) || (!AreWitnessesSerializable))
            {
                _witnesses = null;
            }
            else
            {
                _witnesses = CryptoSerializer.Serialize(this.Witnesses, false, this.AreWitnessBasesSerializable);
            }
        }
コード例 #4
0
        public void OnSerializing(StreamingContext context)
        {
            this._representationLength = this.RepresentationLength;
            this._value = CryptoSerializer.Serialize(this.Value);

            if (this.AreBasesSerializable)
            {
                this._bases = CryptoSerializer.SerializeGroupElementArray(this.Bases, "Bases");
            }
            else
            {
                this._bases = null;
            }

            if (this.IsWitness)
            {
                this._exponents = CryptoSerializer.SerializeFieldZqElementArray(this.Exponents, "exponents");
            }
            else
            {
                this._exponents = null;
            }
        }
コード例 #5
0
 public void ProverOnSerializing(StreamingContext context)
 {
     _witnesses = CryptoSerializer.Serialize(this.Witnesses, false, true);
 }