Author: j16sdiz
Date: 2008-05-23 17:19:01 +0000 (Fri, 23 May 2008)
New Revision: 20079
Added:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-cn.properties
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-tw.properties
branches/saltedhashstore/freenet/src/freenet/support/ByteBufferInputStream.java
branches/saltedhashstore/freenet/test/freenet/crypt/ciphers/
branches/saltedhashstore/freenet/test/freenet/crypt/ciphers/RijndaelTest.java
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
branches/saltedhashstore/freenet/src/freenet/crypt/ciphers/Rijndael.java
branches/saltedhashstore/freenet/src/freenet/io/comm/FreenetInetAddress.java
branches/saltedhashstore/freenet/src/freenet/io/comm/Message.java
branches/saltedhashstore/freenet/src/freenet/io/comm/Peer.java
branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
branches/saltedhashstore/freenet/src/freenet/node/Node.java
branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
branches/saltedhashstore/freenet/src/freenet/node/SeedClientPeerNode.java
branches/saltedhashstore/freenet/src/freenet/node/Version.java
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
branches/saltedhashstore/freenet/src/freenet/support/BitArray.java
branches/saltedhashstore/freenet/src/freenet/support/Buffer.java
branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
branches/saltedhashstore/freenet/src/freenet/support/ShortBuffer.java
Log:
Merge from build 1150 (r19950)
Modified:
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-05-23 17:10:28 UTC (rev 20078)
+++
branches/saltedhashstore/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-05-23 17:19:01 UTC (rev 20079)
@@ -7,7 +7,7 @@
BookmarkCategory0.Content.Bookmark0.Name=The Ultimate FreeNet Index
BookmarkCategory0.Content.Bookmark0.Description=A new one-page index with a
menu including categories
BookmarkCategory0.Content.Bookmark0.hasAnActivelink=true
-BookmarkCategory0.Content.Bookmark0.URI=USK at
0I8gctpUE32CM0iQhXaYpCMvtPPGfT4pjXm01oid5Zc,3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/20/
+BookmarkCategory0.Content.Bookmark0.URI=USK at
0I8gctpUE32CM0iQhXaYpCMvtPPGfT4pjXm01oid5Zc,3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/22/
BookmarkCategory0.Content.Bookmark3.Name=Index des sites Fran?ais
BookmarkCategory0.Content.Bookmark3.Description=A small French index with
descriptions
BookmarkCategory0.Content.Bookmark3.hasAnActivelink=true
@@ -15,11 +15,11 @@
BookmarkCategory0.Content.Bookmark2.Name=Freenet Activelink Index (SLOW:
graphical index, preloads all the sites, so takes *ages* to load)
BookmarkCategory0.Content.Bookmark2.hasAnActivelink=true
BookmarkCategory0.Content.Bookmark2.Description=A graphical freenet index
(this will take a long time to load as it preloads the sites)
-BookmarkCategory0.Content.Bookmark2.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/50/
+BookmarkCategory0.Content.Bookmark2.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/53/
BookmarkCategory0.Content.Bookmark1.Name=Freenet Activelink Index Text Version
(a quick-loading non-graphical index site, no porn)
BookmarkCategory0.Content.Bookmark1.hasAnActivelink=true
BookmarkCategory0.Content.Bookmark1.Description=Text version of the Activelink
Index
-BookmarkCategory0.Content.Bookmark1.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/14/
+BookmarkCategory0.Content.Bookmark1.URI=USK at
qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/17/
BookmarkCategory1.Name=Freenet devel's flogs
BookmarkCategory1.Content.BookmarkCategory=0
BookmarkCategory1.Content.Bookmark=5
@@ -30,11 +30,11 @@
BookmarkCategory1.Content.Bookmark3.Name=Zothar
BookmarkCategory1.Content.Bookmark3.Description=Zothar's flog
BookmarkCategory1.Content.Bookmark3.hasAnActivelink=true
-BookmarkCategory1.Content.Bookmark3.URI=USK at
FgA7EMOmIjfw~OATtonMPZ80xJGDtzZ5TI15b2nIHH8,qeVFtPz2cX0VAif2AMXAS8ajgvbc3SsVp2YkPYczMX0,AQACAAE/Zothar_flog/10/
+BookmarkCategory1.Content.Bookmark3.URI=USK at
FgA7EMOmIjfw~OATtonMPZ80xJGDtzZ5TI15b2nIHH8,qeVFtPz2cX0VAif2AMXAS8ajgvbc3SsVp2YkPYczMX0,AQACAAE/Zothar_flog/11/
BookmarkCategory1.Content.Bookmark2.Name=Bombe
BookmarkCategory1.Content.Bookmark2.Description=Bombe's flog
BookmarkCategory1.Content.Bookmark2.hasAnActivelink=true
-BookmarkCategory1.Content.Bookmark2.URI=USK at
e3myoFyp5avg6WYN16ImHri6J7Nj8980Fm~aQe4EX1U,QvbWT0ImE0TwLODTl7EoJx2NBnwDxTbLTE6zkB-eGPs,AQACAAE/bombe/34/
+BookmarkCategory1.Content.Bookmark2.URI=USK at
e3myoFyp5avg6WYN16ImHri6J7Nj8980Fm~aQe4EX1U,QvbWT0ImE0TwLODTl7EoJx2NBnwDxTbLTE6zkB-eGPs,AQACAAE/bombe/35/
BookmarkCategory1.Content.Bookmark1.Name=Nextgen$
BookmarkCategory1.Content.Bookmark1.Description=NextGen$' flog
BookmarkCategory1.Content.Bookmark1.hasAnActivelink=true
@@ -45,7 +45,7 @@
BookmarkCategory1.Content.Bookmark0.URI=USK at
yGvITGZzrY1vUZK-4AaYLgcjZ7ysRqNTMfdcO8gS-LY,-ab5bJVD3Lp-LXEQqBAhJpMKrKJ19RnNaZMIkusU79s,AQACAAE/toad/12/
BookmarkCategory2.Name=Freenet related software and documentation
BookmarkCategory2.Content.BookmarkCategory=0
-BookmarkCategory2.Content.Bookmark=5
+BookmarkCategory2.Content.Bookmark=6
BookmarkCategory2.Content.Bookmark0.Name=Frost
BookmarkCategory2.Content.Bookmark0.Description=The official freesite of
Frost, a message board system for Freenet
BookmarkCategory2.Content.Bookmark0.hasAnActivelink=true
@@ -53,11 +53,11 @@
BookmarkCategory2.Content.Bookmark1.Name=Freenet Message System
BookmarkCategory2.Content.Bookmark1.Description=The official freesite of FMS,
a spam resistant message board system for Freenet
BookmarkCategory2.Content.Bookmark1.hasAnActivelink=true
-BookmarkCategory2.Content.Bookmark1.URI=USK at
0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/47/
+BookmarkCategory2.Content.Bookmark1.URI=USK at
0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/50/
BookmarkCategory2.Content.Bookmark2.Name=Freemail
BookmarkCategory2.Content.Bookmark2.Description=The official site for Freemail
- email over Freenet
BookmarkCategory2.Content.Bookmark2.hasAnActivelink=true
-BookmarkCategory2.Content.Bookmark2.URI=USK at
xOg49GNltumTJJzj0fVzuGDpo4hJUsy2UsGQkjE7NY4,EtUH5b9gGpp8JiY-Bm-Y9kHX1q-yDjD-9oRzXn21O9k,AQACAAE/freemail/2/
+BookmarkCategory2.Content.Bookmark2.URI=USK at
xOg49GNltumTJJzj0fVzuGDpo4hJUsy2UsGQkjE7NY4,EtUH5b9gGpp8JiY-Bm-Y9kHX1q-yDjD-9oRzXn21O9k,AQACAAE/freemail/3/
BookmarkCategory2.Content.Bookmark3.Name=Publish!
BookmarkCategory2.Content.Bookmark3.Description=Simple guide to publishing web
sites to Freenet
BookmarkCategory2.Content.Bookmark3.hasAnActivelink=true
@@ -66,4 +66,8 @@
BookmarkCategory2.Content.Bookmark4.Name=Freesite HOWTO
BookmarkCategory2.Content.Bookmark4.Description=A more detailed explanation of
publishing freesites
BookmarkCategory2.Content.Bookmark4.hasAnActivelink=true
+BookmarkCategory2.Content.Bookmark5.URI=USK at
F-BKUq9vNTrvp7D90r5edQ4MfZCrx3pP7TofdDlCRoU,YFUeosm79Z3KZxC62qQCteCCUI3D-LYyRk6P9auVpPA,AQACAAE/freenetapps/15/
+BookmarkCategory2.Content.Bookmark5.hasAnActivelink=true
+BookmarkCategory2.Content.Bookmark5.Name=The Freenet Applications Freesite
+BookmarkCategory2.Content.Bookmark5.Description=Various links to Freenet
applications, and instructions for using them
End
Modified:
branches/saltedhashstore/freenet/src/freenet/crypt/ciphers/Rijndael.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/crypt/ciphers/Rijndael.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/crypt/ciphers/Rijndael.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -4,7 +4,6 @@
import freenet.crypt.BlockCipher;
import freenet.crypt.UnsupportedCipherException;
-import freenet.support.HexUtil;
import freenet.support.Logger;
/*
@@ -21,14 +20,6 @@
private Object sessionKey;
private final int keysize, blocksize;
- private Rijndael(Integer keysize) throws UnsupportedCipherException {
- this(keysize.intValue());
- }
-
- private Rijndael(int keysize) throws UnsupportedCipherException {
- this(keysize, 128);
- }
-
/**
* Create a Rijndael instance.
* @param keysize The key size.
@@ -102,71 +93,4 @@
throw new IllegalArgumentException();
Rijndael_Algorithm.blockDecrypt(block, result, 0, sessionKey,
blocksize/8);
}
-
- public static void main(String[] args) throws
UnsupportedCipherException {
- // Perform the Monte Carlo test
-
- System.out.println("KEYSIZE=128\n");
- monteCarlo(128);
- System.out.println("=========================\n");
- System.out.println("KEYSIZE=192\n");
- monteCarlo(192);
- System.out.println("=========================\n");
- System.out.println("KEYSIZE=256\n");
- monteCarlo(256);
- }
-
- static void monteCarlo(int keySize) throws UnsupportedCipherException {
- Rijndael ctx=new Rijndael(keySize);
- int kb=keySize/8;
- byte[] P=new byte[16], C=new byte[16],
- CL=new byte[16], KEY=new byte[kb];
-
- for (int i=0; i<400; i++) {
- System.out.println("I="+i);
- System.out.println("KEY="+HexUtil.bytesToHex(KEY,0,kb));
-
- System.out.println("PT="+HexUtil.bytesToHex(P,0,16));
-
- ctx.initialize(KEY);
- for (int j=0; j<10000; j++) {
- System.arraycopy(C, 0, CL, 0, C.length);
- ctx.encipher(P, C);
- System.arraycopy(C, 0, P, 0, P.length);
- }
- System.out.println("CT="+HexUtil.bytesToHex(C,0,16));
-
-
- for (int x=0; x<kb; x++) {
- if (keySize==192)
- if (x<8)
- KEY[x]^=CL[8+x];
- else
- KEY[x]^=C[x-8];
- else if (keySize==256)
- if (x<16)
- KEY[x]^=CL[x];
- else
- KEY[x]^=C[x-16];
- else KEY[x]^=C[x];
- }
-
- if (keySize==192)
- for (int x=0; x<8; x++)
- KEY[x+16]^=CL[x+8];
- else if (keySize==256)
- for (int x=0; x<16; x++)
- KEY[x+16]^=CL[x];
-
- System.out.println();
- }
- }
}
-
-
-
-
-
-
-
-
Modified:
branches/saltedhashstore/freenet/src/freenet/io/comm/FreenetInetAddress.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/io/comm/FreenetInetAddress.java
2008-05-23 17:10:28 UTC (rev 20078)
+++
branches/saltedhashstore/freenet/src/freenet/io/comm/FreenetInetAddress.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -3,7 +3,7 @@
* http://www.gnu.org/ for further details of the GPL. */
package freenet.io.comm;
-import java.io.DataInputStream;
+import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
@@ -32,7 +32,7 @@
/**
* Create from serialized form on a DataInputStream.
*/
- public FreenetInetAddress(DataInputStream dis) throws IOException {
+ public FreenetInetAddress(DataInput dis) throws IOException {
int firstByte = dis.readUnsignedByte();
byte[] ba;
if(firstByte == 255) {
@@ -59,7 +59,8 @@
/**
* Create from serialized form on a DataInputStream.
*/
- public FreenetInetAddress(DataInputStream dis, boolean
checkHostnameOrIPSyntax) throws HostnameSyntaxException, IOException {
+ public FreenetInetAddress(DataInput dis, boolean
checkHostnameOrIPSyntax) throws HostnameSyntaxException,
+ IOException {
int firstByte = dis.readUnsignedByte();
byte[] ba;
if(firstByte == 255) {
Modified: branches/saltedhashstore/freenet/src/freenet/io/comm/Message.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/io/comm/Message.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/io/comm/Message.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -19,10 +19,18 @@
package freenet.io.comm;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
import java.lang.ref.WeakReference;
-import java.util.*;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Vector;
+import freenet.support.ByteBufferInputStream;
import freenet.support.Fields;
import freenet.support.Logger;
import freenet.support.Serializer;
@@ -46,17 +54,16 @@
final int _receivedByteCount;
public static Message decodeMessageFromPacket(byte[] buf, int offset,
int length, PeerContext peer, int overhead) {
- DataInputStream dis
- = new DataInputStream(new ByteArrayInputStream(buf,
- offset, length));
- return decodeMessage(dis, peer, length + overhead, true, false);
+ ByteBufferInputStream bb = new ByteBufferInputStream(buf,
offset, length);
+ return decodeMessage(bb, peer, length + overhead, true, false);
}
- public static Message decodeMessage(DataInputStream dis, PeerContext
peer, int recvByteCount, boolean mayHaveSubMessages, boolean inSubMessage) {
+ private static Message decodeMessage(ByteBufferInputStream bb,
PeerContext peer, int recvByteCount,
+ boolean mayHaveSubMessages, boolean inSubMessage) {
boolean logMINOR = Logger.shouldLog(Logger.MINOR,
Message.class);
MessageType mspec;
try {
- mspec = MessageType.getSpec(new Integer(dis.readInt()));
+ mspec = MessageType.getSpec(new Integer(bb.readInt()));
} catch (IOException e1) {
if(Logger.shouldLog(Logger.DEBUG, Message.class))
Logger.minor(Message.class,"Failed to read message
type: "+e1, e1);
@@ -73,25 +80,27 @@
String name = (String) i.next();
Class type = (Class) mspec.getFields().get(name);
if (type.equals(LinkedList.class)) { // Special
handling for LinkedList to deal with element type
- m.set(name,
Serializer.readListFromDataInputStream((Class)
mspec.getLinkedListTypes().get(name), dis));
+ m.set(name, Serializer
+
.readListFromDataInputStream((Class) mspec.getLinkedListTypes().get(name), bb));
} else {
- m.set(name,
Serializer.readFromDataInputStream(type, dis));
+ m.set(name,
Serializer.readFromDataInputStream(type, bb));
}
- }
- if(mayHaveSubMessages) {
- while(true) {
- DataInputStream dis2;
+ }
+ if (mayHaveSubMessages) {
+ while (bb.remaining() > 2) { // sizeof(unsigned short)
== 2
+ ByteBufferInputStream bb2;
try {
- int size = dis.readUnsignedShort();
- byte[] buf = new byte[size];
- dis.readFully(buf);
- dis2 = new DataInputStream(new
ByteArrayInputStream(buf));
+ int size = bb.readUnsignedShort();
+ if (bb.remaining() < size)
+ return m;
+
+ bb2 = bb.slice(size);
} catch (EOFException e) {
if(logMINOR)
Logger.minor(Message.class, "No submessages, returning: "+m);
return m;
}
try {
- Message subMessage =
decodeMessage(dis2, peer, 0, false, true);
+ Message subMessage = decodeMessage(bb2,
peer, 0, false, true);
if(subMessage == null) return m;
if(logMINOR)
Logger.minor(Message.class, "Adding submessage: "+subMessage);
m.addSubMessage(subMessage);
Modified: branches/saltedhashstore/freenet/src/freenet/io/comm/Peer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/io/comm/Peer.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/io/comm/Peer.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -19,6 +19,7 @@
package freenet.io.comm;
+import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -50,13 +51,13 @@
this(InetAddress.getLocalHost(), 0);
}
- public Peer(DataInputStream dis) throws IOException {
+ public Peer(DataInput dis) throws IOException {
addr = new FreenetInetAddress(dis);
_port = dis.readInt();
if(_port > 65535 || _port < 0) throw new IOException("bogus
port");
}
- public Peer(DataInputStream dis, boolean checkHostnameOrIPSyntax)
throws HostnameSyntaxException, IOException {
+ public Peer(DataInput dis, boolean checkHostnameOrIPSyntax) throws
HostnameSyntaxException, IOException {
addr = new FreenetInetAddress(dis, checkHostnameOrIPSyntax);
_port = dis.readInt();
if(_port > 65535 || _port < 0) throw new IOException("bogus
port");
Modified: branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java 2008-05-23
17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/l10n/L10n.java 2008-05-23
17:19:01 UTC (rev 20079)
@@ -35,7 +35,8 @@
public static final String OVERRIDE_SUFFIX = ".override" + SUFFIX;
public static final String FALLBACK_DEFAULT = "en";
- public static final String[] AVAILABLE_LANGUAGES = { "en", "es", "da",
"de", "fi", "fr", "it", "no", "pl", "se", "unlisted" };
+ public static final String[] AVAILABLE_LANGUAGES = { "en", "es", "da",
"de", "fi", "fr", "it", "no", "pl", "se",
+ "zh-cn", "zh-tw", "unlisted" };
private final String selectedLanguage;
private static SimpleFieldSet currentTranslation = null;
Modified:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
2008-05-23 17:10:28 UTC (rev 20078)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.en.properties
2008-05-23 17:19:01 UTC (rev 20079)
@@ -259,7 +259,7 @@
FirstTimeWizardToadlet.opennetYes=No, I want the node to automatically find
strangers to connect to.
FirstTimeWizardToadlet.opennetNo=Yes, I have at least 5 friends already using
Freenet and I will add their details on the Friends page.
FirstTimeWizardToadlet.warningTitle=Warning!
-FirstTimeWizardToadlet.opennetWarning=If Freenet is illegal where you live, or
if you are using it to access materials that may get you into trouble, telling
the node to automatically connect to strangers may be dangerous as it makes
life much easier for an attacker. Freenet is still alpha software, and we offer
no guarantees about security.
+FirstTimeWizardToadlet.opennetWarning=If Freenet is illegal where you live, or
if you are using it to access materials that may get you into trouble, telling
the node to automatically connect to strangers may be dangerous as it makes
life much easier for an attacker. Freenet is still experimental, and we offer
no guarantees about security.
FirstTimeWizardToadlet.welcomeInfoboxTitle=Welcome to Freenet first time
wizard!
FirstTimeWizardToadlet.welcomeInfoboxContent1=Welcome to Freenet first time
wizard. This tool will enable you to configure your node quickly and easily to
get you started.
FirstTimeWizardToadlet.bandwidthLimit=Bandwidth limits
Added:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-cn.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-cn.properties
(rev 0)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-cn.properties
2008-05-23 17:19:01 UTC (rev 20079)
@@ -0,0 +1,384 @@
+BookmarkEditorToadlet.addBookmark=????
+BookmarkEditorToadlet.addCategory=????
+BookmarkEditorToadlet.addNewBookmark=??????
+BookmarkEditorToadlet.addNewCategory=?????
+BookmarkEditorToadlet.addedNewBookmark=??????????.
+BookmarkEditorToadlet.addedNewBookmarkTitle=???????
+BookmarkEditorToadlet.bookmarkDoesNotExist="${bookmark}"???????.
+BookmarkEditorToadlet.cancelCut=????
+BookmarkEditorToadlet.cancelDelete=??
+BookmarkEditorToadlet.changesSaved=?????????.
+BookmarkEditorToadlet.changesSavedTitle=?????
+BookmarkEditorToadlet.confirmDelete=??
+BookmarkEditorToadlet.cut=??
+BookmarkEditorToadlet.delete=??
+BookmarkEditorToadlet.deleteBookmark=????
+BookmarkEditorToadlet.deleteBookmarkConfirm=????????${bookmark}??
+BookmarkEditorToadlet.deleteCategory=????
+BookmarkEditorToadlet.deleteCategoryConfirm=??????${bookmark}????????????????
+BookmarkEditorToadlet.deleteSucceeded=??????????.
+BookmarkEditorToadlet.deleteSucceededTitle=????
+BookmarkEditorToadlet.edit=??
+BookmarkEditorToadlet.editBookmarkTitle=????
+BookmarkEditorToadlet.editCategoryTitle=????
+BookmarkEditorToadlet.error=??
+BookmarkEditorToadlet.invalidKeyTitle=????
+BookmarkEditorToadlet.invalidKeyWithReason=???Freenet??.
+BookmarkEditorToadlet.keyLabel=??:
+BookmarkEditorToadlet.moveDown=??
+BookmarkEditorToadlet.moveUp=??
+BookmarkEditorToadlet.myBookmarksTitle=????
+BookmarkEditorToadlet.nameLabel=??:
+BookmarkEditorToadlet.paste=??
+BookmarkEditorToadlet.pasteOrCancel=?????????????,??????.
+BookmarkEditorToadlet.pasteTitle=??/??
+BookmarkEditorToadlet.save=??
+BookmarkEditorToadlet.title=?????
+BookmarkManager.list=????
+BooleanOption.parseError=????????: ${val} - ??? true ? false
+BuildOldAgeUserAlert.tooOld=?????????????????????????????????(Build
#${lastgood}). ?????????, ??????????"??"???????. (????????, Freenet
??????????????)
+BuildOldAgeUserAlert.tooOldShort=??????? Freenet ??????, ???????????????!
?????!
+BuildOldAgeUserAlert.tooOldTitle=?????
+ConfigToadlet.appliedTitle=???????
+ConfigToadlet.apply=??
+ConfigToadlet.fullTitle=${name} ? Freenet ????
+ConfigToadlet.reset=??
+ConfigToadlet.shortTitle=??
+ConfigurablePersister.doesNotExistCannotCreate=?????????????.
+ConfigurablePersister.existsCannotReadWrite=??????????????
+ConnectionsToadlet.nodeStatus.BACKED OFF=???
+ConnectionsToadlet.nodeStatus.CONNECTED=???
+ConnectionsToadlet.nodeStatus.CONNECTION ERROR=????
+ConnectionsToadlet.nodeStatus.DISCONNECTED=???
+ConnectionsToadlet.nodeStatus.TOO NEW=??
+ConnectionsToadlet.nodeStatus.TOO OLD=??
+ConnectionsToadlet.nodeStatus.UNKNOWN STATUS=????
+ConnectivityToadlet.connectivityTitle=??
+ConnectivityToadlet.summaryTitle=??
+ContentDataFilter.unknownCharset=?????????????????. ????????????????,
????????????.
+ContentDataFilter.unknownCharsetTitle=?????!
+ContentDataFilter.warningUnknownCharsetTitle=??: ?????? (${charset})
+DarknetConnectionsToadlet.activityInserts=??: ??${totalSenders}????,
${CHKhandlers}?CHK???, ${SSKhandlers}?SSK???
+DarknetConnectionsToadlet.activityRequests=??: ??${totalSenders}????,
${CHKhandlers}?CHK???, ${SSKhandlers}?SSK???
+DarknetConnectionsToadlet.activityTitle=????
+DarknetConnectionsToadlet.add=??
+DarknetConnectionsToadlet.addPeerTitle=??????
+DarknetConnectionsToadlet.backedOff=???????:????????????,???????????.
+DarknetConnectionsToadlet.backedOffShort=???
+DarknetConnectionsToadlet.busy=??:????????,??????????????????,??????????????.
+DarknetConnectionsToadlet.busyShort=??
+DarknetConnectionsToadlet.cancel=??
+DarknetConnectionsToadlet.cantFetchNoderefURL=??? ${url} ??????.?????.
+DarknetConnectionsToadlet.cantParseTryAgain=????????????:(${error}).?????.
+DarknetConnectionsToadlet.cantParseWrongEnding=?????????:???????????End??,???????????:${end}
+DarknetConnectionsToadlet.confirmRemoveNodeTitle=???
+DarknetConnectionsToadlet.confirmRemoveNodeWarningTitle=????
+DarknetConnectionsToadlet.connected=???:??????????
+DarknetConnectionsToadlet.connectedShort=???
+DarknetConnectionsToadlet.disabled=???????:????????????????.
+DarknetConnectionsToadlet.disabledShort=???
+DarknetConnectionsToadlet.enterDescription=?????:
+DarknetConnectionsToadlet.failedToAddNodeInternalErrorTitle=??????:????
+DarknetConnectionsToadlet.failedToAddNodeTitle=??????
+DarknetConnectionsToadlet.fcpPort=FCP: ${port}/tcp (?Frost,Thaw?Freenet???????)
+DarknetConnectionsToadlet.fileReference=??????????????:
+DarknetConnectionsToadlet.fnpPort=FNP: ${port}/udp (???????;??????????????)
+DarknetConnectionsToadlet.forceRemove=????
+DarknetConnectionsToadlet.fproxyDisabled=FProxy???????)?????
+DarknetConnectionsToadlet.fproxyPort=FProxy: ${port}/tcp (?web????)
+DarknetConnectionsToadlet.fullTitle=${name}?${counts}???
+DarknetConnectionsToadlet.go=??
+DarknetConnectionsToadlet.idleTime=??????????????????
+DarknetConnectionsToadlet.idleTimeTitle=???????
+DarknetConnectionsToadlet.invalidSignature=??????????????(${error}).
+DarknetConnectionsToadlet.ipAddressTitle=??
+DarknetConnectionsToadlet.listeningShort=???
+DarknetConnectionsToadlet.myFriends=????
+DarknetConnectionsToadlet.myReferenceHeader=${linkref}??????${/linkref}
(${linktext}????${/linktext})
+DarknetConnectionsToadlet.nameClickToMessage=????.????????????????????
+DarknetConnectionsToadlet.nameTitle=??
+DarknetConnectionsToadlet.neverConnected=????:????????????????.
+DarknetConnectionsToadlet.neverConnectedShort=????
+DarknetConnectionsToadlet.noPeersFirstHalf=Freenet?????????????,???????.??
+DarknetConnectionsToadlet.noPeersSecondHalf=??,???????????????.
+DarknetConnectionsToadlet.noRefOrURL=???????????????URL. ?????.
+DarknetConnectionsToadlet.nodePortsTitle=????????
+DarknetConnectionsToadlet.notConnected=???:?????,??????????????????.
+DarknetConnectionsToadlet.notConnectedShort=???
+DarknetConnectionsToadlet.pasteReference=???????????:
+DarknetConnectionsToadlet.privateNote=??????????
+DarknetConnectionsToadlet.privateNoteTitle=????
+DarknetConnectionsToadlet.referenceCopyWarning=???????${bold}????${/bold}??.??????${bold}????${/bold}.
+DarknetConnectionsToadlet.remove=???!
+DarknetConnectionsToadlet.removePeers=???????
+DarknetConnectionsToadlet.seedServersShort=??
+DarknetConnectionsToadlet.selectAction=-- ???? --
+DarknetConnectionsToadlet.sendMessageTitle=?????????
+DarknetConnectionsToadlet.sendMessageToPeers=???????????????
+DarknetConnectionsToadlet.statusTitle=??
+DarknetConnectionsToadlet.tmciPort=TMCI: ${port}/tcp (??telnet????????)
+DarknetConnectionsToadlet.tooNewShort=??
+DarknetConnectionsToadlet.tooOldShort=??
+DarknetConnectionsToadlet.transferringRequests=????: ${senders}????,
${receivers}????
+DarknetConnectionsToadlet.triedToAddSelf=????????????????.
+DarknetConnectionsToadlet.unknownAddress=(????)
+DarknetConnectionsToadlet.updateChangedPrivnotes=??????????
+DarknetConnectionsToadlet.urlReference=????????URL:
+DarknetConnectionsToadlet.versionTitle=??
+FProxyToadlet.alertsTitle=??
+FProxyToadlet.config=??/??????
+FProxyToadlet.configTitle=??
+FProxyToadlet.dangerousContentTitle=????????
+FProxyToadlet.dangerousRSSTitle=???????? (RSS)
+FProxyToadlet.friends=??????
+FProxyToadlet.friendsTitle=??
+FProxyToadlet.goBack=?????
+FProxyToadlet.homepage=??
+FProxyToadlet.mimeType=MIME ???${mime}
+FProxyToadlet.openForce=?${link}??${/link}????? ${mime} ????????????????
+FProxyToadlet.opennetTitle=??
+FProxyToadlet.pathNotFoundTitle=???????
+FProxyToadlet.pluginsTitle=??
+FProxyToadlet.queue=????????
+FProxyToadlet.queueTitle=??
+FProxyToadlet.sizeUnknown=??????
+FProxyToadlet.statsTitle=??
+FProxyToadlet.translationTitle=??
+FProxyToadlet.unknownMIMEType=MIME ??????
+FProxyToadlet.welcome=??
+FProxyToadlet.welcomeTitle=??
+FcpServer.allowedHosts=??????(????????)
+FcpServer.allowedHostsFullAccess=???????????
+FcpServer.allowedHostsLong=??????????IP??????????????????????IP?????CIDR???IP????(?
192.168.0.0/24)?
+FcpServer.isEnabled=??FCP???
+FcpServer.portNumber=FCP?
+FirstTimeWizardToadlet.bandwidthLimit=????
+FirstTimeWizardToadlet.bandwidthLimitLong=?????????????????????
+FirstTimeWizardToadlet.bwlimitHigherSpeed=???
+FirstTimeWizardToadlet.bwlimitLowerSpeed=???
+FirstTimeWizardToadlet.chooseNodeName=????????
+FirstTimeWizardToadlet.clickContinue=??????
+FirstTimeWizardToadlet.congratz=????????
+FirstTimeWizardToadlet.connectToStrangers=???????
+FirstTimeWizardToadlet.connectToStrangersLong=??????? Freenet
????????????????????????????????????
Freenet????????????????????Freenet??????????????????????????????
+FirstTimeWizardToadlet.continue=??
+FirstTimeWizardToadlet.continueEnd=???????Freenet?
+FirstTimeWizardToadlet.datastoreSizeLong=????????????????????????????????????????????????????????????????????????????????????
+FirstTimeWizardToadlet.enableOpennet=????????? Freenet ??
+FirstTimeWizardToadlet.fivePercentDisk=?? 5% ??????
+FirstTimeWizardToadlet.homepageTitle=Freenet ???????
+FirstTimeWizardToadlet.iDoTrust=???????? ${interface} (${ip}) ????
+FirstTimeWizardToadlet.isNetworkTrusted=???????????
+FirstTimeWizardToadlet.memoryLimitLong=???? Freenet
??????????????????/???Freenet ??????????????????????????????????? 128MB ???????
1GB ??????????? 256MB??????????? Freenet ?????
+FirstTimeWizardToadlet.noNetworkIF=?????????
+FirstTimeWizardToadlet.noNetworkIFLong=Freenet ??????????????????????? Freenet?
+FirstTimeWizardToadlet.opennetNo=???????????????? Freenet ???????????????????
+FirstTimeWizardToadlet.opennetWarning=?? Freenet ?????????????????? Freenet
?????????????????????????????????????????????Freenet ???????????????????????
+FirstTimeWizardToadlet.opennetYes=???????????????????
+FirstTimeWizardToadlet.skipWizard=??????????????
+FirstTimeWizardToadlet.step3Title=Freenet ?????? - ????
+FirstTimeWizardToadlet.step4Title=Freenet ?????? - ??????
+FirstTimeWizardToadlet.step6Title=Freenet ?????? - ??????
+FirstTimeWizardToadlet.welcomeInfoboxTitle=???? Freenet ???????
+GenericReadFilterCallback.malformedAbsoluteURL=?????? URL ???${error}
+GenericReadFilterCallback.malformedRelativeURL=?????? URL ???${error}
+InsertException.shortError.10=???
+InsertException.shortError.3=????
+IntOption.parseError=??????????? 32 ??? : ${val}
+JPEGFilter.notJpeg=?????????????JPEG????????????????????????????????????
+JPEGFilter.tooShort=???????????JPEG???
+JPEGFilter.tooShortTitle=????
+LocalFileInsertToadlet.fileHeader=??
+LocalFileInsertToadlet.insert=??
+LocalFileInsertToadlet.sizeHeader=??
+LoggerHook.unrecognizedPriority=??????????: ${name}.
+LongOption.parseError=??????????? 64 ??? : ${val}
+MeaningfulNodeNameUserAlert.noNodeNick=??????????????. ????, ??????????????
IRC ???????, ??????????????. (???, ??????????? darknet ????????????, ????????)
+MeaningfulNodeNameUserAlert.noNodeNickShort=????(??)????????
+MeaningfulNodeNameUserAlert.noNodeNickTitle=????(??)????????
+N2NTMToadlet.friends=??
+N2NTMToadlet.processingSend=???????????
+N2NTMToadlet.returnToFriends=??????
+N2NTMToadlet.sentTitle=??
+N2NTMToadlet.tooLongTitle=??
+N2NTMUserAlert.delete=??
+N2NTMUserAlert.reply=??
+N2NTMUserAlert.title=?${peername}(${peer})?????????${number}
+Node.inBWLimit=?????????????
+Node.inBWLimitLong=????????????????????????????? -1 ??????????
+Node.l10nLanguage=????????
+Node.l10nLanguageLong=?????????????????????????????
+Node.nodeName=??????
+Node.nodeNameLong=????????????????
+Node.outBWLimit=?????????????
+Node.storeSize=?????????
+Node.storeSizeLong=?????????
+PluginToadlet.addPluginTitle=??plugin
+PluginToadlet.failedToLoadPluginTitle=Plugin????
+PluginToadlet.noWebInterfaceTitle=?plugin?????
+PluginToadlet.pluginList=Plugin??
+PluginToadlet.pluginListTitle=Plugin??
+PluginToadlet.pluginNameTitle=Plugin??
+PluginToadlet.pluginNotFoundTitle=????plugin
+PluginToadlet.unsupportedMethod=????method.
+PluginToadlet.visit=??
+PproxyToadlet.cancel=??
+PproxyToadlet.classNameTitle=Class??
+PproxyToadlet.internalIDTitle=????
+PproxyToadlet.loadPluginLabel=??Plugin:
+PproxyToadlet.noPlugins=??????plugins
+PproxyToadlet.pluginNotFoundReload=??????????plugin.
+PproxyToadlet.pluginNotFoundReloadTitle=?????Plugin(??)
+PproxyToadlet.pluginUnloaded=?plugin????
+PproxyToadlet.pluginUnloadedWithName=${name}??plugin????.
+PproxyToadlet.plugins=Plugins
+PproxyToadlet.pluginsWithNodeName=${name}?plugins
+PproxyToadlet.reload=??
+PproxyToadlet.returnToPluginPage=??plugin??
+PproxyToadlet.startedAtTitle=????
+PproxyToadlet.unload=??
+PproxyToadlet.unloadPluginTitle=???plugin?
+PproxyToadlet.unloadPluginWithName=??????${name}??
+QueueToadlet.change=???
+QueueToadlet.delete=??
+QueueToadlet.download=??
+QueueToadlet.fileName=???
+QueueToadlet.identifier=??
+QueueToadlet.insertAs=???:
+QueueToadlet.insertFile=????
+QueueToadlet.key=??
+QueueToadlet.legend=??
+QueueToadlet.persistenceForever=??
+QueueToadlet.persistenceNone=?
+QueueToadlet.persistenceRebootr=??
+QueueToadlet.priority=???
+QueueToadlet.priority0=??
+QueueToadlet.priority1=???
+QueueToadlet.priority2=?
+QueueToadlet.priority3=??
+QueueToadlet.priority4=?
+QueueToadlet.priority5=???
+QueueToadlet.priority6=????
+QueueToadlet.progress=??
+QueueToadlet.reason=??
+QueueToadlet.restart=??
+QueueToadlet.size=??
+QueueToadlet.starting=???
+QueueToadlet.title=${nodeName}?????
+QueueToadlet.totalSize=????
+QueueToadlet.unknown=??
+SimpleToadletServer.cssName=??????
+StatisticsToadlet.activityInserts=??: ?? ${totalSenders} ????, ${CHKhandlers}
?CHK???, ${SSKhandlers} ?SSK???
+StatisticsToadlet.activityRequests=??: ?? ${totalSenders} ????, ${CHKhandlers}
?CHK???, ${SSKhandlers} ?SSK???
+StatisticsToadlet.allocMemory=Java??????: ${memory}
+StatisticsToadlet.bandwidthTitle=??
+StatisticsToadlet.cpus=???CPU??: ${count}
+StatisticsToadlet.getLogs=?????????
+StatisticsToadlet.inputRate=????: ?? ${rate} (???? ${max})
+StatisticsToadlet.jeDumpButton=????JE??
+StatisticsToadlet.jvmInfoTitle=JVM??
+StatisticsToadlet.jvmVendor=JVM ???? ${vendor}
+StatisticsToadlet.jvmVersion=JVM??: ${version}
+StatisticsToadlet.maxMemory=Java?????: ${memory}
+StatisticsToadlet.osArch=????????: ${arch}
+StatisticsToadlet.osName=??????: ${name}
+StatisticsToadlet.osVersion=??????: ${version}
+StatisticsToadlet.outputRate=????: ?? ${rate} (???? ${max})
+StatisticsToadlet.payloadOutput=????: ${total} (?? ${rate}) (${percent}%)
+StatisticsToadlet.peerStatsTitle=????
+StatisticsToadlet.threadDumpButton=????????
+StatisticsToadlet.threads=??????: ${running}/${max}
+StatisticsToadlet.totalInput=????: ${total} (?? ${rate})
+StatisticsToadlet.totalOutput=????: ${total} (?? ${rate})
+StatisticsToadlet.transferringRequests=????: ?? ${senders}, ?? ${receivers}
+StatisticsToadlet.usedMemory=Java??????: ${memory}
+StatisticsToadlet.versionTitle=??????
+SymlinkerToadlet.symlinks=ToadletServer??????
+TextModeClientInterfaceServer.allowedHosts=??????
+TextModeClientInterfaceServer.bindTo=??????
+TextModeClientInterfaceServer.bindToLong=?????IP??
+TextModeClientInterfaceServer.enableInputOutput=???stdout/stdin?
+TextModeClientInterfaceServer.enabled=??????
+TextModeClientInterfaceServer.enabledLong=?????????????
+TextModeClientInterfaceServer.telnetPortNumber=?????
+Toadlet.cancel=??
+TranslationToadlet.bracketRemoveOverride=(???????!)
+TranslationToadlet.bracketTranslateIt=(?????????!)
+TranslationToadlet.bracketUpdateTranslation=(??????)
+TranslationToadlet.confirmRemoveOverride=????????????:(${key} - ${value})??
+TranslationToadlet.contributingToLabelWithLang=????${lang}?????:
+TranslationToadlet.currentTranslationLabel=????
+TranslationToadlet.downloadTranslationsFile=????????
+TranslationToadlet.hideAlreadyTranslated=???????????
+TranslationToadlet.originalVersionLabel=?????(????)
+TranslationToadlet.reEdit=????????
+TranslationToadlet.remove=??
+TranslationToadlet.returnToTranslations=??????
+TranslationToadlet.showEverything=????,???????????
+TranslationToadlet.translationKeyLabel=????
+TranslationToadlet.translationUpdateTitle=????
+TranslationToadlet.translationUpdatedTitle=??????!
+TranslationToadlet.updateTranslationCommand=??????!
+UpdatedVersionAvailableUserAlert.armed=?????????????????Freenet???,??????.
+UpdatedVersionAvailableUserAlert.clickToUpdateNow=????????????????.
+UpdatedVersionAvailableUserAlert.downloadedNewExtJar=?????????????Freenet????,???${version}.
+UpdatedVersionAvailableUserAlert.downloadedNewJar=?????????????Freenet??,???${version}.
+UpdatedVersionAvailableUserAlert.fetchingNewNode=???????????????Freenet??(????
${nodeVersion}).
+UpdatedVersionAvailableUserAlert.notLatest=??????????????????.
+UpdatedVersionAvailableUserAlert.title=Freenet????????????
+UpdatedVersionAvailableUserAlert.updateASAPButton=????
+UpdatedVersionAvailableUserAlert.updateASAPQuestion=????????????????????????
+UpdatedVersionAvailableUserAlert.updateNowButton=????!
+UserAlert.apply=??
+UserAlert.hide=??
+UserAlert.reset=??
+UserAlertManager.criticalErrorCountLabel=????:
+UserAlertManager.errorCountLabel=??:
+UserAlertManager.minorCountLabel=??:
+UserAlertManager.totalLabel=??:
+UserAlertManager.warningCountLabel=??:
+UserAlertsToadlet.titleWithName=${name} ?????
+WelcomeToadlet.activityTitle=????
+WelcomeToadlet.alertsSummary=??????
+WelcomeToadlet.arkFetchCount=ARK???: ${total}
+WelcomeToadlet.confirmAddBookmarkSubTitle=??????
+WelcomeToadlet.confirmExternalLinkTitle=???????
+WelcomeToadlet.confirmExternalLinkWithURL=??????????????${url}???????? Freenet
???????????????????????????????
+WelcomeToadlet.disabledAlert=????
+WelcomeToadlet.extVersion=Freenet-ext ????:${build} r${rev}
+WelcomeToadlet.extVersionWithRecommended=Freenet-ext ????:${build}
(??????${recbuild}) ????:${rev}
+WelcomeToadlet.fetch=?
+WelcomeToadlet.fetchKeyLabel=?? Key
+WelcomeToadlet.finInsertSuccessWithKey=??????????? ${key} ?
+WelcomeToadlet.homepageFullTitleWithName=${name} ? Freenet FProxy ??
+WelcomeToadlet.ieWarning=?????????Internet Explorer?????????????????
+WelcomeToadlet.insertCount=??: ${total}
+WelcomeToadlet.insertFailedTitle=????
+WelcomeToadlet.insertSucceededTitle=??????
+WelcomeToadlet.insertedTitle=????
+WelcomeToadlet.keyInsertedSuccessfullyWithKeyAndName=?????? key
${link}${name}${/link}?
+WelcomeToadlet.nodeUpdateConfirm=????????Freenet????
+WelcomeToadlet.nodeUpdateConfirmTitle=??????
+WelcomeToadlet.privateKeyHeader=??
+WelcomeToadlet.publicKeyHeader=??
+WelcomeToadlet.requestCount=??: ${total}
+WelcomeToadlet.restart=??
+WelcomeToadlet.restartConfirm=??????????Freenet????
+WelcomeToadlet.restartConfirmTitle=????
+WelcomeToadlet.restartNode=????
+WelcomeToadlet.restarting=??????????????,?????????????.?????Freenet.
+WelcomeToadlet.restartingTitle=?Freenet???????.
+WelcomeToadlet.shutdown=??
+WelcomeToadlet.shutdownConfirm=???????? Freenet ????
+WelcomeToadlet.shutdownConfirmTitle=????
+WelcomeToadlet.shutdownNode=????
+WelcomeToadlet.splitfileErrorLabel=??????
+WelcomeToadlet.testnetWarningTitle=??(????)??
+WelcomeToadlet.thanks=???? Freenet.
+WelcomeToadlet.transferringRequestCount=????: ${total}
+WelcomeToadlet.update=??
+WelcomeToadlet.updating=?Freenet??????,???????????.?????????????????,?????????????.
+WelcomeToadlet.updatingTitle=?????
+WelcomeToadlet.version=Freenet ??:${fullVersion} ????:${build} r${rev}
+WelcomeToadlet.versionHeader=???????
+End
Added:
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-tw.properties
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-tw.properties
(rev 0)
+++
branches/saltedhashstore/freenet/src/freenet/l10n/freenet.l10n.zh-tw.properties
2008-05-23 17:19:01 UTC (rev 20079)
@@ -0,0 +1,384 @@
+BookmarkEditorToadlet.addBookmark=????
+BookmarkEditorToadlet.addCategory=????
+BookmarkEditorToadlet.addNewBookmark=??????
+BookmarkEditorToadlet.addNewCategory=?????
+BookmarkEditorToadlet.addedNewBookmark=??????????.
+BookmarkEditorToadlet.addedNewBookmarkTitle=???????
+BookmarkEditorToadlet.bookmarkDoesNotExist="${bookmark}"???????.
+BookmarkEditorToadlet.cancelCut=????
+BookmarkEditorToadlet.cancelDelete=??
+BookmarkEditorToadlet.changesSaved=?????????.
+BookmarkEditorToadlet.changesSavedTitle=?????
+BookmarkEditorToadlet.confirmDelete=??
+BookmarkEditorToadlet.cut=??
+BookmarkEditorToadlet.delete=??
+BookmarkEditorToadlet.deleteBookmark=????
+BookmarkEditorToadlet.deleteBookmarkConfirm=????????${bookmark}??
+BookmarkEditorToadlet.deleteCategory=????
+BookmarkEditorToadlet.deleteCategoryConfirm=??????${bookmark}????????????????
+BookmarkEditorToadlet.deleteSucceeded=??????????.
+BookmarkEditorToadlet.deleteSucceededTitle=????
+BookmarkEditorToadlet.edit=??
+BookmarkEditorToadlet.editBookmarkTitle=????
+BookmarkEditorToadlet.editCategoryTitle=????
+BookmarkEditorToadlet.error=??
+BookmarkEditorToadlet.invalidKeyTitle=????
+BookmarkEditorToadlet.invalidKeyWithReason=???Freenet??.
+BookmarkEditorToadlet.keyLabel=??:
+BookmarkEditorToadlet.moveDown=??
+BookmarkEditorToadlet.moveUp=??
+BookmarkEditorToadlet.myBookmarksTitle=????
+BookmarkEditorToadlet.nameLabel=??:
+BookmarkEditorToadlet.paste=??
+BookmarkEditorToadlet.pasteOrCancel=??????????????,??????.
+BookmarkEditorToadlet.pasteTitle=??/??
+BookmarkEditorToadlet.save=??
+BookmarkEditorToadlet.title=?????
+BookmarkManager.list=????
+BooleanOption.parseError=????????: ${val} - ??? true ? false
+BuildOldAgeUserAlert.tooOld=?????????????????????????????????(Build
#${lastgood}). ?????????, ??????????"??"???????. (????????, Freenet
??????????????)
+BuildOldAgeUserAlert.tooOldShort=??????? Freenet ??????, ???????????????!
?????!
+BuildOldAgeUserAlert.tooOldTitle=?????
+ConfigToadlet.appliedTitle=???????
+ConfigToadlet.apply=??
+ConfigToadlet.fullTitle=${name} ? Freenet ????
+ConfigToadlet.reset=??
+ConfigToadlet.shortTitle=??
+ConfigurablePersister.doesNotExistCannotCreate=?????????????.
+ConfigurablePersister.existsCannotReadWrite=??????????????
+ConnectionsToadlet.nodeStatus.BACKED OFF=???
+ConnectionsToadlet.nodeStatus.CONNECTED=???
+ConnectionsToadlet.nodeStatus.CONNECTION ERROR=????
+ConnectionsToadlet.nodeStatus.DISCONNECTED=???
+ConnectionsToadlet.nodeStatus.TOO NEW=??
+ConnectionsToadlet.nodeStatus.TOO OLD=??
+ConnectionsToadlet.nodeStatus.UNKNOWN STATUS=????
+ConnectivityToadlet.connectivityTitle=??
+ConnectivityToadlet.summaryTitle=??
+ContentDataFilter.unknownCharset=?????????????????. ????????????????,
????????????.
+ContentDataFilter.unknownCharsetTitle=?????!
+ContentDataFilter.warningUnknownCharsetTitle=??: ?????? (${charset})
+DarknetConnectionsToadlet.activityInserts=??: ??${totalSenders}????,
${CHKhandlers}?CHK???, ${SSKhandlers}?SSK???
+DarknetConnectionsToadlet.activityRequests=??: ??${totalSenders}????,
${CHKhandlers}?CHK???, ${SSKhandlers}?SSK???
+DarknetConnectionsToadlet.activityTitle=????
+DarknetConnectionsToadlet.add=??
+DarknetConnectionsToadlet.addPeerTitle=??????
+DarknetConnectionsToadlet.backedOff=???????:????????????,???????????.
+DarknetConnectionsToadlet.backedOffShort=???
+DarknetConnectionsToadlet.busy=??:????????,??????????????????,??????????????.
+DarknetConnectionsToadlet.busyShort=??
+DarknetConnectionsToadlet.cancel=??
+DarknetConnectionsToadlet.cantFetchNoderefURL=??? ${url} ??????.?????.
+DarknetConnectionsToadlet.cantParseTryAgain=????????????:(${error}).?????.
+DarknetConnectionsToadlet.cantParseWrongEnding=?????????:???????????End??,???????????:${end}
+DarknetConnectionsToadlet.confirmRemoveNodeTitle=???
+DarknetConnectionsToadlet.confirmRemoveNodeWarningTitle=????
+DarknetConnectionsToadlet.connected=???:??????????
+DarknetConnectionsToadlet.connectedShort=???
+DarknetConnectionsToadlet.disabled=???????:????????????????.
+DarknetConnectionsToadlet.disabledShort=???
+DarknetConnectionsToadlet.enterDescription=?????:
+DarknetConnectionsToadlet.failedToAddNodeInternalErrorTitle=??????:????
+DarknetConnectionsToadlet.failedToAddNodeTitle=??????
+DarknetConnectionsToadlet.fcpPort=FCP: ${port}/tcp (?Frost,Thaw?Freenet???????)
+DarknetConnectionsToadlet.fileReference=??????????????:
+DarknetConnectionsToadlet.fnpPort=FNP: ${port}/udp (???????;??????????????)
+DarknetConnectionsToadlet.forceRemove=????
+DarknetConnectionsToadlet.fproxyDisabled=FProxy???????)?????
+DarknetConnectionsToadlet.fproxyPort=FProxy: ${port}/tcp (?web????)
+DarknetConnectionsToadlet.fullTitle=${name}?${counts}???
+DarknetConnectionsToadlet.go=??
+DarknetConnectionsToadlet.idleTime=??????????????????
+DarknetConnectionsToadlet.idleTimeTitle=???????
+DarknetConnectionsToadlet.invalidSignature=??????????????(${error}).
+DarknetConnectionsToadlet.ipAddressTitle=??
+DarknetConnectionsToadlet.listeningShort=???
+DarknetConnectionsToadlet.myFriends=????
+DarknetConnectionsToadlet.myReferenceHeader=${linkref}??????${/linkref}
(${linktext}????${/linktext})
+DarknetConnectionsToadlet.nameClickToMessage=????.????????????????????
+DarknetConnectionsToadlet.nameTitle=??
+DarknetConnectionsToadlet.neverConnected=????:????????????????.
+DarknetConnectionsToadlet.neverConnectedShort=????
+DarknetConnectionsToadlet.noPeersFirstHalf=Freenet?????????????,???????.??
+DarknetConnectionsToadlet.noPeersSecondHalf=??,???????????????.
+DarknetConnectionsToadlet.noRefOrURL=???????????????URL. ?????.
+DarknetConnectionsToadlet.nodePortsTitle=????????
+DarknetConnectionsToadlet.notConnected=???:?????,??????????????????.
+DarknetConnectionsToadlet.notConnectedShort=???
+DarknetConnectionsToadlet.pasteReference=???????????:
+DarknetConnectionsToadlet.privateNote=??????????
+DarknetConnectionsToadlet.privateNoteTitle=????
+DarknetConnectionsToadlet.referenceCopyWarning=???????${bold}????${/bold}??.??????${bold}????${/bold}.
+DarknetConnectionsToadlet.remove=???!
+DarknetConnectionsToadlet.removePeers=???????
+DarknetConnectionsToadlet.seedServersShort=??
+DarknetConnectionsToadlet.selectAction=-- ???? --
+DarknetConnectionsToadlet.sendMessageTitle=?????????
+DarknetConnectionsToadlet.sendMessageToPeers=???????????????
+DarknetConnectionsToadlet.statusTitle=??
+DarknetConnectionsToadlet.tmciPort=TMCI: ${port}/tcp (??telnet????????)
+DarknetConnectionsToadlet.tooNewShort=??
+DarknetConnectionsToadlet.tooOldShort=??
+DarknetConnectionsToadlet.transferringRequests=????: ${senders}????,
${receivers}????
+DarknetConnectionsToadlet.triedToAddSelf=????????????????.
+DarknetConnectionsToadlet.unknownAddress=(????)
+DarknetConnectionsToadlet.updateChangedPrivnotes=??????????
+DarknetConnectionsToadlet.urlReference=????????URL:
+DarknetConnectionsToadlet.versionTitle=??
+FProxyToadlet.alertsTitle=??
+FProxyToadlet.config=??/??????
+FProxyToadlet.configTitle=??
+FProxyToadlet.dangerousContentTitle=????????
+FProxyToadlet.dangerousRSSTitle=???????? (RSS)
+FProxyToadlet.friends=??????
+FProxyToadlet.friendsTitle=??
+FProxyToadlet.goBack=?????
+FProxyToadlet.homepage=??
+FProxyToadlet.mimeType=MIME ???${mime}
+FProxyToadlet.openForce=?${link}??${/link}????? ${mime} ????????????????
+FProxyToadlet.opennetTitle=??
+FProxyToadlet.pathNotFoundTitle=???????
+FProxyToadlet.pluginsTitle=????
+FProxyToadlet.queue=????????
+FProxyToadlet.queueTitle=??
+FProxyToadlet.sizeUnknown=??????
+FProxyToadlet.statsTitle=??
+FProxyToadlet.translationTitle=??
+FProxyToadlet.unknownMIMEType=MIME ??????
+FProxyToadlet.welcome=??
+FProxyToadlet.welcomeTitle=??
+FcpServer.allowedHosts=??????(????????)
+FcpServer.allowedHostsFullAccess=???????????
+FcpServer.allowedHostsLong=???????????IP???????????????????????IP?????CIDR???IP????(?
192.168.0.0/24)?
+FcpServer.isEnabled=??FCP???
+FcpServer.portNumber=FCP?
+FirstTimeWizardToadlet.bandwidthLimit=????
+FirstTimeWizardToadlet.bandwidthLimitLong=???????????????????????
+FirstTimeWizardToadlet.bwlimitHigherSpeed=???
+FirstTimeWizardToadlet.bwlimitLowerSpeed=???
+FirstTimeWizardToadlet.chooseNodeName=????????
+FirstTimeWizardToadlet.clickContinue=??????
+FirstTimeWizardToadlet.congratz=????????
+FirstTimeWizardToadlet.connectToStrangers=???????
+FirstTimeWizardToadlet.connectToStrangersLong=??????? Freenet
????????????????????????????????????
Freenet????????????????????Freenet??????????????????????????????
+FirstTimeWizardToadlet.continue=??
+FirstTimeWizardToadlet.continueEnd=???????Freenet?
+FirstTimeWizardToadlet.datastoreSizeLong=???????????????????????????????????????????????????????????????????????????????????
+FirstTimeWizardToadlet.enableOpennet=????????? Freenet ??
+FirstTimeWizardToadlet.fivePercentDisk=?? 5% ??????
+FirstTimeWizardToadlet.homepageTitle=Freenet ???????
+FirstTimeWizardToadlet.iDoTrust=???????? ${interface} (${ip}) ????
+FirstTimeWizardToadlet.isNetworkTrusted=???????????
+FirstTimeWizardToadlet.memoryLimitLong=???? Freenet
????????????????????/???Freenet ??????????????????????????????????????? 128MB
??????? 1GB ????????????? 256MB??????????? Freenet ?????
+FirstTimeWizardToadlet.noNetworkIF=?????????
+FirstTimeWizardToadlet.noNetworkIFLong=Freenet ??????????????????????? Freenet?
+FirstTimeWizardToadlet.opennetNo=???????????????? Freenet ???????????????????
+FirstTimeWizardToadlet.opennetWarning=?? Freenet ?????????????????? Freenet
?????????????????????????????????????????????Freenet ???????????????????????
+FirstTimeWizardToadlet.opennetYes=???????????????????
+FirstTimeWizardToadlet.skipWizard=??????????????
+FirstTimeWizardToadlet.step3Title=Freenet ?????? - ????
+FirstTimeWizardToadlet.step4Title=Freenet ?????? - ??????
+FirstTimeWizardToadlet.step6Title=Freenet ?????? - ????????
+FirstTimeWizardToadlet.welcomeInfoboxTitle=???? Freenet ???????
+GenericReadFilterCallback.malformedAbsoluteURL=?????? URL ???${error}
+GenericReadFilterCallback.malformedRelativeURL=?????? URL ???${error}
+InsertException.shortError.10=???
+InsertException.shortError.3=????
+IntOption.parseError=??????????? 32 ???? : ${val}
+JPEGFilter.notJpeg=?????????????JPEG????????????????????????????????????
+JPEGFilter.tooShort=???????????JPEG???
+JPEGFilter.tooShortTitle=????
+LocalFileInsertToadlet.fileHeader=??
+LocalFileInsertToadlet.insert=??
+LocalFileInsertToadlet.sizeHeader=??
+LoggerHook.unrecognizedPriority=??????????: ${name}.
+LongOption.parseError=??????????? 64 ???? : ${val}
+MeaningfulNodeNameUserAlert.noNodeNick=??????????????. ????, ??????????????
IRC ???????, ??????????????. (???, ??????????? darknet ????????????, ????????)
+MeaningfulNodeNameUserAlert.noNodeNickShort=????(??)????????
+MeaningfulNodeNameUserAlert.noNodeNickTitle=????(??)????????
+N2NTMToadlet.friends=??
+N2NTMToadlet.processingSend=???????????
+N2NTMToadlet.returnToFriends=??????
+N2NTMToadlet.sentTitle=??
+N2NTMToadlet.tooLongTitle=??
+N2NTMUserAlert.delete=??
+N2NTMUserAlert.reply=??
+N2NTMUserAlert.title=?${peername}(${peer})?????????${number}
+Node.inBWLimit=??????????????
+Node.inBWLimitLong=?????????????????????????????? -1 ??????????
+Node.l10nLanguage=????????
+Node.l10nLanguageLong=?????????????????????????????
+Node.nodeName=??????
+Node.nodeNameLong=????????????????
+Node.outBWLimit=??????????????
+Node.storeSize=?????????
+Node.storeSizeLong=?????????
+PluginToadlet.addPluginTitle=??plugin
+PluginToadlet.failedToLoadPluginTitle=Plugin????
+PluginToadlet.noWebInterfaceTitle=?plugin?????
+PluginToadlet.pluginList=Plugin??
+PluginToadlet.pluginListTitle=Plugin??
+PluginToadlet.pluginNameTitle=Plugin??
+PluginToadlet.pluginNotFoundTitle=????plugin
+PluginToadlet.unsupportedMethod=????method.
+PluginToadlet.visit=??
+PproxyToadlet.cancel=??
+PproxyToadlet.classNameTitle=Class??
+PproxyToadlet.internalIDTitle=????
+PproxyToadlet.loadPluginLabel=??Plugin:
+PproxyToadlet.noPlugins=??????plugins
+PproxyToadlet.pluginNotFoundReload=??????????plugin.
+PproxyToadlet.pluginNotFoundReloadTitle=?????Plugin(????)
+PproxyToadlet.pluginUnloaded=?plugin????
+PproxyToadlet.pluginUnloadedWithName=${name}??plugin????.
+PproxyToadlet.plugins=Plugins
+PproxyToadlet.pluginsWithNodeName=${name}?plugins
+PproxyToadlet.reload=????
+PproxyToadlet.returnToPluginPage=??plugin??
+PproxyToadlet.startedAtTitle=????
+PproxyToadlet.unload=??
+PproxyToadlet.unloadPluginTitle=???plugin?
+PproxyToadlet.unloadPluginWithName=??????${name}??
+QueueToadlet.change=???
+QueueToadlet.delete=??
+QueueToadlet.download=??
+QueueToadlet.fileName=???
+QueueToadlet.identifier=??
+QueueToadlet.insertAs=???:
+QueueToadlet.insertFile=????
+QueueToadlet.key=??
+QueueToadlet.legend=??
+QueueToadlet.persistenceForever=??
+QueueToadlet.persistenceNone=?
+QueueToadlet.persistenceRebootr=??
+QueueToadlet.priority=???
+QueueToadlet.priority0=??
+QueueToadlet.priority1=???
+QueueToadlet.priority2=?
+QueueToadlet.priority3=??
+QueueToadlet.priority4=?
+QueueToadlet.priority5=???
+QueueToadlet.priority6=????
+QueueToadlet.progress=??
+QueueToadlet.reason=??
+QueueToadlet.restart=??
+QueueToadlet.size=??
+QueueToadlet.starting=???
+QueueToadlet.title=${nodeName}?????
+QueueToadlet.totalSize=????
+QueueToadlet.unknown=??
+SimpleToadletServer.cssName=??????
+StatisticsToadlet.activityInserts=??: ?? ${totalSenders} ????, ${CHKhandlers}
?CHK???, ${SSKhandlers} ?SSK???
+StatisticsToadlet.activityRequests=??: ?? ${totalSenders} ????, ${CHKhandlers}
?CHK???, ${SSKhandlers} ?SSK???
+StatisticsToadlet.allocMemory=Java???????: ${memory}
+StatisticsToadlet.bandwidthTitle=??
+StatisticsToadlet.cpus=???CPU??: ${count}
+StatisticsToadlet.getLogs=?????????
+StatisticsToadlet.inputRate=????: ?? ${rate} (???? ${max})
+StatisticsToadlet.jeDumpButton=????JE??
+StatisticsToadlet.jvmInfoTitle=JVM??
+StatisticsToadlet.jvmVendor=JVM ???? ${vendor}
+StatisticsToadlet.jvmVersion=JVM??: ${version}
+StatisticsToadlet.maxMemory=Java??????: ${memory}
+StatisticsToadlet.osArch=????????: ${arch}
+StatisticsToadlet.osName=??????: ${name}
+StatisticsToadlet.osVersion=??????: ${version}
+StatisticsToadlet.outputRate=????: ?? ${rate} (???? ${max})
+StatisticsToadlet.payloadOutput=????: ${total} (?? ${rate}) (${percent}%)
+StatisticsToadlet.peerStatsTitle=????
+StatisticsToadlet.threadDumpButton=?????????
+StatisticsToadlet.threads=???????: ${running}/${max}
+StatisticsToadlet.totalInput=????: ${total} (?? ${rate})
+StatisticsToadlet.totalOutput=????: ${total} (?? ${rate})
+StatisticsToadlet.transferringRequests=????: ?? ${senders}, ?? ${receivers}
+StatisticsToadlet.usedMemory=Java???????: ${memory}
+StatisticsToadlet.versionTitle=??????
+SymlinkerToadlet.symlinks=ToadletServer??????
+TextModeClientInterfaceServer.allowedHosts=??????
+TextModeClientInterfaceServer.bindTo=??????
+TextModeClientInterfaceServer.bindToLong=?????IP??
+TextModeClientInterfaceServer.enableInputOutput=???stdout/stdin?
+TextModeClientInterfaceServer.enabled=??????
+TextModeClientInterfaceServer.enabledLong=?????????????
+TextModeClientInterfaceServer.telnetPortNumber=?????
+Toadlet.cancel=??
+TranslationToadlet.bracketRemoveOverride=(???????!)
+TranslationToadlet.bracketTranslateIt=(?????????!)
+TranslationToadlet.bracketUpdateTranslation=(??????)
+TranslationToadlet.confirmRemoveOverride=????????????:(${key} - ${value})??
+TranslationToadlet.contributingToLabelWithLang=????${lang}?????:
+TranslationToadlet.currentTranslationLabel=????
+TranslationToadlet.downloadTranslationsFile=????????
+TranslationToadlet.hideAlreadyTranslated=??????????
+TranslationToadlet.originalVersionLabel=????(????)
+TranslationToadlet.reEdit=????????
+TranslationToadlet.remove=??
+TranslationToadlet.returnToTranslations=??????
+TranslationToadlet.showEverything=????,??????????
+TranslationToadlet.translationKeyLabel=????
+TranslationToadlet.translationUpdateTitle=????
+TranslationToadlet.translationUpdatedTitle=??????!
+TranslationToadlet.updateTranslationCommand=??????!
+UpdatedVersionAvailableUserAlert.armed=?????????????????Freenet???,??????.
+UpdatedVersionAvailableUserAlert.clickToUpdateNow=????????????????.
+UpdatedVersionAvailableUserAlert.downloadedNewExtJar=?????????????Freenet????,???${version}.
+UpdatedVersionAvailableUserAlert.downloadedNewJar=?????????????Freenet??,???${version}.
+UpdatedVersionAvailableUserAlert.fetchingNewNode=???????????????Freenet??(????
${nodeVersion}).
+UpdatedVersionAvailableUserAlert.notLatest=??????????????????.
+UpdatedVersionAvailableUserAlert.title=Freenet????????????
+UpdatedVersionAvailableUserAlert.updateASAPButton=????
+UpdatedVersionAvailableUserAlert.updateASAPQuestion=????????????????????????
+UpdatedVersionAvailableUserAlert.updateNowButton=????!
+UserAlert.apply=??
+UserAlert.hide=??
+UserAlert.reset=??
+UserAlertManager.criticalErrorCountLabel=????:
+UserAlertManager.errorCountLabel=??:
+UserAlertManager.minorCountLabel=??:
+UserAlertManager.totalLabel=??:
+UserAlertManager.warningCountLabel=??:
+UserAlertsToadlet.titleWithName=${name} ?????
+WelcomeToadlet.activityTitle=????
+WelcomeToadlet.alertsSummary=??????
+WelcomeToadlet.arkFetchCount=ARK???: ${total}
+WelcomeToadlet.confirmAddBookmarkSubTitle=??????
+WelcomeToadlet.confirmExternalLinkTitle=???????
+WelcomeToadlet.confirmExternalLinkWithURL=??????????????${url}???????? Freenet
???????????????????????????????
+WelcomeToadlet.disabledAlert=????
+WelcomeToadlet.extVersion=Freenet-ext ????:${build} r${rev}
+WelcomeToadlet.extVersionWithRecommended=Freenet-ext ????:${build}
(??????${recbuild}) ????:${rev}
+WelcomeToadlet.fetch=?
+WelcomeToadlet.fetchKeyLabel=?? Key
+WelcomeToadlet.finInsertSuccessWithKey=??????????? ${key} ?
+WelcomeToadlet.homepageFullTitleWithName=${name} ? Freenet FProxy ??
+WelcomeToadlet.ieWarning=?????????Internet Explorer?????????????????
+WelcomeToadlet.insertCount=??: ${total}
+WelcomeToadlet.insertFailedTitle=????
+WelcomeToadlet.insertSucceededTitle=??????
+WelcomeToadlet.insertedTitle=????
+WelcomeToadlet.keyInsertedSuccessfullyWithKeyAndName=?????? key
${link}${name}${/link}?
+WelcomeToadlet.nodeUpdateConfirm=????????Freenet????
+WelcomeToadlet.nodeUpdateConfirmTitle=??????
+WelcomeToadlet.privateKeyHeader=????
+WelcomeToadlet.publicKeyHeader=????
+WelcomeToadlet.requestCount=??: ${total}
+WelcomeToadlet.restart=??
+WelcomeToadlet.restartConfirm=??????????Freenet????
+WelcomeToadlet.restartConfirmTitle=????
+WelcomeToadlet.restartNode=????
+WelcomeToadlet.restarting=??????????????,?????????????.?????Freenet.
+WelcomeToadlet.restartingTitle=?Freenet???????.
+WelcomeToadlet.shutdown=??
+WelcomeToadlet.shutdownConfirm=???????? Freenet ????
+WelcomeToadlet.shutdownConfirmTitle=????
+WelcomeToadlet.shutdownNode=????
+WelcomeToadlet.splitfileErrorLabel=??????
+WelcomeToadlet.testnetWarningTitle=??(????)??
+WelcomeToadlet.thanks=???? Freenet.
+WelcomeToadlet.transferringRequestCount=????: ${total}
+WelcomeToadlet.update=??
+WelcomeToadlet.updating=?Freenet??????,???????????.?????????????????,?????????????.
+WelcomeToadlet.updatingTitle=?????
+WelcomeToadlet.version=Freenet ??:${fullVersion} ????:${build} r${rev}
+WelcomeToadlet.versionHeader=???????
+End
Modified: branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/node/Announcer.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -447,17 +447,17 @@
announcementAddedNodes++;
totalAdded++;
}
- Logger.error(this, "Announcement to
"+seed.userToString()+" added node "+pn+" for a total of
"+announcementAddedNodes+" ("+totalAdded+" from this announcement)");
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" added node "+pn+" for a total of
"+announcementAddedNodes+" ("+totalAdded+" from this announcement)");
System.out.println("Announcement to
"+seed.userToString()+" added node "+pn.userToString()+'.');
return;
}
public void bogusNoderef(String reason) {
- Logger.error(this, "Announcement to
"+seed.userToString()+" got bogus noderef: "+reason, new Exception("debug"));
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" got bogus noderef: "+reason, new Exception("debug"));
}
public void completed() {
synchronized(Announcer.this) {
runningAnnouncements--;
- Logger.error(this, "Announcement to
"+seed.userToString()+" completed, now running "+runningAnnouncements+"
announcements");
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" completed, now running "+runningAnnouncements+"
announcements");
if(runningAnnouncements == 0) {
startTime =
System.currentTimeMillis() + COOLING_OFF_PERIOD;
sentAnnouncements = 0;
@@ -479,20 +479,20 @@
}
public void nodeFailed(PeerNode pn, String reason) {
- Logger.error(this, "Announcement to node
"+pn.userToString()+" failed: "+reason);
+ Logger.normal(this, "Announcement to node
"+pn.userToString()+" failed: "+reason);
}
public void noMoreNodes() {
- Logger.error(this, "Announcement to
"+seed.userToString()+" ran out of nodes (route not found)");
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" ran out of nodes (route not found)");
}
public void nodeNotWanted() {
synchronized(Announcer.this) {
announcementNotWantedNodes++;
totalNotWanted++;
}
- Logger.error(this, "Announcement to
"+seed.userToString()+" returned node not wanted for a total of
"+announcementNotWantedNodes+" ("+totalNotWanted+" from this announcement)");
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" returned node not wanted for a total of
"+announcementNotWantedNodes+" ("+totalNotWanted+" from this announcement)");
}
public void nodeNotAdded() {
- Logger.error(this, "Announcement to
"+seed.userToString()+" : node not wanted (maybe already have it, opennet just
turned off, etc)");
+ Logger.normal(this, "Announcement to
"+seed.userToString()+" : node not wanted (maybe already have it, opennet just
turned off, etc)");
}
}, seed);
node.executor.execute(sender, "Announcer to "+seed);
Modified: branches/saltedhashstore/freenet/src/freenet/node/Node.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Node.java 2008-05-23
17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/node/Node.java 2008-05-23
17:19:01 UTC (rev 20079)
@@ -3351,4 +3351,4 @@
public void setDispatcherHook(NodeDispatcherCallback cb) {
this.dispatcher.setHook(cb);
}
-}
+}
\ No newline at end of file
Modified: branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/node/PeerNode.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -1715,6 +1715,8 @@
else
if(logMINOR)
Logger.minor(this, "Received
packet while disconnected on " + this + " - recently disconnected() ?");
+ } else {
+ if(logMINOR) Logger.minor(this, "Received
packet on "+this);
}
}
long now = System.currentTimeMillis();
Modified:
branches/saltedhashstore/freenet/src/freenet/node/SeedClientPeerNode.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/SeedClientPeerNode.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/node/SeedClientPeerNode.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -87,4 +87,14 @@
void startARKFetcher() {
// Do not start an ARK fetcher.
}
+
+ public boolean shouldDisconnectAndRemoveNow() {
+ if(!isConnected()) {
+ // SeedClientPeerNode's always start off unverified.
+ // If it doesn't manage to connect in 60 seconds, dump
it.
+ if(System.currentTimeMillis() -
lastReceivedPacketTime() > 60*1000)
+ return true;
+ }
+ return false;
+ }
}
Modified: branches/saltedhashstore/freenet/src/freenet/node/Version.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/node/Version.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/node/Version.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -24,7 +24,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1149;
+ private static final int buildNumber = 1150;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 1145;
Modified:
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
2008-05-23 17:10:28 UTC (rev 20078)
+++
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -806,19 +806,17 @@
if(result.equals(OperationStatus.SUCCESS))
deleted++;
- if((curBlocks-i) % 2048 == 0) {
- t.commit();
- t = null;
- }
+ t.commit();
+ t = null;
freeBlocks.remove(i);
-
+
+ long chkBlocksInDatabase =
highestBlockNumberInDatabase();
synchronized(this) {
maxBlocks = maxBlocksInStore;
- curBlocks = blocksInStore;
+ curBlocks = blocksInStore =
chkBlocksInDatabase;
if(maxBlocks >= curBlocks)
break;
}
-
}
if(t != null)
Modified: branches/saltedhashstore/freenet/src/freenet/support/BitArray.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BitArray.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/support/BitArray.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -19,7 +19,9 @@
package freenet.support;
-import java.io.*;
+import java.io.DataInput;
+import java.io.DataOutputStream;
+import java.io.IOException;
import freenet.io.WritableToDataOutputStream;
@@ -33,13 +35,13 @@
/**
* This constructor does not check for unacceptable sizes, and should
only be used on trusted data.
*/
- public BitArray(DataInputStream dis) throws IOException {
+ public BitArray(DataInput dis) throws IOException {
_size = dis.readInt();
_bits = new byte[(_size / 8) + (_size % 8 == 0 ? 0 : 1)];
dis.readFully(_bits);
}
- public BitArray(DataInputStream dis, int maxSize) throws IOException {
+ public BitArray(DataInput dis, int maxSize) throws IOException {
_size = dis.readInt();
if (_size<=0 || _size>maxSize)
throw new IOException("Unacceptable bitarray size:
"+_size);
Modified: branches/saltedhashstore/freenet/src/freenet/support/Buffer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/Buffer.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/support/Buffer.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -19,8 +19,10 @@
package freenet.support;
-import java.io.*;
-import java.util.*;
+import java.io.DataInput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
import freenet.io.WritableToDataOutputStream;
@@ -45,7 +47,7 @@
* @param dis
* @throws IOException
*/
- public Buffer(DataInputStream dis) throws IOException {
+ public Buffer(DataInput dis) throws IOException {
_data = new byte[dis.readInt()];
_length = _data.length;
_start = 0;
Added:
branches/saltedhashstore/freenet/src/freenet/support/ByteBufferInputStream.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/support/ByteBufferInputStream.java
(rev 0)
+++
branches/saltedhashstore/freenet/src/freenet/support/ByteBufferInputStream.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -0,0 +1,205 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.support;
+
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+
+/**
+ * @author sdiz
+ */
+public class ByteBufferInputStream extends InputStream implements DataInput {
+ protected ByteBuffer buf;
+
+ public ByteBufferInputStream(byte[] array) {
+ this(array, 0, array.length);
+ }
+
+ public ByteBufferInputStream(byte[] array, int offset, int length) {
+ this(ByteBuffer.wrap(array, offset, length));
+ }
+ public ByteBufferInputStream(ByteBuffer buf) {
+ this.buf = buf;
+ }
+
+ public int read() throws IOException {
+ try {
+ return buf.get() & Integer.MAX_VALUE;
+ } catch (BufferUnderflowException e) {
+ return -1;
+ }
+ }
+
+
+ public int remaining() {
+ return buf.remaining();
+ }
+
+ public boolean readBoolean() throws IOException {
+ try {
+ return buf.get() != 0;
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public byte readByte() throws IOException {
+ try {
+ return buf.get();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public char readChar() throws IOException {
+ try {
+ return buf.getChar();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public double readDouble() throws IOException {
+ try {
+ return buf.getDouble();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public float readFloat() throws IOException {
+ try {
+ return buf.getFloat();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public void readFully(byte[] b) throws IOException {
+ try {
+ buf.get(b);
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public void readFully(byte[] b, int off, int len) throws IOException {
+ try {
+ buf.get(b, off, len);
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public int readInt() throws IOException {
+ try {
+ return buf.getInt();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public long readLong() throws IOException {
+ try {
+ return buf.getLong();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public short readShort() throws IOException {
+ try {
+ return buf.getShort();
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+
+ public int readUnsignedByte() throws IOException {
+ try {
+ return buf.get() & Integer.MAX_VALUE;
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public int readUnsignedShort() throws IOException {
+ try {
+ return buf.getShort() & Integer.MAX_VALUE;
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public int skipBytes(int n) throws IOException {
+ int skip = Math.min(n, buf.remaining());
+ buf.position(buf.position() + skip);
+ return skip;
+ }
+
+ public String readUTF() throws IOException {
+ return DataInputStream.readUTF(this);
+ }
+ /**
+ * @deprecated {@link DataInputStream#readLine()} is deprecated, so why
not?
+ */
+ public String readLine() throws IOException {
+ // hmmmm bad
+ return new DataInputStream(this).readLine();
+ }
+
+ /**
+ * Slice a piece of ByteBuffer into a new ByteBufferInputStream
+ *
+ * @param size
+ */
+ public ByteBufferInputStream slice(int size) throws IOException {
+ try {
+ if (buf.remaining() < size)
+ throw new EOFException();
+
+ ByteBuffer bf2 = buf.slice();
+ bf2.limit(size);
+
+ skip(size);
+
+ return new ByteBufferInputStream(bf2);
+ } catch (BufferUnderflowException e) {
+ EOFException ioe = new EOFException();
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+}
Modified: branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/support/Serializer.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -19,7 +19,7 @@
package freenet.support;
-import java.io.DataInputStream;
+import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Iterator;
@@ -44,7 +44,7 @@
public static final String VERSION = "$Id: Serializer.java,v 1.5
2005/09/15 18:16:04 amphibian Exp $";
public static final int MAX_BITARRAY_SIZE = 2048*8;
- public static List readListFromDataInputStream(Class elementType,
DataInputStream dis) throws IOException {
+ public static List readListFromDataInputStream(Class elementType,
DataInput dis) throws IOException {
LinkedList ret = new LinkedList();
int length = dis.readInt();
for (int x = 0; x < length; x++) {
@@ -53,18 +53,16 @@
return ret;
}
- public static Object readFromDataInputStream(Class type,
DataInputStream dis) throws IOException {
+ public static Object readFromDataInputStream(Class type, DataInput dis)
throws IOException {
if (type.equals(Boolean.class)) {
- int bool=dis.read();
+ int bool = dis.readByte();
if (bool==1)
return Boolean.TRUE;
if (bool==0)
return Boolean.FALSE;
throw new IOException("Boolean is non boolean value:
"+bool);
} else if (type.equals(Byte.class)) {
- int b=dis.read();
- if (b<0)
- throw new IOException();
+ int b = dis.readByte();
return new Byte((byte)b);
} else if (type.equals(Short.class)) {
return new Short(dis.readShort());
Modified: branches/saltedhashstore/freenet/src/freenet/support/ShortBuffer.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/ShortBuffer.java
2008-05-23 17:10:28 UTC (rev 20078)
+++ branches/saltedhashstore/freenet/src/freenet/support/ShortBuffer.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -41,7 +41,7 @@
* @param dis
* @throws IOException
*/
- public ShortBuffer(DataInputStream dis) throws IOException {
+ public ShortBuffer(DataInput dis) throws IOException {
_data = new byte[dis.readShort()];
_length = (short)_data.length;
_start = 0;
Added:
branches/saltedhashstore/freenet/test/freenet/crypt/ciphers/RijndaelTest.java
===================================================================
---
branches/saltedhashstore/freenet/test/freenet/crypt/ciphers/RijndaelTest.java
(rev 0)
+++
branches/saltedhashstore/freenet/test/freenet/crypt/ciphers/RijndaelTest.java
2008-05-23 17:19:01 UTC (rev 20079)
@@ -0,0 +1,1088 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.crypt.ciphers;
+
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.crypto.Cipher;
+
+import freenet.crypt.UnsupportedCipherException;
+import freenet.support.HexUtil;
+import junit.framework.TestCase;
+
+/**
+ * @author sdiz
+ */
+public class RijndaelTest extends TestCase {
+ private final byte[] PLAINTXT128_1 =
HexUtil.hexToBytes("0123456789abcdef1123456789abcdef");
+ private final byte[] KEY128_1 =
HexUtil.hexToBytes("deadbeefcafebabe0123456789abcdef");
+ private final byte[] CIPHER128_1 =
HexUtil.hexToBytes("8c5b8c04805c0e07dd62b381730d5d10");
+
+ private final byte[] PLAINTXT192_1 =
HexUtil.hexToBytes("0123456789abcdef1123456789abcdef2123456789abcdef");
+ private final byte[] KEY192_1 =
HexUtil.hexToBytes("deadbeefcafebabe0123456789abcdefcafebabedeadbeef");
+ private final byte[] CIPHER192_1 =
HexUtil.hexToBytes("7fae974786a9741d96693654bc7a8aff09b3f116840ffced");
+
+ private final byte[] PLAINTXT256_1 = HexUtil
+
.hexToBytes("0123456789abcdef1123456789abcdef2123456789abcdef3123456789abcdef");
+ private final byte[] KEY256_1 = HexUtil
+
.hexToBytes("deadbeefcafebabe0123456789abcdefcafebabedeadbeefcafebabe01234567");
+ private final byte[] CIPHER256_1 = HexUtil
+
.hexToBytes("6fcbc68fc938e5f5a7c24d7422f4b5f153257b6fb53e0bca26770497dd65078c");
+
+ private static final Random rand = new Random();
+
+ public void testKnownValue() throws UnsupportedCipherException {
+ Rijndael aes128 = new Rijndael(128, 128);
+ byte[] res128 = new byte[128 / 8];
+ aes128.initialize(KEY128_1);
+ aes128.encipher(PLAINTXT128_1, res128);
+ assertTrue("(128,128) ENCIPHER", Arrays.equals(res128,
CIPHER128_1));
+ byte[] des128 = new byte[128 / 8];
+ aes128.decipher(res128, des128);
+ assertTrue("(128,128) DECIPHER", Arrays.equals(des128,
PLAINTXT128_1));
+
+ Rijndael aes192 = new Rijndael(192, 192);
+ byte[] res192 = new byte[192 / 8];
+ aes192.initialize(KEY192_1);
+ aes192.encipher(PLAINTXT192_1, res192);
+ assertTrue("(192,192) ENCIPHER", Arrays.equals(res192,
CIPHER192_1));
+ byte[] des192 = new byte[192 / 8];
+ aes192.decipher(res192, des192);
+ assertTrue("(192,192) DECIPHER", Arrays.equals(des192,
PLAINTXT192_1));
+
+ Rijndael aes256 = new Rijndael(256, 256);
+ byte[] res256 = new byte[256 / 8];
+ aes256.initialize(KEY256_1);
+ aes256.encipher(PLAINTXT256_1, res256);
+ assertTrue("(256,256) ENCIPHER", Arrays.equals(res256,
CIPHER256_1));
+ byte[] des256 = new byte[256 / 8];
+ aes256.decipher(res256, des256);
+ assertTrue("(256,256) DECIPHER", Arrays.equals(des256,
PLAINTXT256_1));
+ }
+
+ // Standard test vector, available at
http://csrc.nist.gov/archive/aes/rijndael/rijndael-vals.zip
+
+ // ecb_vk.txt
+ private byte[] TEST_VK_PT =
HexUtil.hexToBytes("00000000000000000000000000000000");
+ private final static byte[][][] TEST_VK128 = { //
+ /* I=1 */
+ {
HexUtil.hexToBytes("80000000000000000000000000000000"),
+
HexUtil.hexToBytes("0EDD33D3C621E546455BD8BA1418BEC8") }, //
+ /* I=2 */
+ {
HexUtil.hexToBytes("40000000000000000000000000000000"),
+
HexUtil.hexToBytes("C0CC0C5DA5BD63ACD44A80774FAD5222"), }, //
+ /* I=3 */
+ {
HexUtil.hexToBytes("20000000000000000000000000000000"),
+
HexUtil.hexToBytes("2F0B4B71BC77851B9CA56D42EB8FF080"), }, //
+ /* I=4 */
+ {
HexUtil.hexToBytes("10000000000000000000000000000000"),
+
HexUtil.hexToBytes("6B1E2FFFE8A114009D8FE22F6DB5F876"), }, //
+ /* I=5 */
+ {
HexUtil.hexToBytes("08000000000000000000000000000000"),
+
HexUtil.hexToBytes("9AA042C315F94CBB97B62202F83358F5"), }, //
+ /* I=6 */
+ {
HexUtil.hexToBytes("04000000000000000000000000000000"),
+
HexUtil.hexToBytes("DBE01DE67E346A800C4C4B4880311DE4"), }, //
+ /* I=7 */
+ {
HexUtil.hexToBytes("02000000000000000000000000000000"),
+
HexUtil.hexToBytes("C117D2238D53836ACD92DDCDB85D6A21"), }, //
+ /* I=8 */
+ {
HexUtil.hexToBytes("01000000000000000000000000000000"),
+
HexUtil.hexToBytes("DC0ED85DF9611ABB7249CDD168C5467E"), }, //
+ /* I=9 */
+ {
HexUtil.hexToBytes("00800000000000000000000000000000"),
+
HexUtil.hexToBytes("807D678FFF1F56FA92DE3381904842F2"), }, //
+ /* I=10 */
+ {
HexUtil.hexToBytes("00400000000000000000000000000000"),
+
HexUtil.hexToBytes("0E53B3FCAD8E4B130EF73AEB957FB402"), }, //
+ /* I=11 */
+ {
HexUtil.hexToBytes("00200000000000000000000000000000"),
+
HexUtil.hexToBytes("969FFD3B7C35439417E7BDE923035D65"), }, //
+ /* I=12 */
+ {
HexUtil.hexToBytes("00100000000000000000000000000000"),
+
HexUtil.hexToBytes("A99B512C19CA56070491166A1503BF15"), }, //
+ /* I=13 */
+ {
HexUtil.hexToBytes("00080000000000000000000000000000"),
+
HexUtil.hexToBytes("6E9985252126EE344D26AE369D2327E3"), }, //
+ /* I=14 */
+ {
HexUtil.hexToBytes("00040000000000000000000000000000"),
+
HexUtil.hexToBytes("B85F4809F904C275491FCDCD1610387E"), }, //
+ /* I=15 */
+ {
HexUtil.hexToBytes("00020000000000000000000000000000"),
+
HexUtil.hexToBytes("ED365B8D7D20C1F5D53FB94DD211DF7B"), }, //
+ /* I=16 */
+ {
HexUtil.hexToBytes("00010000000000000000000000000000"),
+
HexUtil.hexToBytes("B3A575E86A8DB4A7135D604C43304896"), }, //
+ /* I=17 */
+ {
HexUtil.hexToBytes("00008000000000000000000000000000"),
+
HexUtil.hexToBytes("89704BCB8E69F846259EB0ACCBC7F8A2"), }, //
+ /* I=18 */
+ {
HexUtil.hexToBytes("00004000000000000000000000000000"),
+
HexUtil.hexToBytes("C56EE7C92197861F10D7A92B90882055"), }, //
+ /* I=19 */
+ {
HexUtil.hexToBytes("00002000000000000000000000000000"),
+
HexUtil.hexToBytes("92F296F6846E0EAF9422A5A24A08B069"), }, //
+ /* I=20 */
+ {
HexUtil.hexToBytes("00001000000000000000000000000000"),
+
HexUtil.hexToBytes("E67E32BB8F11DEB8699318BEE9E91A60"), }, //
+ /* I=21 */
+ {
HexUtil.hexToBytes("00000800000000000000000000000000"),
+
HexUtil.hexToBytes("B08EEF85EAF626DD91B65C4C3A97D92B"), }, //
+ /* I=22 */
+ {
HexUtil.hexToBytes("00000400000000000000000000000000"),
+
HexUtil.hexToBytes("661083A6ADDCE79BB4E0859AB5538013"), }, //
+ /* I=23 */
+ {
HexUtil.hexToBytes("00000200000000000000000000000000"),
+
HexUtil.hexToBytes("55DFE2941E0EB10AFC0B333BD34DE1FE"), }, //
+ /* I=24 */
+ {
HexUtil.hexToBytes("00000100000000000000000000000000"),
+
HexUtil.hexToBytes("6BFE5945E715C9662609770F8846087A"), }, //
+ /* I=25 */
+ {
HexUtil.hexToBytes("00000080000000000000000000000000"),
+
HexUtil.hexToBytes("79848E9C30C2F8CDA8B325F7FED2B139"), }, //
+ /* I=26 */
+ {
HexUtil.hexToBytes("00000040000000000000000000000000"),
+
HexUtil.hexToBytes("7A713A53B99FEF34AC04DEEF80965BD0"), }, //
+ /* I=27 */
+ {
HexUtil.hexToBytes("00000020000000000000000000000000"),
+
HexUtil.hexToBytes("18144A2B46620D32C3C32CE52D49257F"), }, //
+ /* I=28 */
+ {
HexUtil.hexToBytes("00000010000000000000000000000000"),
+
HexUtil.hexToBytes("872E827C70887C80749F7B8BB1847C7E"), }, //
+ /* I=29 */
+ {
HexUtil.hexToBytes("00000008000000000000000000000000"),
+
HexUtil.hexToBytes("6B86C6A4FE6A60C59B1A3102F8DE49F3"), }, //
+ /* I=30 */
+ {
HexUtil.hexToBytes("00000004000000000000000000000000"),
+
HexUtil.hexToBytes("9848BB3DFDF6F532F094679A4C231A20"), }, //
+ /* I=31 */
+ {
HexUtil.hexToBytes("00000002000000000000000000000000"),
+
HexUtil.hexToBytes("925AD528E852E329B2091CD3F1C2BCEE"), }, //
+ /* I=32 */
+ {
HexUtil.hexToBytes("00000001000000000000000000000000"),
+
HexUtil.hexToBytes("80DF436544B0DD596722E46792A40CD8"), }, //
+ /* I=33 */
+ {
HexUtil.hexToBytes("00000000800000000000000000000000"),
+
HexUtil.hexToBytes("525DAF18F93E83E1E74BBBDDE4263BBA"), }, //
+ /* I=34 */
+ {
HexUtil.hexToBytes("00000000400000000000000000000000"),
+
HexUtil.hexToBytes("F65C9D2EE485D24701FFA3313B9D5BE6"), }, //
+ /* I=35 */
+ {
HexUtil.hexToBytes("00000000200000000000000000000000"),
+
HexUtil.hexToBytes("E4FC8D8BCA06425BDF94AFA40FCC14BA"), }, //
+ /* I=36 */
+ {
HexUtil.hexToBytes("00000000100000000000000000000000"),
+
HexUtil.hexToBytes("A53F0A5CA1E4E6440BB975FF320DE6F8"), }, //
+ /* I=37 */
+ {
HexUtil.hexToBytes("00000000080000000000000000000000"),
+
HexUtil.hexToBytes("D55313B9394080462E87E02899B553F0"), }, //
+ /* I=38 */
+ {
HexUtil.hexToBytes("00000000040000000000000000000000"),
+
HexUtil.hexToBytes("34A71D761F71BCD344384C7F97D27906"), }, //
+ /* I=39 */
+ {
HexUtil.hexToBytes("00000000020000000000000000000000"),
+
HexUtil.hexToBytes("233F3D819599612EBC89580245C996A8"), }, //
+ /* I=40 */
+ {
HexUtil.hexToBytes("00000000010000000000000000000000"),
+
HexUtil.hexToBytes("B4F1374E5268DBCB676E447529E53F89"), }, //
+ /* I=41 */
+ {
HexUtil.hexToBytes("00000000008000000000000000000000"),
+
HexUtil.hexToBytes("0816BD27861D2BA891D1044E39951E96"), }, //
+ /* I=42 */
+ {
HexUtil.hexToBytes("00000000004000000000000000000000"),
+
HexUtil.hexToBytes("F3BE9EA3F10C73CA64FDE5DB13A951D1"), }, //
+ /* I=43 */
+ {
HexUtil.hexToBytes("00000000002000000000000000000000"),
+
HexUtil.hexToBytes("2448086A8106FBD03048DDF857D3F1C8"), }, //
+ /* I=44 */
+ {
HexUtil.hexToBytes("00000000001000000000000000000000"),
+
HexUtil.hexToBytes("670756E65BEC8B68F03D77CDCDCE7B91"), }, //
+ /* I=45 */
+ {
HexUtil.hexToBytes("00000000000800000000000000000000"),
+
HexUtil.hexToBytes("EF968CF0D36FD6C6EFFD225F6FB44CA9"), }, //
+ /* I=46 */
+ {
HexUtil.hexToBytes("00000000000400000000000000000000"),
+
HexUtil.hexToBytes("2E8767157922E3826DDCEC1B0CC1E105"), }, //
+ /* I=47 */
+ {
HexUtil.hexToBytes("00000000000200000000000000000000"),
+
HexUtil.hexToBytes("78CE7EEC670E45A967BAB17E26A1AD36"), }, //
+ /* I=48 */
+ {
HexUtil.hexToBytes("00000000000100000000000000000000"),
+
HexUtil.hexToBytes("3C5CEE825655F098F6E81A2F417DA3FB"), }, //
+ /* I=49 */
+ {
HexUtil.hexToBytes("00000000000080000000000000000000"),
+
HexUtil.hexToBytes("67BFDB431DCE1292200BC6F5207ADB12"), }, //
+ /* I=50 */
+ {
HexUtil.hexToBytes("00000000000040000000000000000000"),
+
HexUtil.hexToBytes("7540FD38E447C0779228548747843A6F"), }, //
+ /* I=51 */
+ {
HexUtil.hexToBytes("00000000000020000000000000000000"),
+
HexUtil.hexToBytes("B85E513301F8A936EA9EC8A21A85B5E6"), }, //
+ /* I=52 */
+ {
HexUtil.hexToBytes("00000000000010000000000000000000"),
+
HexUtil.hexToBytes("04C67DBF16C11427D507A455DE2C9BC5"), }, //
+ /* I=53 */
+ {
HexUtil.hexToBytes("00000000000008000000000000000000"),
+
HexUtil.hexToBytes("03F75EB8959E55079CFFB4FF149A37B6"), }, //
+ /* I=54 */
+ {
HexUtil.hexToBytes("00000000000004000000000000000000"),
+
HexUtil.hexToBytes("74550287F666C63BB9BC7838433434B0"), }, //
+ /* I=55 */
+ {
HexUtil.hexToBytes("00000000000002000000000000000000"),
+
HexUtil.hexToBytes("7D537200195EBC3AEFD1EAAB1C385221"), }, //
+ /* I=56 */
+ {
HexUtil.hexToBytes("00000000000001000000000000000000"),
+
HexUtil.hexToBytes("CE24E4D40C68A82B535CBD3C8E21652A"), }, //
+ /* I=57 */
+ {
HexUtil.hexToBytes("00000000000000800000000000000000"),
+
HexUtil.hexToBytes("AB20072405AA8FC40265C6F1F3DC8BC0"), }, //
+ /* I=58 */
+ {
HexUtil.hexToBytes("00000000000000400000000000000000"),
+
HexUtil.hexToBytes("6CFD2CF688F566B093F67B9B3839E80A"), }, //
+ /* I=59 */
+ {
HexUtil.hexToBytes("00000000000000200000000000000000"),
+
HexUtil.hexToBytes("BD95977E6B7239D407A012C5544BF584"), }, //
+ /* I=60 */
+ {
HexUtil.hexToBytes("00000000000000100000000000000000"),
+
HexUtil.hexToBytes("DF9C0130AC77E7C72C997F587B46DBE0"), }, //
+ /* I=61 */
+ {
HexUtil.hexToBytes("00000000000000080000000000000000"),
+
HexUtil.hexToBytes("E7F1B82CADC53A648798945B34EFEFF2"), }, //
+ /* I=62 */
+ {
HexUtil.hexToBytes("00000000000000040000000000000000"),
+
HexUtil.hexToBytes("932C6DBF69255CF13EDCDB72233ACEA3"), }, //
+ /* I=63 */
+ {
HexUtil.hexToBytes("00000000000000020000000000000000"),
+
HexUtil.hexToBytes("5C76002BC7206560EFE550C80B8F12CC"), }, //
+ /* I=64 */
+ {
HexUtil.hexToBytes("00000000000000010000000000000000"),
+
HexUtil.hexToBytes("F6B7BDD1CAEEBAB574683893C4475484"), }, //
+ /* I=65 */
+ {
HexUtil.hexToBytes("00000000000000008000000000000000"),
+
HexUtil.hexToBytes("A920E37CC6DC6B31DA8C0169569F5034"), }, //
+ /* I=66 */
+ {
HexUtil.hexToBytes("00000000000000004000000000000000"),
+
HexUtil.hexToBytes("919380ECD9C778BC513148B0C28D65FD"), }, //
+ /* I=67 */
+ {
HexUtil.hexToBytes("00000000000000002000000000000000"),
+
HexUtil.hexToBytes("EE67308DD3F2D9E6C2170755E5784BE1"), }, //
+ /* I=68 */
+ {
HexUtil.hexToBytes("00000000000000001000000000000000"),
+
HexUtil.hexToBytes("3CC73E53B85609023A05E149B223AE09"), }, //
+ /* I=69 */
+ {
HexUtil.hexToBytes("00000000000000000800000000000000"),
+
HexUtil.hexToBytes("983E8AF7CF05EBB28D71EB841C9406E6"), }, //
+ /* I=70 */
+ {
HexUtil.hexToBytes("00000000000000000400000000000000"),
+
HexUtil.hexToBytes("0F3099B2D31FA5299EE5BF43193287FC"), }, //
+ /* I=71 */
+ {
HexUtil.hexToBytes("00000000000000000200000000000000"),
+
HexUtil.hexToBytes("B763D84F38C27FE6931DCEB6715D4DB6"), }, //
+ /* I=72 */
+ {
HexUtil.hexToBytes("00000000000000000100000000000000"),
+
HexUtil.hexToBytes("5AE3C9B0E3CC29C0C61565CD01F8A248"), }, //
+ /* I=73 */
+ {
HexUtil.hexToBytes("00000000000000000080000000000000"),
+
HexUtil.hexToBytes("F58083572CD90981958565D48D2DEE25"), }, //
+ /* I=74 */
+ {
HexUtil.hexToBytes("00000000000000000040000000000000"),
+
HexUtil.hexToBytes("7E6255EEF8F70C0EF10337AAB1CCCEF8"), }, //
+ /* I=75 */
+ {
HexUtil.hexToBytes("00000000000000000020000000000000"),
+
HexUtil.hexToBytes("AAD4BAC34DB22821841CE2F631961902"), }, //
+ /* I=76 */
+ {
HexUtil.hexToBytes("00000000000000000010000000000000"),
+
HexUtil.hexToBytes("D7431C0409BB1441BA9C6858DC7D4E81"), }, //
+ /* I=77 */
+ {
HexUtil.hexToBytes("00000000000000000008000000000000"),
+
HexUtil.hexToBytes("EF9298C65E339F6E801A59C626456993"), }, //
+ /* I=78 */
+ {
HexUtil.hexToBytes("00000000000000000004000000000000"),
+
HexUtil.hexToBytes("53FE29F68FF541ABC3F0EF3350B72F7E"), }, //
+ /* I=79 */
+ {
HexUtil.hexToBytes("00000000000000000002000000000000"),
+
HexUtil.hexToBytes("F6BBA5C10DB02529E2C2DA3FB582CC14"), }, //
+ /* I=80 */
+ {
HexUtil.hexToBytes("00000000000000000001000000000000"),
+
HexUtil.hexToBytes("E4239AA37FC531A386DAD1126FC0E9CD"), }, //
+ /* I=81 */
+ {
HexUtil.hexToBytes("00000000000000000000800000000000"),
+
HexUtil.hexToBytes("8F7758F857D15BBE7BFD0E416404C365"), }, //
+ /* I=82 */
+ {
HexUtil.hexToBytes("00000000000000000000400000000000"),
+
HexUtil.hexToBytes("D273EB57C687BCD1B4EA7218A509E7B8"), }, //
+ /* I=83 */
+ {
HexUtil.hexToBytes("00000000000000000000200000000000"),
+
HexUtil.hexToBytes("65D64F8D76E8B3423FA25C4EB58A210A"), }, //
+ /* I=84 */
+ {
HexUtil.hexToBytes("00000000000000000000100000000000"),
+
HexUtil.hexToBytes("623D802B4EC450D66A16625702FCDBE0"), }, //
+ /* I=85 */
+ {
HexUtil.hexToBytes("00000000000000000000080000000000"),
+
HexUtil.hexToBytes("7496460CB28E5791BAEAF9B68FB00022"), }, //
+ /* I=86 */
+ {
HexUtil.hexToBytes("00000000000000000000040000000000"),
+
HexUtil.hexToBytes("34EA600F18BB0694B41681A49D510C1D"), }, //
+ /* I=87 */
+ {
HexUtil.hexToBytes("00000000000000000000020000000000"),
+
HexUtil.hexToBytes("5F8FF0D47D5766D29B5D6E8F46423BD8"), }, //
+ /* I=88 */
+ {
HexUtil.hexToBytes("00000000000000000000010000000000"),
+
HexUtil.hexToBytes("225F9286C5928BF09F84D3F93F541959"), }, //
+ /* I=89 */
+ {
HexUtil.hexToBytes("00000000000000000000008000000000"),
+
HexUtil.hexToBytes("B21E90D25DF383416A5F072CEBEB1FFB"), }, //
+ /* I=90 */
+ {
HexUtil.hexToBytes("00000000000000000000004000000000"),
+
HexUtil.hexToBytes("4AEFCDA089318125453EB9E8EB5E492E"), }, //
+ /* I=91 */
+ {
HexUtil.hexToBytes("00000000000000000000002000000000"),
+
HexUtil.hexToBytes("4D3E75C6CD40EC4869BC85158591ADB8"), }, //
+ /* I=92 */
+ {
HexUtil.hexToBytes("00000000000000000000001000000000"),
+
HexUtil.hexToBytes("63A8B904405436A1B99D7751866771B7"), }, //
+ /* I=93 */
+ {
HexUtil.hexToBytes("00000000000000000000000800000000"),
+
HexUtil.hexToBytes("64F0DAAE47529199792EAE172BA53293"), }, //
+ /* I=94 */
+ {
HexUtil.hexToBytes("00000000000000000000000400000000"),
+
HexUtil.hexToBytes("C3EEF84BEA18225D515A8C852A9047EE"), }, //
+ /* I=95 */
+ {
HexUtil.hexToBytes("00000000000000000000000200000000"),
+
HexUtil.hexToBytes("A44AC422B47D47B81AF73B3E9AC9596E"), }, //
+ /* I=96 */
+ {
HexUtil.hexToBytes("00000000000000000000000100000000"),
+
HexUtil.hexToBytes("D16E04A8FBC435094F8D53ADF25F5084"), }, //
+ /* I=97 */
+ {
HexUtil.hexToBytes("00000000000000000000000080000000"),
+
HexUtil.hexToBytes("EF13DC34BAB03E124EEAD8B6BF44B532"), }, //
+ /* I=98 */
+ {
HexUtil.hexToBytes("00000000000000000000000040000000"),
+
HexUtil.hexToBytes("D94799075C24DCC067AF0D392049250D"), }, //
+ /* I=99 */
+ {
HexUtil.hexToBytes("00000000000000000000000020000000"),
+
HexUtil.hexToBytes("14F431771EDDCE4764C21A2254B5E3C8"), }, //
+ /* I=100 */
+ {
HexUtil.hexToBytes("00000000000000000000000010000000"),
+
HexUtil.hexToBytes("7039329F36F2ED682B02991F28D64679"), }, //
+ /* I=101 */
+ {
HexUtil.hexToBytes("00000000000000000000000008000000"),
+
HexUtil.hexToBytes("124EE24EDE5551639DB8B8B941F6141D"), }, //
+ /* I=102 */
+ {
HexUtil.hexToBytes("00000000000000000000000004000000"),
+
HexUtil.hexToBytes("C2852879A34D5184E478EC918B993FEE"), }, //
+ /* I=103 */
+ {
HexUtil.hexToBytes("00000000000000000000000002000000"),
+
HexUtil.hexToBytes("86A806A3525B93E432053C9AB5ABBEDF"), }, //
+ /* I=104 */
+ {
HexUtil.hexToBytes("00000000000000000000000001000000"),
+
HexUtil.hexToBytes("C1609BF5A4F07E37C17A36366EC23ECC"), }, //
+ /* I=105 */
+ {
HexUtil.hexToBytes("00000000000000000000000000800000"),
+
HexUtil.hexToBytes("7E81E7CB92159A51FFCEA331B1E8EA53"), }, //
+ /* I=106 */
+ {
HexUtil.hexToBytes("00000000000000000000000000400000"),
+
HexUtil.hexToBytes("37A7BE002856C5A59A6E03EAFCE7729A"), }, //
+ /* I=107 */
+ {
HexUtil.hexToBytes("00000000000000000000000000200000"),
+
HexUtil.hexToBytes("BDF98A5A4F91E890C9A1D1E5FAAB138F"), }, //
+ /* I=108 */
+ {
HexUtil.hexToBytes("00000000000000000000000000100000"),
+
HexUtil.hexToBytes("4E96ACB66E051F2BC739CC3D3E34A26B"), }, //
+ /* I=109 */
+ {
HexUtil.hexToBytes("00000000000000000000000000080000"),
+
HexUtil.hexToBytes("EE996CDD120EB86E21ECFA49E8E1FCF1"), }, //
+ /* I=110 */
+ {
HexUtil.hexToBytes("00000000000000000000000000040000"),
+
HexUtil.hexToBytes("61B9E6B579DBF6070C351A1440DD85FF"), }, //
+ /* I=111 */
+ {
HexUtil.hexToBytes("00000000000000000000000000020000"),
+
HexUtil.hexToBytes("AC369E484316440B40DFC83AA96E28E7"), }, //
+ /* I=112 */
+ {
HexUtil.hexToBytes("00000000000000000000000000010000"),
+
HexUtil.hexToBytes("0A2D16DE985C76D45C579C1159413BBE"), }, //
+ /* I=113 */
+ {
HexUtil.hexToBytes("00000000000000000000000000008000"),
+
HexUtil.hexToBytes("DA3FDC38DA1D374FA4802CDA1A1C6B0F"), }, //
+ /* I=114 */
+ {
HexUtil.hexToBytes("00000000000000000000000000004000"),
+
HexUtil.hexToBytes("B842523D4C41C2211AFE43A5800ADCE3"), }, //
+ /* I=115 */
+ {
HexUtil.hexToBytes("00000000000000000000000000002000"),
+
HexUtil.hexToBytes("9E2CDA90D8E992DBA6C73D8229567192"), }, //
+ /* I=116 */
+ {
HexUtil.hexToBytes("00000000000000000000000000001000"),
+
HexUtil.hexToBytes("D49583B781D9E20F5BE101415957FC49"), }, //
+ /* I=117 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000800"),
+
HexUtil.hexToBytes("EF09DA5C12B376E458B9B8670032498E"), }, //
+ /* I=118 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000400"),
+
HexUtil.hexToBytes("A96BE0463DA774461A5E1D5A9DD1AC10"), }, //
+ /* I=119 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000200"),
+
HexUtil.hexToBytes("32CEE3341060790D2D4B1362EF397090"), }, //
+ /* I=120 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000100"),
+
HexUtil.hexToBytes("21CEA416A3D3359D2C4D58FB6A035F06"), }, //
+ /* I=121 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000080"),
+
HexUtil.hexToBytes("172AEAB3D507678ECAF455C12587ADB7"), }, //
+ /* I=122 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000040"),
+
HexUtil.hexToBytes("B6F897941EF8EBFF9FE80A567EF38478"), }, //
+ /* I=123 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000020"),
+
HexUtil.hexToBytes("A9723259D94A7DC662FB0C782CA3F1DD"), }, //
+ /* I=124 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000010"),
+
HexUtil.hexToBytes("2F91C984B9A4839F30001B9F430493B4"), }, //
+ /* I=125 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000008"),
+
HexUtil.hexToBytes("0472406345A610B048CB99EE0EF3FA0F"), }, //
+ /* I=126 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000004"),
+
HexUtil.hexToBytes("F5F39086646F8C05ED16EFA4B617957C"), }, //
+ /* I=127 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000002"),
+
HexUtil.hexToBytes("26D50F485A30408D5AF47A5736292450"), }, //
+ /* I=128 */
+ {
HexUtil.hexToBytes("00000000000000000000000000000001"),
+
HexUtil.hexToBytes("0545AAD56DA2A97C3663D1432A3D1C84") }
+ };
+
+ private final static byte[][][] TEST_VK192 = { //
+ /* I=1 */
+ {
HexUtil.hexToBytes("800000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("DE885DC87F5A92594082D02CC1E1B42C") }, //
+ /* I=2 */
+ {
HexUtil.hexToBytes("400000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C749194F94673F9DD2AA1932849630C1") }, //
+ /* I=3 */
+ {
HexUtil.hexToBytes("200000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("0CEF643313912934D310297B90F56ECC") }, //
+ /* I=4 */
+ {
HexUtil.hexToBytes("100000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C4495D39D4A553B225FBA02A7B1B87E1") }, //
+ /* I=5 */
+ {
HexUtil.hexToBytes("080000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("636D10B1A0BCAB541D680A7970ADC830") }, //
+ /* I=6 */
+ {
HexUtil.hexToBytes("040000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("07CF045786BD6AFCC147D99E45A901A7") }, //
+ /* I=7 */
+ {
HexUtil.hexToBytes("020000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("6A8E3F425A7599348F95398448827976") }, //
+ /* I=8 */
+ {
HexUtil.hexToBytes("010000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("5518276836148A00D91089A20D8BFF57") }, //
+ /* I=9 */
+ {
HexUtil.hexToBytes("008000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("F267E07B5E87E3BC20B969C61D4FCB06") }, //
+ /* I=10 */
+ {
HexUtil.hexToBytes("004000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("5A1CDE69571D401BFCD20DEBADA2212C") }, //
+ /* I=11 */
+ {
HexUtil.hexToBytes("002000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("70A9057263254701D12ADD7D74CD509E") }, //
+ /* I=12 */
+ {
HexUtil.hexToBytes("001000000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("35713A7E108031279388A33A0FE2E190") }, //
+ /* I=13 */
+ {
HexUtil.hexToBytes("000800000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("E74EDE82B1254714F0C7B4B243108655") }, //
+ /* I=14 */
+ {
HexUtil.hexToBytes("000400000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("39272E3100FAA37B55B862320D1B3EB3") }, //
+ /* I=15 */
+ {
HexUtil.hexToBytes("000200000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("6D6E24C659FC5AEF712F77BCA19C9DD0") }, //
+ /* I=16 */
+ {
HexUtil.hexToBytes("000100000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("76D18212F972370D3CC2C6C372C6CF2F") }, //
+ /* I=17 */
+ {
HexUtil.hexToBytes("000080000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("B21A1F0BAE39E55C7594ED570A7783EA") }, //
+ /* I=18 */
+ {
HexUtil.hexToBytes("000040000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("77DE202111895AC48DD1C974B358B458") }, //
+ /* I=19 */
+ {
HexUtil.hexToBytes("000020000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("67810B311969012AAF7B504FFAF39FD1") }, //
+ /* I=20 */
+ {
HexUtil.hexToBytes("000010000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C22EA2344D3E9417A6BA07843E713AEA") }, //
+ /* I=21 */
+ {
HexUtil.hexToBytes("000008000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C79CAF4B97BEE0BD0630AB354539D653") }, //
+ /* I=22 */
+ {
HexUtil.hexToBytes("000004000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("135FD1AF761D9AE23DF4AA6B86760DB4") }, //
+ /* I=23 */
+ {
HexUtil.hexToBytes("000002000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("D4659D0B06ACD4D56AB8D11A16FD83B9") }, //
+ /* I=24 */
+ {
HexUtil.hexToBytes("000001000000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("F7D270028FC188E4E4F35A4AAA25D4D4") }, //
+ /* I=25 */
+ {
HexUtil.hexToBytes("000000800000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("345CAE5A8C9620A9913D5473985852FF") }, //
+ /* I=26 */
+ {
HexUtil.hexToBytes("000000400000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("4E8980ADDE60B0E42C0B287FEA41E729") }, //
+ /* I=27 */
+ {
HexUtil.hexToBytes("000000200000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("F11B6D74E1F15155633DC39743C1A527") }, //
+ /* I=28 */
+ {
HexUtil.hexToBytes("000000100000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("9C87916C0180064F9D3179C6F5DD8C35") }, //
+ /* I=29 */
+ {
HexUtil.hexToBytes("000000080000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("71AB186BCAEA518E461D4F7FAD230E6A") }, //
+ /* I=30 */
+ {
HexUtil.hexToBytes("000000040000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C4A31BBC3DAAF742F9141C2A5001A49C") }, //
+ /* I=31 */
+ {
HexUtil.hexToBytes("000000020000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("E7C47B7B1D40F182A8928C8A55671D07") }, //
+ /* I=32 */
+ {
HexUtil.hexToBytes("000000010000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("8E17F294B28FA373C6249538868A7EEF") }, //
+ /* I=33 */
+ {
HexUtil.hexToBytes("000000008000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("754404096A5CBC08AF09491BE249141A") }, //
+ /* I=34 */
+ {
HexUtil.hexToBytes("000000004000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("101CB56E55F05D86369B6D1069204F0A") }, //
+ /* I=35 */
+ {
HexUtil.hexToBytes("000000002000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("73F19BB6604205C6EE227B9759791E41") }, //
+ /* I=36 */
+ {
HexUtil.hexToBytes("000000001000000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("6270C0028F0D136C37A56B2CB64D24D6") }, //
+ /* I=37 */
+ {
HexUtil.hexToBytes("000000000800000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("A3BF7C2C38D1114A087ECF212E694346") }, //
+ /* I=38 */
+ {
HexUtil.hexToBytes("000000000400000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("49CABFF2CEF7D9F95F5EFB1F7A1A7DDE") }, //
+ /* I=39 */
+ {
HexUtil.hexToBytes("000000000200000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("EC7F8A47CC59B849469255AD49F62752") }, //
+ /* I=40 */
+ {
HexUtil.hexToBytes("000000000100000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("68FAE55A13EFAF9B07B3552A8A0DC9D1") }, //
+ /* I=41 */
+ {
HexUtil.hexToBytes("000000000080000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("211E6B19C69FAEF481F64F24099CDA65") }, //
+ /* I=42 */
+ {
HexUtil.hexToBytes("000000000040000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("DBB918C75BC5732416F79FB0C8EE4C5C") }, //
+ /* I=43 */
+ {
HexUtil.hexToBytes("000000000020000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("98D494E5D963A6C8B92536D3EC35E3FD") }, //
+ /* I=44 */
+ {
HexUtil.hexToBytes("000000000010000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C9A873404D403D6F074190851D67781A") }, //
+ /* I=45 */
+ {
HexUtil.hexToBytes("000000000008000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("073AEF4A7C77D921928CB0DD9D27CAE7") }, //
+ /* I=46 */
+ {
HexUtil.hexToBytes("000000000004000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("89BDE25CEE36FDE769A10E52298CF90F") }, //
+ /* I=47 */
+ {
HexUtil.hexToBytes("000000000002000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("26D0842D37EAD38557C65E0A5E5F122E") }, //
+ /* I=48 */
+ {
HexUtil.hexToBytes("000000000001000000000000000000000000000000000000"),
+
HexUtil.hexToBytes("F8294BA375AF46B3F22905BBAFFAB107") }, //
+ /* I=49 */
+ {
HexUtil.hexToBytes("000000000000800000000000000000000000000000000000"),
+
HexUtil.hexToBytes("2AD63EB4D0D43813B979CF72B35BDB94") }, //
+ /* I=50 */
+ {
HexUtil.hexToBytes("000000000000400000000000000000000000000000000000"),
+
HexUtil.hexToBytes("7710C171EE0F4EFA39BE4C995180181D") }, //
+ /* I=51 */
+ {
HexUtil.hexToBytes("000000000000200000000000000000000000000000000000"),
+
HexUtil.hexToBytes("C0CB2B40DBA7BE8C0698FAE1E4B80FF8") }, //
+ /* I=52 */
+ {
HexUtil.hexToBytes("000000000000100000000000000000000000000000000000"),
+
HexUtil.hexToBytes("97970E505194622FD955CA1B80B784E9") }, //
+ /* I=53 */
+ {
HexUtil.hexToBytes("000000000000080000000000000000000000000000000000"),
+
HexUtil.hexToBytes("7CB1824B29F850900DF2CAD9CF04C1CF") }, //
+ /* I=54 */
+ {
HexUtil.hexToBytes("000000000000040000000000000000000000000000000000"),
+
HexUtil.hexToBytes("FDF4F036BB988E42F2F62DE63FE19A64") }, //
+ /* I=55 */
+ {
HexUtil.hexToBytes("000000000000020000000000000000000000000000000000"),
+
HexUtil.hexToBytes("08908CFE2C82606B2C15DF61B75CF3E2") }, //
+ /* I=56 */
+ {
HexUtil.hexToBytes("000000000000010000000000000000000000000000000000"),
+
HexUtil.hexToBytes("B3AA689EF2D07FF365ACB9ADBA2AF07A") }, //
+ /* I=57 */
+ {
HexUtil.hexToBytes("000000000000008000000000000000000000000000000000"),
+
HexUtil.hexToBytes("F2672CD8EAA3B98776660D0263656F5C") }, //
+ /* I=58 */
+ {
HexUtil.hexToBytes("000000000000004000000000000000000000000000000000"),
+
HexUtil.hexToBytes("5BDEAC00E986687B9E1D94A0DA7BF452") }, //
+ /* I=59 */
+ {
HexUtil.hexToBytes("000000000000002000000000000000000000000000000000"),
+
HexUtil.hexToBytes("E6D57BD66EA1627363EE0C4B711B0B21") }, //
+ /* I=60 */
+ {
HexUtil.hexToBytes("000000000000001000000000000000000000000000000000"),
+
HexUtil.hexToBytes("03730DD6ACB4AD9996A63BE7765EC06F") }, //
+ /* I=61 */
+ {
HexUtil.hexToBytes("000000000000000800000000000000000000000000000000"),
+
HexUtil.hexToBytes("A470E361AA5437B2BE8586D2F78DE582") }, //
+ /* I=62 */
+ {
HexUtil.hexToBytes("000000000000000400000000000000000000000000000000"),
+
HexUtil.hexToBytes("7567FEEFA559911FD479670246B484E3") }, //
+ /* I=63 */
+ {
HexUtil.hexToBytes("000000000000000200000000000000000000000000000000"),
+
HexUtil.hexToBytes("29829DEA15A4E7A4C049045E7B106E29") }, //
+ /* I=64 */
+ {
HexUtil.hexToBytes("000000000000000100000000000000000000000000000000"),
+
HexUtil.hexToBytes("A407834C3D89D48A2CB7A152208FA4ED") }, //
+ /* I=65 */
+ {
HexUtil.hexToBytes("000000000000000080000000000000000000000000000000"),
+
HexUtil.hexToBytes("68F948053F78FEF0D8F9FE7EF3A89819") }, //
+ /* I=66 */
+ {
HexUtil.hexToBytes("000000000000000040000000000000000000000000000000"),
+
HexUtil.hexToBytes("B605174CAB13AD8FE3B20DA3AE7B0234") }, //
+ /* I=67 */
+ {
HexUtil.hexToBytes("000000000000000020000000000000000000000000000000"),
+
HexUtil.hexToBytes("CCAB8F0AEBFF032893996D383CBFDBFA") }, //
+ /* I=68 */
+ {
HexUtil.hexToBytes("000000000000000010000000000000000000000000000000"),
+
HexUtil.hexToBytes("AF14BB8428C9730B7DC17B6C1CBEBCC8") }, //
+ /* I=69 */
+ {
HexUtil.hexToBytes("000000000000000008000000000000000000000000000000"),
+
HexUtil.hexToBytes("5A41A21332040877EB7B89E8E80D19FE") }, //
+ /* I=70 */
+ {
HexUtil.hexToBytes("000000000000000004000000000000000000000000000000"),
+
HexUtil.hexToBytes("AC1BA52EFCDDE368B1596F2F0AD893A0") }, //
+ /* I=71 */
+ {
HexUtil.hexToBytes("000000000000000002000000000000000000000000000000"),
+
HexUtil.hexToBytes("41B890E31B9045E6ECDC1BC3F2DB9BCC") }, //
+ /* I=72 */
+ {
HexUtil.hexToBytes("000000000000000001000000000000000000000000000000"),
+
HexUtil.hexToBytes("4D54A549728E55B19A23660424A0F146") }, //
+ /* I=73 */
+ {
HexUtil.hexToBytes("000000000000000000800000000000000000000000000000"),
+
HexUtil.hexToBytes("A917581F41C47C7DDCFFD5285E2D6A61") }, //
+ /* I=74 */
+ {
HexUtil.hexToBytes("000000000000000000400000000000000000000000000000"),
+
HexUtil.hexToBytes("604DF24BA6099B93A7405A524D764FCB") }, //
+ /* I=75 */
+ {
HexUtil.hexToBytes("000000000000000000200000000000000000000000000000"),
+
HexUtil.hexToBytes("78D9D156F28B190E232D1B7AE7FC730A") }, //
+ /* I=76 */
+ {
HexUtil.hexToBytes("000000000000000000100000000000000000000000000000"),
+
HexUtil.hexToBytes("5A12C39E442CD7F27B3CD77F5D029582") }, //
+ /* I=77 */
+ {
HexUtil.hexToBytes("000000000000000000080000000000000000000000000000"),
+
HexUtil.hexToBytes("FF2BF2F47CF7B0F28EE25AF95DBF790D") }, //
+ /* I=78 */
+ {
HexUtil.hexToBytes("000000000000000000040000000000000000000000000000"),
+
HexUtil.hexToBytes("1863BB7D193BDA39DF090659EB8AE48B") }, //
+ /* I=79 */
+ {
HexUtil.hexToBytes("000000000000000000020000000000000000000000000000"),
+
HexUtil.hexToBytes("38178F2FB4CFCF31E87E1ABCDC023EB5") }, //
+ /* I=80 */
+ {
HexUtil.hexToBytes("000000000000000000010000000000000000000000000000"),
+
HexUtil.hexToBytes("F5B13DC690CC0D541C6BA533023DC8C9") }, //
+ /* I=81 */
+ {
HexUtil.hexToBytes("000000000000000000008000000000000000000000000000"),
+
HexUtil.hexToBytes("48EC05238D7375D126DC9D08884D4827") }, //
+ /* I=82 */
+ {
HexUtil.hexToBytes("000000000000000000004000000000000000000000000000"),
+
HexUtil.hexToBytes("ACD0D81139691B310B92A6E377BACC87") }, //
+ /* I=83 */
+ {
HexUtil.hexToBytes("000000000000000000002000000000000000000000000000"),
+
HexUtil.hexToBytes("9A4AA43578B55CE9CC178F0D2E162C79") }, //
+ /* I=84 */
+ {
HexUtil.hexToBytes("000000000000000000001000000000000000000000000000"),
+
HexUtil.hexToBytes("08AD94BC737DB3C87D49B9E01B720D81") }, //
+ /* I=85 */
+ {
HexUtil.hexToBytes("000000000000000000000800000000000000000000000000"),
+
HexUtil.hexToBytes("3BCFB2D5D210E8332900C5991D551A2A") }, //
+ /* I=86 */
+ {
HexUtil.hexToBytes("000000000000000000000400000000000000000000000000"),
+
HexUtil.hexToBytes("C5F0C6B9397ACB29635CE1A0DA2D8D96") }, //
+ /* I=87 */
+ {
HexUtil.hexToBytes("000000000000000000000200000000000000000000000000"),
+
HexUtil.hexToBytes("844A29EFC693E2FA9900F87FBF5DCD5F") }, //
+ /* I=88 */
+ {
HexUtil.hexToBytes("000000000000000000000100000000000000000000000000"),
+
HexUtil.hexToBytes("5126A1C41051FEA158BE41200E1EA59D") }, //
+ /* I=89 */
+ {
HexUtil.hexToBytes("000000000000000000000080000000000000000000000000"),
+
HexUtil.hexToBytes("302123CA7B4F46D667FFFB0EB6AA7703") }, //
+ /* I=90 */
+ {
HexUtil.hexToBytes("000000000000000000000040000000000000000000000000"),
+
HexUtil.hexToBytes("A9D16BCE7DB5C024277709EE2A88D91A") }, //
+ /* I=91 */
+ {
HexUtil.hexToBytes("000000000000000000000020000000000000000000000000"),
+
HexUtil.hexToBytes("F013C5EC123A26CFC34B598C992A996B") }, //
+ /* I=92 */
+ {
HexUtil.hexToBytes("000000000000000000000010000000000000000000000000"),
+
HexUtil.hexToBytes("E38A825CD971A1D2E56FB1DBA248F2A8") }, //
+ /* I=93 */
+ {
HexUtil.hexToBytes("000000000000000000000008000000000000000000000000"),
+
HexUtil.hexToBytes("6E701773C0311E0BD4C5A097406D22B3") }, //
+ /* I=94 */
+ {
HexUtil.hexToBytes("000000000000000000000004000000000000000000000000"),
+
HexUtil.hexToBytes("754262CEF0C64BE4C3E67C35ABE439F7") }, //
+ /* I=95 */
+ {
HexUtil.hexToBytes("000000000000000000000002000000000000000000000000"),
+
HexUtil.hexToBytes("C9C2D4C47DF7D55CFA0EE5F1FE5070F4") }, //
+ /* I=96 */
+ {
HexUtil.hexToBytes("000000000000000000000001000000000000000000000000"),
+
HexUtil.hexToBytes("6AB4BEA85B172573D8BD2D5F4329F13D") }, //
+ /* I=97 */
+ {
HexUtil.hexToBytes("000000000000000000000000800000000000000000000000"),
+
HexUtil.hexToBytes("11F03EF28E2CC9AE5165C587F7396C8C") }, //
+ /* I=98 */
+ {
HexUtil.hexToBytes("000000000000000000000000400000000000000000000000"),
+
HexUtil.hexToBytes("0682F2EB1A68BAC7949922C630DD27FA") }, //
+ /* I=99 */
+ {
HexUtil.hexToBytes("000000000000000000000000200000000000000000000000"),
+
HexUtil.hexToBytes("ABB0FEC0413D659AFE8E3DCF6BA873BB") }, //
+ /* I=100 */
+ {
HexUtil.hexToBytes("000000000000000000000000100000000000000000000000"),
+
HexUtil.hexToBytes("FE86A32E19F805D6569B2EFADD9C92AA") }, //
+ /* I=101 */
+ {
HexUtil.hexToBytes("000000000000000000000000080000000000000000000000"),
+
HexUtil.hexToBytes("E434E472275D1837D3D717F2EECC88C3") }, //
+ /* I=102 */
+ {
HexUtil.hexToBytes("000000000000000000000000040000000000000000000000"),
+
HexUtil.hexToBytes("74E57DCD12A21D26EF8ADAFA5E60469A") }, //
+ /* I=103 */
+ {
HexUtil.hexToBytes("000000000000000000000000020000000000000000000000"),
+
HexUtil.hexToBytes("C275429D6DAD45DDD423FA63C816A9C1") }, //
+ /* I=104 */
+ {
HexUtil.hexToBytes("000000000000000000000000010000000000000000000000"),
+
HexUtil.hexToBytes("7F6EC1A9AE729E86F7744AED4B8F4F07") }, //
+ /* I=105 */
+ {
HexUtil.hexToBytes("000000000000000000000000008000000000000000000000"),
+
HexUtil.hexToBytes("48B5A71AB9292BD4F9E608EF102636B2") }, //
+ /* I=106 */
+ {
HexUtil.hexToBytes("000000000000000000000000004000000000000000000000"),
+
HexUtil.hexToBytes("076FB95D5F536C78CBED3181BCCF3CF1") }, //
+ /* I=107 */
+ {
HexUtil.hexToBytes("000000000000000000000000002000000000000000000000"),
+
HexUtil.hexToBytes("BFA76BEA1E684FD3BF9256119EE0BC0F") }, //
+ /* I=108 */
+ {
HexUtil.hexToBytes("000000000000000000000000001000000000000000000000"),
+
HexUtil.hexToBytes("7D395923D56577F3FF8670998F8C4A71") }, //
+ /* I=109 */
+ {
HexUtil.hexToBytes("000000000000000000000000000800000000000000000000"),
+
HexUtil.hexToBytes("BA02C986E529AC18A882C34BA389625F") }, //
+ /* I=110 */
+ {
HexUtil.hexToBytes("000000000000000000000000000400000000000000000000"),
+
HexUtil.hexToBytes("3DFCF2D882AFE75D3A191193013A84B5") }, //
+ /* I=111 */
+ {
HexUtil.hexToBytes("000000000000000000000000000200000000000000000000"),
+
HexUtil.hexToBytes("FAD1FDE1D0241784B63080D2C74D236C") }, //
+ /* I=112 */
+ {
HexUtil.hexToBytes("000000000000000000000000000100000000000000000000"),
+
HexUtil.hexToBytes("7D6C80D39E41F007A14FB9CD2B2C15CD") }, //
+ /* I=113 */
+ {
HexUtil.hexToBytes("000000000000000000000000000080000000000000000000"),
+
HexUtil.hexToBytes("7975F401FC10637BB33EA2DB058FF6EC") }, //
+ /* I=114 */
+ {
HexUtil.hexToBytes("000000000000000000000000000040000000000000000000"),
+
HexUtil.hexToBytes("657983865C55A818F02B7FCD52ED7E99") }, //
+ /* I=115 */
+ {
HexUtil.hexToBytes("000000000000000000000000000020000000000000000000"),
+
HexUtil.hexToBytes("B32BEB1776F9827FF4C3AC9997E84B20") }, //
+ /* I=116 */
+ {
HexUtil.hexToBytes("000000000000000000000000000010000000000000000000"),
+
HexUtil.hexToBytes("2AE2C7C374F0A41E3D46DBC3E66BB59F") }, //
+ /* I=117 */
+ {
HexUtil.hexToBytes("000000000000000000000000000008000000000000000000"),
+
HexUtil.hexToBytes("4D835E4ABDD4BDC6B88316A6E931A07F") }, //
+ /* I=118 */
+ {
HexUtil.hexToBytes("000000000000000000000000000004000000000000000000"),
+
HexUtil.hexToBytes("E07EFABFF1C353F7384EBB87B435A3F3") }, //
+ /* I=119 */
+ {
HexUtil.hexToBytes("000000000000000000000000000002000000000000000000"),
+
HexUtil.hexToBytes("ED3088DC3FAF89AD87B4356FF1BB09C2") }, //
+ /* I=120 */
+ {
HexUtil.hexToBytes("000000000000000000000000000001000000000000000000"),
+
HexUtil.hexToBytes("4324D01140C156FC898C2E32BA03FB05") }, //
+ /* I=121 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000800000000000000000"),
+
HexUtil.hexToBytes("BE15D016FACB5BAFBC24FA9289132166") }, //
+ /* I=122 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000400000000000000000"),
+
HexUtil.hexToBytes("AC9B7048EDB1ACF4D97A5B0B3F50884B") }, //
+ /* I=123 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000200000000000000000"),
+
HexUtil.hexToBytes("448BECE1F86C7845DFA9A4BB2A016FB3") }, //
+ /* I=124 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000100000000000000000"),
+
HexUtil.hexToBytes("10DD445E87686EB46EA9B1ABC49257F0") }, //
+ /* I=125 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000080000000000000000"),
+
HexUtil.hexToBytes("B7FCCF7659FA756D4B7303EEA6C07458") }, //
+ /* I=126 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000040000000000000000"),
+
HexUtil.hexToBytes("289117115CA3513BAA7640B1004872C2") }, //
+ /* I=127 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000020000000000000000"),
+
HexUtil.hexToBytes("57CB42F7EE7186051F50B93FFA7B35BF") }, //
+ /* I=128 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000010000000000000000"),
+
HexUtil.hexToBytes("F2741BFBFB81663B9136802FB9C3126A") }, //
+ /* I=129 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000008000000000000000"),
+
HexUtil.hexToBytes("E32DDDC5C7398C096E3BD535B31DB5CE") }, //
+ /* I=130 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000004000000000000000"),
+
HexUtil.hexToBytes("81D3C204E608AF9CC713EAEBCB72433F") }, //
+ /* I=131 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000002000000000000000"),
+
HexUtil.hexToBytes("D4DEEF4BFC36AAA579496E6935F8F98E") }, //
+ /* I=132 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000001000000000000000"),
+
HexUtil.hexToBytes("C356DB082B97802B038571C392C5C8F6") }, //
+ /* I=133 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000800000000000000"),
+
HexUtil.hexToBytes("A3919ECD4861845F2527B77F06AC6A4E") }, //
+ /* I=134 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000400000000000000"),
+
HexUtil.hexToBytes("A53858E17A2F802A20E40D44494FFDA0") }, //
+ /* I=135 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000200000000000000"),
+
HexUtil.hexToBytes("5D989E122B78C758921EDBEEB827F0C0") }, //
+ /* I=136 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000100000000000000"),
+
HexUtil.hexToBytes("4B1C0C8F9E7830CC3C4BE7BD226FA8DE") }, //
+ /* I=137 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000080000000000000"),
+
HexUtil.hexToBytes("82C40C5FD897FBCA7B899C70713573A1") }, //
+ /* I=138 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000040000000000000"),
+
HexUtil.hexToBytes("ED13EE2D45E00F75CCDB51EA8E3E36AD") }, //
+ /* I=139 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000020000000000000"),
+
HexUtil.hexToBytes("F121799EEFE8432423176A3CCF6462BB") }, //
+ /* I=140 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000010000000000000"),
+
HexUtil.hexToBytes("4FA0C06F07997E98271DD86F7B355C50") }, //
+ /* I=141 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000008000000000000"),
+
HexUtil.hexToBytes("849EB364B4E81D058649DC5B1BF029B9") }, //
+ /* I=142 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000004000000000000"),
+
HexUtil.hexToBytes("F48F9E0DE8DE7AD944A207809335D9B1") }, //
+ /* I=143 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000002000000000000"),
+
HexUtil.hexToBytes("E59E9205B5A81A4FD26DFCF308966022") }, //
+ /* I=144 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000001000000000000"),
+
HexUtil.hexToBytes("3A91A1BE14AAE9ED700BDF9D70018804") }, //
+ /* I=145 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000800000000000"),
+
HexUtil.hexToBytes("8ABAD78DCB79A48D79070E7DA89664EC") }, //
+ /* I=146 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000400000000000"),
+
HexUtil.hexToBytes("B68377D98AAE6044938A7457F6C649D9") }, //
+ /* I=147 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000200000000000"),
+
HexUtil.hexToBytes("E4E1275C42F5F1B63D662C099D6CE33D") }, //
+ /* I=148 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000100000000000"),
+
HexUtil.hexToBytes("7DEF32A34C6BE668F17DA1BB193B06EF") }, //
+ /* I=149 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000080000000000"),
+
HexUtil.hexToBytes("78B6000CC3D30CB3A74B68D0EDBD2B53") }, //
+ /* I=150 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000040000000000"),
+
HexUtil.hexToBytes("0A47531DE88DD8AE5C23EAE4F7D1F2D5") }, //
+ /* I=151 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000020000000000"),
+
HexUtil.hexToBytes("667B24E8000CF68231EC484581D922E5") }, //
+ /* I=152 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000010000000000"),
+
HexUtil.hexToBytes("39DAA5EBD4AACAE130E9C33236C52024") }, //
+ /* I=153 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000008000000000"),
+
HexUtil.hexToBytes("E3C88760B3CB21360668A63E55BB45D1") }, //
+ /* I=154 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000004000000000"),
+
HexUtil.hexToBytes("F131EE903C1CDB49D416866FD5D8DE51") }, //
+ /* I=155 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000002000000000"),
+
HexUtil.hexToBytes("7A1916135B0447CF4033FC13047A583A") }, //
+ /* I=156 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000001000000000"),
+
HexUtil.hexToBytes("F7D55FB27991143DCDFA90DDF0424FCB") }, //
+ /* I=157 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000800000000"),
+
HexUtil.hexToBytes("EA93E7D1CA1111DBD8F7EC111A848C0C") }, //
+ /* I=158 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000400000000"),
+
HexUtil.hexToBytes("2A689E39DFD3CBCBE221326E95888779") }, //
+ /* I=159 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000200000000"),
+
HexUtil.hexToBytes("C1CE399CA762318AC2C40D1928B4C57D") }, //
+ /* I=160 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000100000000"),
+
HexUtil.hexToBytes("D43FB6F2B2879C8BFAF0092DA2CA63ED") }, //
+ /* I=161 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000080000000"),
+
HexUtil.hexToBytes("224563E617158DF97650AF5D130E78A5") }, //
+ /* I=162 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000040000000"),
+
HexUtil.hexToBytes("6562FDF6833B7C4F7484AE6EBCC243DD") }, //
+ /* I=163 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000020000000"),
+
HexUtil.hexToBytes("93D58BA7BED22615D661D002885A7457") }, //
+ /* I=164 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000010000000"),
+
HexUtil.hexToBytes("9A0EF559003AD9E52D3E09ED3C1D3320") }, //
+ /* I=165 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000008000000"),
+
HexUtil.hexToBytes("96BAF5A7DC6F3DD27EB4C717A85D261C") }, //
+ /* I=166 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000004000000"),
+
HexUtil.hexToBytes("B8762E06884900E8452293190E19CCDB") }, //
+ /* I=167 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000002000000"),
+
HexUtil.hexToBytes("785416A22BD63CBABF4B1789355197D3") }, //
+ /* I=168 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000001000000"),
+
HexUtil.hexToBytes("A0D20CE1489BAA69A3612DCE90F7ABF6") }, //
+ /* I=169 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000800000"),
+
HexUtil.hexToBytes("700244E93DC94230CC607FFBA0E48F32") }, //
+ /* I=170 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000400000"),
+
HexUtil.hexToBytes("85329E476829F872A2B4A7E59F91FF2D") }, //
+ /* I=171 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000200000"),
+
HexUtil.hexToBytes("E4219B4935D988DB719B8B8B2B53D247") }, //
+ /* I=172 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000100000"),
+
HexUtil.hexToBytes("6ACDD04FD13D4DB4409FE8DD13FD737B") }, //
+ /* I=173 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000080000"),
+
HexUtil.hexToBytes("9EB7A670AB59E15BE582378701C1EC14") }, //
+ /* I=174 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000040000"),
+
HexUtil.hexToBytes("29DF2D6935FE657763BC7A9F22D3D492") }, //
+ /* I=175 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000020000"),
+
HexUtil.hexToBytes("99303359D4A13AFDBE6C784028CE533A") }, //
+ /* I=176 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000010000"),
+
HexUtil.hexToBytes("FF5C70A6334545F33B9DBF7BEA0417CA") }, //
+ /* I=177 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000008000"),
+
HexUtil.hexToBytes("289F58A17E4C50EDA4269EFB3DF55815") }, //
+ /* I=178 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000004000"),
+
HexUtil.hexToBytes("EA35DCB416E9E1C2861D1682F062B5EB") }, //
+ /* I=179 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000002000"),
+
HexUtil.hexToBytes("3A47BF354BE775383C50B0C0A83E3A58") }, //
+ /* I=180 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000001000"),
+
HexUtil.hexToBytes("BF6C1DC069FB95D05D43B01D8206D66B") }, //
+ /* I=181 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000800"),
+
HexUtil.hexToBytes("046D1D580D5898DA6595F32FD1F0C33D") }, //
+ /* I=182 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000400"),
+
HexUtil.hexToBytes("5F57803B7B82A110F7E9855D6A546082") }, //
+ /* I=183 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000200"),
+
HexUtil.hexToBytes("25336ECF34E7BE97862CDFF715FF05A8") }, //
+ /* I=184 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000100"),
+
HexUtil.hexToBytes("ACBAA2A943D8078022D693890E8C4FEF") }, //
+ /* I=185 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000080"),
+
HexUtil.hexToBytes("3947597879F6B58E4E2F0DF825A83A38") }, //
+ /* I=186 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000040"),
+
HexUtil.hexToBytes("4EB8CC3335496130655BF3CA570A4FC0") }, //
+ /* I=187 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000020"),
+
HexUtil.hexToBytes("BBDA7769AD1FDA425E18332D97868824") }, //
+ /* I=188 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000010"),
+
HexUtil.hexToBytes("5E7532D22DDB0829A29C868198397154") }, //
+ /* I=189 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000008"),
+
HexUtil.hexToBytes("E66DA67B630AB7AE3E682855E1A1698E") }, //
+ /* I=190 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000004"),
+
HexUtil.hexToBytes("4D93800F671B48559A64D1EA030A590A") }, //
+ /* I=191 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000002"),
+
HexUtil.hexToBytes("F33159FCC7D9AE30C062CD3B322AC764") }, //
+ /* I=192 */
+ {
HexUtil.hexToBytes("000000000000000000000000000000000000000000000001"),
+
HexUtil.hexToBytes("8BAE4EFB70D33A9792EEA9BE70889D72") }, //
+ };
+
+ public void testStandardTestVK() throws UnsupportedCipherException {
+ // KEYSIZE=128
+ Rijndael aes128 = new Rijndael(128, 128);
+ for (int i = 0; i < TEST_VK128.length; i++) {
+ aes128.initialize(TEST_VK128[i][0]);
+
+ byte[] cipher = new byte[128 / 8];
+ aes128.encipher(TEST_VK_PT, cipher);
+ assertTrue("ECB_VK KEYSIZE=128 I=" + (i + 1),
Arrays.equals(cipher, TEST_VK128[i][1]));
+ }
+
+ /*- KEYSIZE=192 This case would fail
+ Rijndael aes192 = new Rijndael(192, 128);
+ for (int i = 0; i < TEST_VK192.length; i++) {
+ aes192.initialize(TEST_VK192[i][0]);
+
+ byte[] cipher = new byte[192 / 8];
+ aes192.encipher(TEST_VK_PT, cipher);
+ assertTrue("ECB_VK KEYSIZE=192 I=" + (i + 1),
Arrays.equals(cipher, TEST_VK192[i][1]));
+ }
+ */
+ }
+
+ public void testRandom() throws UnsupportedCipherException {
+ final int[] SIZE = new int[] { 128, 192, 256 };
+
+ for (int k = 0; k < SIZE.length; k++) {
+ int size = SIZE[k];
+ Rijndael aes = new Rijndael(size, size);
+
+ byte[] key = new byte[size / 8];
+ rand.nextBytes(key);
+ aes.initialize(key);
+
+ for (int i = 0; i < 1024; i++) {
+ byte[] plain = new byte[size / 8];
+ rand.nextBytes(plain);
+
+ byte[] cipher = new byte[size / 8];
+ aes.encipher(plain, cipher);
+
+ byte[] plain2 = new byte[size / 8];
+ aes.decipher(cipher, plain2);
+
+ assertTrue("(" + size + "," + size + //
+ ") KEY=" +
HexUtil.bytesToHex(key) + //
+ ", PLAIN=" +
HexUtil.bytesToHex(plain) + //
+ ", CIPHER=" +
HexUtil.bytesToHex(cipher) + //
+ ", PLAIN2=" +
HexUtil.bytesToHex(plain2),//
+ Arrays.equals(plain, plain2));
+ }
+ }
+ }
+}