Ejemplo n.º 1
0
        void cmdParse_Click(Object sender, System.EventArgs e)
        {
            Packet[] pKeys = Packet.ParsePackets(txtBase64Key.Text);

            string strKeys = "";

            for (int i = 0; i < pKeys.Length; i++)
            {
                /* As soon as all Packets are implemented, replace
                 * this by a simple pKeys[i].ToString();
                 * For now we need all the ifs
                 */
                if (pKeys[i] is PublicKeyPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is UserIDPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is SignaturePacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is SymmetricallyEncryptedDataPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is AsymSessionKeyPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is SymSessionKeyPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is LiteralDataPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is CompressedDataPacket)
                {
                    strKeys += pKeys[i].ToString();
                }
                else if (pKeys[i] is SecretKeyPacket)
                {
                    QueryPassphrase queryPassphrase = new QueryPassphrase();
                    queryPassphrase.ShowMyDialog();
                    string          strPassphrase = queryPassphrase.Passphrase;
                    SecretKeyPacket skpPacket     = (SecretKeyPacket)pKeys[i];
                    skpPacket.GetDecryptedKeyMaterial(strPassphrase);
                    strKeys += pKeys[i].ToString();
                }
            }
            this.txtKeyProperties.Lines = strKeys.Split('\n');
        }
Ejemplo n.º 2
0
        private DSA_Secret_Key ParseSecretKey(SecretKeyPacket skpKey, string strPassphrase)
        {
            DSA_Secret_Key dskKey = new DSA_Secret_Key();

            dskKey.p = skpKey.PublicKey.KeyMaterial[0];
            dskKey.q = skpKey.PublicKey.KeyMaterial[1];
            dskKey.g = skpKey.PublicKey.KeyMaterial[2];
            dskKey.y = skpKey.PublicKey.KeyMaterial[3];

            BigInteger[] biSecretKeyMaterial = skpKey.GetDecryptedKeyMaterial(strPassphrase);

            dskKey.x = biSecretKeyMaterial[0];

            return(dskKey);
        }
Ejemplo n.º 3
0
        private RSA_Secret_Key ParseSecretKey(SecretKeyPacket skpKey, string strPassphrase)
        {
            RSA_Secret_Key rskKey = new RSA_Secret_Key();

            rskKey.n = skpKey.PublicKey.KeyMaterial[0];
            rskKey.e = skpKey.PublicKey.KeyMaterial[1];

            BigInteger[] biSecretKeyMaterial = skpKey.GetDecryptedKeyMaterial(strPassphrase);

            rskKey.d = biSecretKeyMaterial[0];
            rskKey.p = biSecretKeyMaterial[1];
            rskKey.q = biSecretKeyMaterial[2];
            rskKey.u = biSecretKeyMaterial[3];

            return(rskKey);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Secret key operation. Decrypts biCipher with the keydata
        /// in the given secret key packet.
        /// </summary>
        /// <param name="biInput">The ciphertext that is about to
        /// be decrypted</param>
        /// <param name="skpKey">The secret key packet with the key
        /// material for the decryption</param>
        /// <param name="strPassphrase">The passphrase for the
        /// keymaterial</param>
        /// <returns>The decrypted ciphertext.</returns>
        /// <remarks>No remarks.</remarks>
        public override BigInteger Decrypt(BigInteger[] biInput, SecretKeyPacket skpKey, string strPassphrase)
        {
            BigInteger[]  biKeyMaterial = skpKey.GetDecryptedKeyMaterial(strPassphrase);
            EG_Secret_Key eskKey        = new EG_Secret_Key();

            eskKey.x = biKeyMaterial[0];
            eskKey.p = skpKey.PublicKey.KeyMaterial[0];
            eskKey.g = skpKey.PublicKey.KeyMaterial[1];
            eskKey.y = skpKey.PublicKey.KeyMaterial[2];

            if (biInput.Length != 2)
            {
                throw new ArgumentException("biInput is not an ElGamal encrypted Packet");
            }

            BigInteger B = biInput[0];
            BigInteger c = biInput[1];

            BigInteger z = B.modPow(eskKey.x, eskKey.p).modInverse(eskKey.p);

            BigInteger output = (z * c) % eskKey.p;

            return(output);
        }