Exemplo n.º 1
0
        /// <summary>
        /// Load data of authority from file.
        /// </summary>
        /// <param name="fileName">Name of file to load.</param>
        private void Load(string fileName)
        {
            FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
              DeserializeContext context = new DeserializeContext(fileStream);

              this.parameters = context.ReadObject<VotingParameters>();
              this.signedParameters = context.ReadObject<Signed<VotingParameters>>();

              this.authorities = new Dictionary<int,Certificate>();
              int count = context.ReadInt32();
              count.Times(() => this.authorities.Add(context.ReadInt32(), context.ReadObject<Certificate>()));

              this.authority = new Authority(context, this.parameters);

              context.Close();
              fileStream.Close();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Tries to load a pregenerated safe prime.
        /// </summary>
        /// <param name="dataPath">Path where application data is stored.</param>
        /// <param name="bitLength">Length of the prime.</param>
        /// <param name="prime">Prime loaded.</param>
        /// <param name="safePrime">Safe prime loaded.</param>
        /// <returns>Was a prime and safe prime found?</returns>
        public static bool TryLoadPregeneratedSafePrime(string dataPath, int bitLength, out BigInt prime, out BigInt safePrime)
        {
            var dataDirectory = new DirectoryInfo(dataPath);
              var files = dataDirectory.GetFiles(Files.SafePrimePattern);

              foreach (var file in files)
              {
            try
            {
              FileStream fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);
              DeserializeContext context = new DeserializeContext(fileStream);

              prime = context.ReadBigInt();
              safePrime = context.ReadBigInt();

              context.Close();
              fileStream.Close();

              file.Delete();

              if (Prime.HasSufficientLength(prime, bitLength) &&
              Prime.HasSufficientLength(safePrime, bitLength) &&
              Prime.IsPrime(prime) &&
              Prime.IsSafePrime(safePrime))
              {
            return true;
              }
            }
            catch
            {
              file.Delete();
            }
              }

              prime = null;
              safePrime = null;
              return false;
        }
Exemplo n.º 3
0
        private void RunExtract()
        {
            try
              {
            Progress = 0;

            FileStream fileStream = new FileStream(this.backupFile, FileMode.Open, FileAccess.Read);
            GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Decompress);
            DeserializeContext context = new DeserializeContext(gzipStream);

            int fileCount = context.ReadInt32();
            long totalSize = context.ReadInt64();
            long doneSize = 0;

            for (int index = 0; index < fileCount; index++)
            {
              string fileName = context.ReadString();
              FileName = fileName;
              byte[] data = context.ReadBytes();
              File.WriteAllBytes(Path.Combine(this.dataPath, fileName), data);
              doneSize += data.Length;

              Progress = 1d / (double)totalSize * (double)doneSize;
            }

            context.Close();
            gzipStream.Close();
            fileStream.Close();
              }
              catch (Exception exception)
              {
            Exception = exception;
              }

              Complete = true;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Deserializes an exception from binary data.
        /// </summary>
        /// <param name="data">Binary data of exception.</param>
        /// <returns>An exception.</returns>
        public static PiException FromBinary(byte[] data)
        {
            MemoryStream stream = new MemoryStream(data);
              DeserializeContext context = new DeserializeContext(stream);

              string typeName = context.ReadString();
              ExceptionCode code = (ExceptionCode)context.ReadInt32();
              string message = context.ReadString();

              Type type = Type.GetType(typeName);
              PiException exception = (PiException)Activator.CreateInstance(type, new object[] { code, code.Text() });
              exception.ServerMessage = message;

              context.Close();
              stream.Close();

              return exception;
        }