public void Read(BinaryReader reader) { this.signingAlgorithm = reader.ReadUInt32(); this.hashAlgorithm = reader.ReadUInt32(); this.remainingSize = reader.ReadUInt32(); this.header = new GeneralKeyHeader(reader); modulus = reader.ReadBytes((int)(this.header.BitLength / LargeChunkDenominator)); ReverseArray(modulus); }
public PrivateKeyData(RSAParameters parameters, int keySize) { byte[] exponent = parameters.Exponent; byte[] exponentReal = new byte[4]; exponent.CopyTo(exponentReal, 0); Array.Reverse(exponentReal); this.header = new GeneralKeyHeader(GeneralKeyHeader.KeyTypes.PrivateKey, (uint)keySize, ((uint)exponentReal[0] | (uint)exponentReal[1] << 8 | (uint)exponentReal[2] << 16 | (uint)exponentReal[3] << 24)); this.modulus = parameters.Modulus; this.prime1 = parameters.P; this.prime2 = parameters.Q; this.exponent1 = parameters.DP; this.exponent2 = parameters.DQ; this.coefficient1 = parameters.InverseQ; this.coefficient2 = parameters.D; }
public PublicKeyData(RSAParameters parameters, int keySize) { this.signingAlgorithm = RSASigningAlgorithmId; this.hashAlgorithm = SHA1HashAlgorithmId; byte[] exponent = parameters.Exponent; byte[] exponentReal = new byte[4]; exponent.CopyTo(exponentReal, 0); Array.Reverse(exponentReal); this.header = new GeneralKeyHeader( GeneralKeyHeader.KeyTypes.PublicKey, (uint)keySize, ((uint)exponentReal[0] | (uint)exponentReal[1] << 8 | (uint)exponentReal[2] << 16 | (uint)exponentReal[3] << 24)); this.modulus = parameters.Modulus; this.remainingSize = (uint)(Marshal.SizeOf(typeof(GeneralKeyHeader)) + modulus.Length); }
public void Read(BinaryReader reader) { this.header = new GeneralKeyHeader(reader); modulus = reader.ReadBytes((int)(this.header.BitLength / LargeChunkDenominator)); prime1 = reader.ReadBytes((int)(this.header.BitLength / SmallChunkDenominator)); prime2 = reader.ReadBytes((int)(this.header.BitLength / SmallChunkDenominator)); exponent1 = reader.ReadBytes((int)(this.header.BitLength / SmallChunkDenominator)); exponent2 = reader.ReadBytes((int)(this.header.BitLength / SmallChunkDenominator)); coefficient1 = reader.ReadBytes((int)(this.header.BitLength / SmallChunkDenominator)); coefficient2 = reader.ReadBytes((int)(this.header.BitLength / LargeChunkDenominator)); Array.Reverse(modulus); Array.Reverse(prime1); Array.Reverse(prime2); Array.Reverse(exponent1); Array.Reverse(exponent2); Array.Reverse(coefficient1); Array.Reverse(coefficient2); }