Пример #1
0
        public override PACSAMKeyRecord Clone(bool includeKey = false)
        {
            PACSAMPlaidKeyRecord instance = new PACSAMPlaidKeyRecord();

            CopyTo(instance, includeKey);
            return(instance);
        }
Пример #2
0
        public override void ExportParts(params PACSAMKeyRecord[] parts)
        {
            // There must be at least 3 or more parts
            if (parts.Length < 3)
            {
                throw new ArgumentException(@"ExportParts: There must be at 3 or more parts to export to!");
            }

            // Create part 0
            parts[0] = new PACSAMPlaidKeyRecord(this);

            // Iterate through the parts from 1 to n (skipping the first, which will hold the XOR result)
            for (int i = 1; i < parts.Length; i++)
            {
                // Generate the part
                parts[i] = new PACSAMPlaidKeyRecord(this);

                var pI = (parts[i] as PACSAMPlaidKeyRecord);
                var p0 = (parts[0] as PACSAMPlaidKeyRecord);

                pI.IAKey.P = Crypto.CreateRandomEntropy(IAKey.P.Length);
                p0.IAKey.P = Crypto.XorArray(p0.IAKey.P, pI.IAKey.P);

                pI.IAKey.Q = Crypto.CreateRandomEntropy(IAKey.Q.Length);
                p0.IAKey.Q = Crypto.XorArray(p0.IAKey.Q, pI.IAKey.Q);

                pI.IAKey.PQ = Crypto.CreateRandomEntropy(IAKey.PQ.Length);
                p0.IAKey.PQ = Crypto.XorArray(p0.IAKey.PQ, pI.IAKey.PQ);

                pI.IAKey.DP = Crypto.CreateRandomEntropy(IAKey.DP.Length);
                p0.IAKey.DP = Crypto.XorArray(p0.IAKey.DP, pI.IAKey.DP);

                pI.IAKey.DQ = Crypto.CreateRandomEntropy(IAKey.DQ.Length);
                p0.IAKey.DQ = Crypto.XorArray(p0.IAKey.DQ, pI.IAKey.DQ);

                pI.IAKey.D = Crypto.CreateRandomEntropy(IAKey.D.Length);
                p0.IAKey.D = Crypto.XorArray(p0.IAKey.D, pI.IAKey.D);

                pI.IAKey.Modulus = Crypto.CreateRandomEntropy(IAKey.Modulus.Length);
                p0.IAKey.Modulus = Crypto.XorArray(p0.IAKey.Modulus, pI.IAKey.Modulus);

                pI.IAKey.Exponent = Crypto.CreateRandomEntropy(IAKey.Exponent.Length);
                p0.IAKey.Exponent = Crypto.XorArray(p0.IAKey.Exponent, pI.IAKey.Exponent);

                pI.FAKey = Crypto.CreateRandomEntropy(FAKey.Length);
                p0.FAKey = Crypto.XorArray(p0.FAKey, pI.FAKey);
            }
        }
Пример #3
0
 public PACSAMPlaidKeyRecord(PACSAMPlaidKeyRecord copyObject)
 {
     copyObject.CopyTo(this, true);
 }