Esempio n. 1
0
        private String AskQuestions(String userID, String email)
        {
            Core core = new Core(Server.passphrase);
            DatabaseConnection connection = new DatabaseConnection();
            String             dbUserid   = connection.getUserID(email);

            connection.close();

            if (userID == null)
            {
                ErrorLog_Write(email + ": Email does not exist!");
                Console.WriteLine(email + ": Email does not exist!");
                throw new Exception("Invalid user");
            }
            if (userID != dbUserid)
            {
                ErrorLog_Write(email + ": User id does not exist!");
                Console.WriteLine(email + ": User id does not exist!");
                throw new Exception("Invalid user");
            }
            String  questions = core.ReadSettingsFile();
            Message result    = new Message(questions);

            result.Sign(core.PrivateKey);
            return(result.ToString());
        }
Esempio n. 2
0
        private void SignDetached(String filename, String passphrase, String outfile)
        {
            try
            {
                core.InitializeKeys(passphrase);
            }
            catch
            {
                Console.Error.WriteLine("Invalid passphrase");
                return;
            }

            Message message = new Message(File.ReadAllBytes(filename));

            message.Sign(core.PrivateKey, false);

            if (Util.Write(outfile, message.getSignature(), true))
            {
                Console.Error.WriteLine("Output written to {0}", outfile);
            }
        }
Esempio n. 3
0
        private void Sign(String filename, String passphrase)
        {
            try
            {
                core.InitializeKeys(passphrase);
            }
            catch
            {
                Console.Error.WriteLine("Invalid passphrase");
                return;
            }

            String outFile = filename + ".pses";

            Message message = new Message(File.ReadAllText(filename, Encoding.UTF8));

            message.Sign(core.PrivateKey);

            if (Util.Write(outFile, message.ToString()))
            {
                Console.Error.WriteLine("Output written to {0}", outFile);
            }
        }
Esempio n. 4
0
        public String KeyObt(String email, DateTime date) //get public key of a user ( complete )
        {
            ActionLog_Write(email + ": KeyObt");

            Console.WriteLine(beginProtocol);
            Console.WriteLine(email + ": KeyObt");

            int    index      = email.IndexOf('@');
            String domainName = email.Substring(index, email.Length - index);
            String publicKey  = null;
            Core   core       = new Core(Server.passphrase);

            if (core.GetXmlNodeInnerText("domain") == domainName)
            {
                DatabaseConnection connection = new DatabaseConnection();
                publicKey = connection.getPublicKey(email, date);
                connection.close();
            }
            else
            {
                byte[] rawCertData = Certificate.SearchCertificate(domainName);
                if (rawCertData == null)
                {
                    if (ConnectRootServer(core.GetXmlNodeInnerText("root_server")))
                    {
                        if (GetCertificate(domainName))
                        {
                            rawCertData = Certificate.SearchCertificate(domainName);
                        }
                    }
                }
                byte[] foreignServerCertPK = Certificate.GetPublicKey(rawCertData);
                String foreignServerXmlPK  = Crypto.CertToXMLKey(foreignServerCertPK);
                Console.WriteLine("Public key of " + domainName + ":\n" + foreignServerXmlPK);
                String foreignServerHost = Certificate.GetHostName(rawCertData);

                ActionLog_Write("Connecting to foreign PractiSES server (" + foreignServerHost + ")...");
                Console.WriteLine("Connecting to foreign PractiSES server ({0})...", foreignServerHost);

                IServer foreignServer   = (IServer)Activator.GetObject(typeof(IServer), "http://" + foreignServerHost + "/PractiSES");
                String  signedPublicKey = foreignServer.KeyObt(email, date);
                if (signedPublicKey != null)
                {
                    Message foreignmessage = new Message(signedPublicKey);
                    //****************
                    if (foreignmessage.Verify(foreignServerXmlPK))
                    {
                        publicKey = foreignmessage.getCleartext();
                    }
                    //****************
                }
            }
            if (publicKey == null)
            {
                ActionLog_Write("Error - " + email + ": Email does not exist!");
                Console.WriteLine("Error - " + email + ": Email does not exist!");
                throw new Exception("Invalid user");
            }
            Message message = new Message(publicKey);

            message.AddComment("Email", email);
            message.Sign(core.PrivateKey);
            String result = message.ToString();

            return(result);
        }
Esempio n. 5
0
        private void SignDetached(String filename, String passphrase, String outfile)
        {
            try
            {
                core.InitializeKeys(passphrase);
            }
            catch
            {
                Console.Error.WriteLine("Invalid passphrase");
                return;
            }

            Message message = new Message(File.ReadAllBytes(filename));
            message.Sign(core.PrivateKey, false);

            if (Util.Write(outfile, message.getSignature(), true))
            {
                Console.Error.WriteLine("Output written to {0}", outfile);
            }
        }
Esempio n. 6
0
        private void Sign(String filename, String passphrase)
        {
            try
            {
                core.InitializeKeys(passphrase);
            }
            catch
            {
                Console.Error.WriteLine("Invalid passphrase");
                return;
            }

            String outFile = filename + ".pses";

            Message message = new Message(File.ReadAllText(filename, Encoding.UTF8));
            message.Sign(core.PrivateKey);

            if (Util.Write(outFile, message.ToString()))
            {
                Console.Error.WriteLine("Output written to {0}", outFile);
            }
        }
Esempio n. 7
0
        //get public key of a user ( complete )
        public String KeyObt(String email, DateTime date)
        {
            ActionLog_Write(email + ": KeyObt");

            Console.WriteLine(beginProtocol);
            Console.WriteLine(email + ": KeyObt");

            int index = email.IndexOf('@');
            String domainName = email.Substring(index, email.Length - index);
            String publicKey = null;
            Core core = new Core(Server.passphrase);
            if (core.GetXmlNodeInnerText("domain") == domainName)
            {
                DatabaseConnection connection = new DatabaseConnection();
                publicKey = connection.getPublicKey(email, date);
                connection.close();
            }
            else
            {
                byte[] rawCertData = Certificate.SearchCertificate(domainName);
                if (rawCertData == null)
                {
                    if (ConnectRootServer(core.GetXmlNodeInnerText("root_server")))
                    {
                        if (GetCertificate(domainName))
                        {
                            rawCertData = Certificate.SearchCertificate(domainName);
                        }
                    }
                }
                byte[] foreignServerCertPK = Certificate.GetPublicKey(rawCertData);
                String foreignServerXmlPK = Crypto.CertToXMLKey(foreignServerCertPK);
                Console.WriteLine("Public key of " + domainName + ":\n" + foreignServerXmlPK);
                String foreignServerHost = Certificate.GetHostName(rawCertData);

                ActionLog_Write("Connecting to foreign PractiSES server (" + foreignServerHost + ")...");
                Console.WriteLine("Connecting to foreign PractiSES server ({0})...", foreignServerHost);

                IServer foreignServer = (IServer)Activator.GetObject(typeof(IServer), "http://" + foreignServerHost + "/PractiSES");
                String signedPublicKey = foreignServer.KeyObt(email, date);
                if (signedPublicKey != null)
                {
                    Message foreignmessage = new Message(signedPublicKey);
                    //****************
                    if (foreignmessage.Verify(foreignServerXmlPK))
                    {
                        publicKey = foreignmessage.getCleartext();
                    }
                    //****************
                }
            }
            if (publicKey == null)
            {
                ActionLog_Write("Error - " + email + ": Email does not exist!");
                Console.WriteLine("Error - " + email + ": Email does not exist!");
                throw new Exception("Invalid user");
            }
            Message message = new Message(publicKey);
            message.AddComment("Email",email);
            message.Sign(core.PrivateKey);
            String result = message.ToString();
            return result;
        }
Esempio n. 8
0
        private String AskQuestions(String userID, String email)
        {
            Core core = new Core(Server.passphrase);
            DatabaseConnection connection = new DatabaseConnection();
            String dbUserid = connection.getUserID(email);
            connection.close();

            if (userID == null)
            {
                ErrorLog_Write(email + ": Email does not exist!");
                Console.WriteLine(email + ": Email does not exist!");
                throw new Exception("Invalid user");
            }
            if (userID != dbUserid)
            {
                ErrorLog_Write(email + ": User id does not exist!");
                Console.WriteLine(email + ": User id does not exist!");
                throw new Exception("Invalid user");
            }
            String questions = core.ReadSettingsFile();
            Message result = new Message(questions);
            result.Sign(core.PrivateKey);
            return result.ToString();
        }