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()) {