Author: jflesch
Date: 2007-04-22 08:32:32 +0000 (Sun, 22 Apr 2007)
New Revision: 12852

Modified:
   trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties
   trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
   trunk/apps/Thaw/src/thaw/plugins/signatures/Identity.java
Log:
Add functions to sign and verify messages

Modified: trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties     2007-04-22 
00:37:23 UTC (rev 12851)
+++ trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties     2007-04-22 
08:32:32 UTC (rev 12852)
@@ -320,7 +320,7 @@

 thaw.plugin.index.loadOnTheFly=Charger l'arbre d'index ? la vol?e (signifie 
moins de m?moire utilis?e, mais plus de temps CPU consomm?)

-thaw.plugin.index.indexLoading=Chargement d'index
+thaw.plugin.index.indexLoading=Chargement d'indexes

 thaw.plugin.index.blackList=Liste noire d'indexes
 thaw.plugin.index.editBlackList=Editer la liste noire d'indexes

Modified: trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties    2007-04-22 00:37:23 UTC 
(rev 12851)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties    2007-04-22 08:32:32 UTC 
(rev 12852)
@@ -320,7 +320,7 @@

 thaw.plugin.index.loadOnTheFly=Charger l'arbre d'index \u00e0 la vol\u00e9e 
(signifie moins de m\u00e9moire utilis\u00e9e, mais plus de temps CPU 
consomm\u00e9)

-thaw.plugin.index.indexLoading=Chargement d'index
+thaw.plugin.index.indexLoading=Chargement d'indexes

 thaw.plugin.index.blackList=Liste noire d'indexes
 thaw.plugin.index.editBlackList=Editer la liste noire d'indexes
@@ -379,11 +379,19 @@
 thaw.plugin.themeSelector.theme=Th\u00e8me


+thaw.plugin.signature.signatures=Identit\u00e9s
 thaw.plugin.signature.pluginName=Gestion des signatures
 thaw.plugin.signature.yourIdentities=G\u00e9rer vos identit\u00e9s
 thaw.plugin.signature.otherIdentities=G\u00e9rer les autres identit\u00e9s

+thaw.plugin.signature.trustLevel.dev=ARCHITECTE DE LA MATRICE
+thaw.plugin.signature.trustLevel.good=BON
+thaw.plugin.signature.trustLevel.observe=EN OBSERVATION
+thaw.plugin.signature.trustLevel.check=VALIDE
+thaw.plugin.signature.trustLevel.bad=MAUVAIS
+thaw.plugin.signature.trustLevel.evil=DIABOLIQUE

+
 # Zeroconf

 thaw.zeroconf.searchingNode=Recherche de noeuds Freenet ...

Modified: trunk/apps/Thaw/src/thaw/plugins/signatures/Identity.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/signatures/Identity.java   2007-04-22 
00:37:23 UTC (rev 12851)
+++ trunk/apps/Thaw/src/thaw/plugins/signatures/Identity.java   2007-04-22 
08:32:32 UTC (rev 12852)
@@ -8,10 +8,12 @@

 import java.util.Vector;
 import java.util.Iterator;
+import java.math.BigInteger;

 import freenet.crypt.SHA256;
 import freenet.support.Base64;

+import freenet.crypt.DSA;
 import freenet.crypt.DSAPrivateKey;
 import freenet.crypt.DSAGroup;
 import freenet.crypt.DSAPublicKey;
@@ -76,6 +78,9 @@
        private Identity() {
        }

+       /**
+        * If you don't have a value, let it to null and pray it won't be used 
:P
+        */
        public Identity(Hsqldb db, int id, String nick,
                        byte[] y, byte[] x,
                        boolean isDup,
@@ -93,9 +98,12 @@
                md.update(y);

                hash = Base64.encode(md.digest());
+
+               SHA256.returnMessageDigest(md);
        }


+
        /**
         * Generate a new identity
         * you have to insert() it
@@ -164,26 +172,69 @@
        }


-       /**
-        * All the parameters are Base64 encoded, except text.
-        */
-       public static boolean isValid(String text, /* signed text */
-                                     String r, /* sig */
-                                     String s, /* sig */
-                                     String y) /* publicKey */ {
-               return true;
+       public DSASignature sign(String text) {
+               return sign(text, x);
        }


-       /**
-        * we use q as a reference
-        */
-       public static boolean isDuplicata(Hsqldb db, String nickName, String q) 
{
-               return false;
+       public static DSASignature sign(String text, byte[] x) {
+               Yarrow randomSource = new Yarrow();
+
+               MessageDigest md = SHA256.getMessageDigest();
+
+               md.reset();
+
+               try {
+                       md.update(text.getBytes("UTF-8"));
+               } catch(java.io.UnsupportedEncodingException e) {
+                       md.update(text.getBytes());
+               }
+
+               BigInteger m = new BigInteger(md.digest());
+
+               DSASignature sign = DSA.sign(Global.DSAgroupBigA,
+                                            new DSAPrivateKey(new 
BigInteger(x)),
+                                            m,
+                                            randomSource);
+
+               SHA256.returnMessageDigest(md);
+
+               return sign;
        }


+       public boolean check(String text, byte[] r, byte[] s) {
+               return check(text, r, s, y);
+       }

+
+       public static boolean check(String text, /* signed text */
+                                   byte[] r, /* sig */
+                                   byte[] s, /* sig */
+                                   byte[] y) /* publicKey */ {
+
+               MessageDigest md = SHA256.getMessageDigest();
+
+               md.reset();
+
+               try {
+                       md.update(text.getBytes("UTF-8"));
+               } catch(java.io.UnsupportedEncodingException e) {
+                       md.update(text.getBytes());
+               }
+
+               BigInteger m = new BigInteger(md.digest());
+
+               boolean ret = DSA.verify(new DSAPublicKey(Global.DSAgroupBigA, 
new BigInteger(y)),
+                                        new DSASignature(new BigInteger(r), 
new BigInteger(s)),
+                                        m, false);
+
+               SHA256.returnMessageDigest(md);
+
+               return ret;
+       }
+
+
        public String toString() {
                return nick+"@"+hash;
        }
@@ -196,7 +247,11 @@

                                PreparedStatement st;

-                               st = 
db.getConnection().prepareStatement("SELECT id, nickName, y, x, isDup, 
trustLevel FROM signatures WHERE "+cond + " ORDER BY nickName");
+                               if (cond != null)
+                                       st = 
db.getConnection().prepareStatement("SELECT id, nickName, y, x, isDup, 
trustLevel FROM signatures WHERE "+cond + " ORDER BY nickName");
+                               else
+                                       st = 
db.getConnection().prepareStatement("SELECT id, nickName, y, x, isDup, 
trustLevel FROM signatures ORDER BY nickName");
+
                                ResultSet set = st.executeQuery();

                                while(set.next()) {


Reply via email to