You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(119) |
Oct
(111) |
Nov
(238) |
Dec
(395) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(239) |
Feb
(59) |
Mar
(354) |
Apr
(489) |
May
(23) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
(5) |
Jun
(2) |
Jul
|
Aug
|
Sep
(3) |
Oct
(14) |
Nov
(17) |
Dec
(9) |
| 2007 |
Jan
(4) |
Feb
(3) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
|
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
(7) |
May
(3) |
Jun
(6) |
Jul
(4) |
Aug
(3) |
Sep
(15) |
Oct
(13) |
Nov
(35) |
Dec
(40) |
| 2009 |
Jan
(19) |
Feb
(21) |
Mar
(16) |
Apr
(18) |
May
(36) |
Jun
(20) |
Jul
(32) |
Aug
(11) |
Sep
(3) |
Oct
(2) |
Nov
(2) |
Dec
(13) |
| 2010 |
Jan
(5) |
Feb
(5) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(3) |
| 2012 |
Jan
(3) |
Feb
(3) |
Mar
(1) |
Apr
(4) |
May
(8) |
Jun
(4) |
Jul
(9) |
Aug
(2) |
Sep
(8) |
Oct
(3) |
Nov
(8) |
Dec
(4) |
| 2013 |
Jan
(2) |
Feb
(1) |
Mar
(5) |
Apr
(6) |
May
(10) |
Jun
(5) |
Jul
(6) |
Aug
(7) |
Sep
(5) |
Oct
(2) |
Nov
(4) |
Dec
(4) |
| 2014 |
Jan
(13) |
Feb
(4) |
Mar
(7) |
Apr
(9) |
May
(20) |
Jun
(13) |
Jul
(10) |
Aug
(3) |
Sep
(5) |
Oct
(2) |
Nov
(2) |
Dec
(2) |
| 2015 |
Jan
(3) |
Feb
(3) |
Mar
(5) |
Apr
(4) |
May
(3) |
Jun
(2) |
Jul
(4) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(3) |
| 2016 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
(4) |
Sep
(3) |
Oct
(3) |
Nov
(4) |
Dec
(2) |
| 2017 |
Jan
|
Feb
(2) |
Mar
|
Apr
(2) |
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Pelle B. <pe...@us...> - 2004-03-31 19:00:54
|
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6205/src/java/org/neuclear/commons/crypto Modified Files: CryptoTools.java Log Message: Added various Streams for simplified crypto operations. Index: CryptoTools.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/CryptoTools.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** CryptoTools.java 19 Mar 2004 22:21:24 -0000 1.18 --- CryptoTools.java 31 Mar 2004 18:48:25 -0000 1.19 *************** *** 2,5 **** --- 2,8 ---- * $Id$ * $Log$ + * Revision 1.19 2004/03/31 18:48:25 pelle + * Added various Streams for simplified crypto operations. + * * Revision 1.18 2004/03/19 22:21:24 pelle * Changes in the XMLSignature class, which is now Abstract there are currently 3 implementations for: *************** *** 260,263 **** --- 263,267 ---- import org.bouncycastle.jce.X509V3CertificateGenerator; import org.bouncycastle.jce.interfaces.ECPrivateKey; + import org.bouncycastle.jce.interfaces.ECPublicKey; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.neuclear.commons.time.TimeTools; *************** *** 497,500 **** --- 501,517 ---- } + public static Signature getSignatureCipher(final PublicKey key) throws NoSuchAlgorithmException, InvalidKeyException { + Signature sig = null; + if (key instanceof RSAPublicKey) + sig = Signature.getInstance("SHA1withRSA"); // Set up signature object. + else if (key instanceof DSAPublicKey) + sig = Signature.getInstance("SHA1withDSA"); + else if (key instanceof ECPublicKey) + sig = Signature.getInstance("SHA1withECDSA"); + + sig.initVerify(key); // Initialize with my public key. + return sig; + } + public static boolean verify(final PublicKey pk, final byte[] value, byte sigvalue[]) throws CryptoException { try { *************** *** 643,650 **** final String provider) throws GeneralSecurityException { final PBEKeySpec pbeSpec = new PBEKeySpec(password); ! final SecretKeyFactory keyFact = SecretKeyFactory.getInstance(algorithm, provider); final PBEParameterSpec defParams = new PBEParameterSpec(salt, iterationCount); ! final Cipher cipher = Cipher.getInstance(algorithm, provider); cipher.init(mode, keyFact.generateSecret(pbeSpec), defParams); --- 660,667 ---- final String provider) throws GeneralSecurityException { final PBEKeySpec pbeSpec = new PBEKeySpec(password); ! final SecretKeyFactory keyFact = SecretKeyFactory.getInstance(algorithm); final PBEParameterSpec defParams = new PBEParameterSpec(salt, iterationCount); ! final Cipher cipher = Cipher.getInstance(algorithm); cipher.init(mode, keyFact.generateSecret(pbeSpec), defParams); *************** *** 876,882 **** private static KeyPairGenerator tkg; private static KeyPairGenerator tdkg; ! public static final String DEFAULT_PBE_ALGORITHM = "PBEWithSHAAnd3-KeyTripleDES-CBC"; public static final String DEFAULT_JCE_PROVIDER = "BC"; ! private static final byte DEFAULT_SALT[] = "LiquidNightClubPanam".getBytes(); private static final int DEFAULT_ITERATION_COUNT = 2048; private static final byte[] HEX_TABLE = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; --- 893,899 ---- private static KeyPairGenerator tkg; private static KeyPairGenerator tdkg; ! public static final String DEFAULT_PBE_ALGORITHM = "PBEWithMD5AndDES"; public static final String DEFAULT_JCE_PROVIDER = "BC"; ! private static final byte DEFAULT_SALT[] = "LiquidNi".getBytes(); private static final int DEFAULT_ITERATION_COUNT = 2048; private static final byte[] HEX_TABLE = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; |
|
From: Pelle B. <pe...@us...> - 2004-03-31 19:00:18
|
Update of /cvsroot/neuclear/neuclear-commons/src/test/org/neuclear/commons/crypto/streams In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6205/src/test/org/neuclear/commons/crypto/streams Added Files: CryptoStreamTest.java DigestOutputStreamTest.java SignatureStreamTest.java Log Message: Added various Streams for simplified crypto operations. --- NEW FILE: DigestOutputStreamTest.java --- package org.neuclear.commons.crypto.streams; import junit.framework.TestCase; import org.neuclear.commons.crypto.CryptoTools; import java.io.IOException; import java.security.NoSuchAlgorithmException; /* $Id: DigestOutputStreamTest.java,v 1.1 2004/03/31 18:48:28 pelle Exp $ $Log: DigestOutputStreamTest.java,v $ Revision 1.1 2004/03/31 18:48:28 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 11:16:58 AM */ public class DigestOutputStreamTest extends TestCase { public DigestOutputStreamTest(String name) { super(name); } public void testStrings() throws NoSuchAlgorithmException, IOException { assertDigestEquals(""); assertDigestEquals("1"); assertDigestEquals("12"); assertDigestEquals("12345678890--"); assertDigestEquals("00000000000000000000000000000000000000000000000"); assertDigestEquals("the quick brown fox jumped over the lazy dog"); } public void assertDigestEquals(String test) throws NoSuchAlgorithmException, IOException { assertEquals(new String(CryptoTools.digest(test)), getStreamDigest(test)); } public String getStreamDigest(String data) throws NoSuchAlgorithmException, IOException { DigestOutputStream dig = new DigestOutputStream(); dig.write(data.getBytes()); return new String(dig.getDigest()); } } --- NEW FILE: CryptoStreamTest.java --- package org.neuclear.commons.crypto.streams; import junit.framework.TestCase; import org.neuclear.commons.crypto.CryptoException; import org.neuclear.commons.crypto.CryptoTools; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyPair; import java.security.NoSuchAlgorithmException; /* $Id: CryptoStreamTest.java,v 1.1 2004/03/31 18:48:27 pelle Exp $ $Log: CryptoStreamTest.java,v $ Revision 1.1 2004/03/31 18:48:27 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 11:16:58 AM */ public class CryptoStreamTest extends TestCase { public CryptoStreamTest(String name) throws NoSuchAlgorithmException { super(name); rsa = CryptoTools.createTinyRSAKeyPair(); dsa = CryptoTools.createTinyDSAKeyPair(); } public void testStrings() throws GeneralSecurityException, IOException, CryptoException { assertEncryptDecrypt(""); assertEncryptDecrypt("1"); assertEncryptDecrypt("12"); assertEncryptDecrypt("12345678890--"); assertEncryptDecrypt("00000000000000000000000000000000000000000000000"); assertEncryptDecrypt("the quick brown fox jumped over the lazy dog"); } public void assertEncryptDecrypt(String test) throws GeneralSecurityException, IOException, CryptoException { final byte[] bytes = test.getBytes("UTF-8"); final byte[] encrypted = encrypt(bytes); assertNotNull(encrypted); final byte[] decrypted = decrypt(encrypted); assertNotNull(decrypted); assertEquals(bytes, decrypted); assertBack2BackOutputStreams(bytes); assertBack2BackInputStreams(bytes); } public byte[] encrypt(byte data[]) throws GeneralSecurityException, IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); PasswordEncryptingOutputStream sos = new PasswordEncryptingOutputStream(bos, "super secret squirrel".toCharArray()); sos.write(data); sos.close(); return bos.toByteArray(); } public byte[] decrypt(byte data[]) throws GeneralSecurityException, IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); PasswordDecryptingOutputStream sos = new PasswordDecryptingOutputStream(bos, "super secret squirrel".toCharArray()); sos.write(data); sos.close(); return bos.toByteArray(); } public void assertBack2BackOutputStreams(byte data[]) throws GeneralSecurityException, IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); PasswordDecryptingOutputStream eos = new PasswordDecryptingOutputStream(bos, "super secret squirrel".toCharArray()); PasswordEncryptingOutputStream sos = new PasswordEncryptingOutputStream(eos, "super secret squirrel".toCharArray()); sos.write(data); sos.close(); assertEquals(data, bos.toByteArray()); } public void assertBack2BackInputStreams(byte data[]) throws GeneralSecurityException, IOException { ByteArrayInputStream bis = new ByteArrayInputStream(data); PasswordEncryptingInputStream eos = new PasswordEncryptingInputStream(bis, "super secret squirrel".toCharArray()); PasswordDecryptingInputStream sos = new PasswordDecryptingInputStream(eos, "super secret squirrel".toCharArray()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int b = sos.read(); while (b != -1) { bos.write(b); b = sos.read(); } assertEquals(data, bos.toByteArray()); } public void assertEquals(byte a[], byte b[]) { assertTrue((a == null) == (b == null)); if (a == null) return; assertEquals(a.length, b.length); for (int i = 0; i < a.length; i++) { assertEquals(a[i], b[i]); } } private KeyPair rsa; private KeyPair dsa; } --- NEW FILE: SignatureStreamTest.java --- package org.neuclear.commons.crypto.streams; import junit.framework.TestCase; import org.neuclear.commons.crypto.CryptoException; import org.neuclear.commons.crypto.CryptoTools; import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.NoSuchAlgorithmException; import java.security.SignatureException; /* $Id: SignatureStreamTest.java,v 1.1 2004/03/31 18:48:28 pelle Exp $ $Log: SignatureStreamTest.java,v $ Revision 1.1 2004/03/31 18:48:28 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 11:16:58 AM */ public class SignatureStreamTest extends TestCase { public SignatureStreamTest(String name) throws NoSuchAlgorithmException { super(name); rsa = CryptoTools.createTinyRSAKeyPair(); dsa = CryptoTools.createTinyDSAKeyPair(); } public void testStrings() throws NoSuchAlgorithmException, IOException, CryptoException, SignatureException, InvalidKeyException { assertSignatureEquals(""); assertSignatureEquals("1"); assertSignatureEquals("12"); assertSignatureEquals("12345678890--"); assertSignatureEquals("00000000000000000000000000000000000000000000000"); assertSignatureEquals("the quick brown fox jumped over the lazy dog"); } public void assertSignatureEquals(String test) throws NoSuchAlgorithmException, IOException, CryptoException, SignatureException, InvalidKeyException { final byte[] bytes = test.getBytes("UTF-8"); assertSignature(rsa, bytes); // assertSignature(dsa,bytes); I have to disable this as CryptoTools converts the signature output for DSA in a way that is required of XMLSignature } private void assertSignature(KeyPair kp, final byte[] bytes) throws NoSuchAlgorithmException, IOException, InvalidKeyException, SignatureException, CryptoException { final byte[] ssig = getStreamSignature(kp, bytes); assertEquals(CryptoTools.sign(kp, bytes), ssig); assertEquals(CryptoTools.verify(kp.getPublic(), bytes, ssig), getStreamVerifier(kp, bytes, ssig)); ssig[0] = (byte) (ssig[0] & 1); // tamper with signature assertFalse(getStreamVerifier(kp, bytes, ssig)); } public byte[] getStreamSignature(KeyPair kp, byte data[]) throws NoSuchAlgorithmException, IOException, InvalidKeyException, SignatureException { SigningOutputStream sig = new SigningOutputStream(kp); sig.write(data); return sig.sign(); } public boolean getStreamVerifier(KeyPair kp, byte data[], byte sig[]) throws NoSuchAlgorithmException, IOException, InvalidKeyException, SignatureException { VerifyingOutputStream ver = new VerifyingOutputStream(kp, sig); ver.write(data); return ver.verify(); } public void assertEquals(byte a[], byte b[]) { assertTrue((a == null) == (b == null)); assertEquals(a.length, b.length); for (int i = 0; i < a.length; i++) { assertEquals(a[i], b[i]); } } private KeyPair rsa; private KeyPair dsa; } |
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/streams In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6205/src/java/org/neuclear/commons/crypto/streams Added Files: AbstractSignatureStream.java DigestOutputStream.java PasswordDecryptingInputStream.java PasswordDecryptingOutputStream.java PasswordEncryptingInputStream.java PasswordEncryptingOutputStream.java SealedObjectInputStream.java SealedObjectOutputStream.java SigningOutputStream.java VerifyingOutputStream.java Log Message: Added various Streams for simplified crypto operations. --- NEW FILE: PasswordEncryptingInputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import java.io.InputStream; import java.security.GeneralSecurityException; /* $Id: PasswordEncryptingInputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: PasswordEncryptingInputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 12:25:38 PM */ public class PasswordEncryptingInputStream extends CipherInputStream { public PasswordEncryptingInputStream(InputStream stream, char password[]) throws GeneralSecurityException { super(stream, CryptoTools.makePBECipher(Cipher.ENCRYPT_MODE, password)); } } --- NEW FILE: DigestOutputStream.java --- package org.neuclear.commons.crypto.streams; import java.io.IOException; import java.io.OutputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* $Id: DigestOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: DigestOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * Handy Stream for calculating the Digest of data. */ public class DigestOutputStream extends OutputStream { public DigestOutputStream() throws NoSuchAlgorithmException { this(MessageDigest.getInstance("sha1")); } public DigestOutputStream(MessageDigest dig) { this.dig = dig; } /** * Writes the specified byte to this output stream. The general * contract for <code>write</code> is that one byte is written * to the output stream. The byte to be written is the eight * low-order bits of the argument <code>b</code>. The 24 * high-order bits of <code>b</code> are ignored. * <p/> * Subclasses of <code>OutputStream</code> must provide an * implementation for this method. * * @param b the <code>byte</code>. * @throws java.io.IOException if an I/O error occurs. In particular, * an <code>IOException</code> may be thrown if the * output stream has been closed. */ public void write(int b) throws IOException { dig.update((byte) b); } public byte[] getDigest() { return dig.digest(); } private final MessageDigest dig; } --- NEW FILE: SigningOutputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import java.security.*; /* $Id: SigningOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: SigningOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * Handy Stream for calculating the Digest of data. */ public class SigningOutputStream extends AbstractSignatureStream { public SigningOutputStream(KeyPair kp) throws NoSuchAlgorithmException, InvalidKeyException { this(kp.getPrivate()); } public SigningOutputStream(PrivateKey key) throws NoSuchAlgorithmException, InvalidKeyException { this(CryptoTools.getSignatureCipher(key)); } public SigningOutputStream(Signature sig) { super(sig); } public final byte[] sign() throws SignatureException { return sig.sign(); } } --- NEW FILE: AbstractSignatureStream.java --- package org.neuclear.commons.crypto.streams; import java.io.IOException; import java.io.OutputStream; import java.security.Signature; import java.security.SignatureException; /* $Id: AbstractSignatureStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: AbstractSignatureStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 11:41:18 AM */ public class AbstractSignatureStream extends OutputStream { public AbstractSignatureStream(Signature sig) { this.sig = sig; } /** * Writes the specified byte to this output stream. The general * contract for <code>write</code> is that one byte is written * to the output stream. The byte to be written is the eight * low-order bits of the argument <code>b</code>. The 24 * high-order bits of <code>b</code> are ignored. * <p/> * Subclasses of <code>OutputStream</code> must provide an * implementation for this method. * * @param b the <code>byte</code>. * @throws java.io.IOException if an I/O error occurs. In particular, * an <code>IOException</code> may be thrown if the * output stream has been closed. */ public final void write(int b) throws IOException { try { sig.update((byte) b); } catch (SignatureException e) { throw new IOException(e.getLocalizedMessage()); } } protected final Signature sig; } --- NEW FILE: PasswordDecryptingOutputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import java.io.OutputStream; import java.security.GeneralSecurityException; /* $Id: PasswordDecryptingOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: PasswordDecryptingOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 12:25:38 PM */ public class PasswordDecryptingOutputStream extends CipherOutputStream { public PasswordDecryptingOutputStream(OutputStream stream, char password[]) throws GeneralSecurityException { super(stream, CryptoTools.makePBECipher(Cipher.DECRYPT_MODE, password)); } } --- NEW FILE: SealedObjectOutputStream.java --- package org.neuclear.commons.crypto.streams; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.security.GeneralSecurityException; /* $Id: SealedObjectOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: SealedObjectOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 1:42:28 PM */ public class SealedObjectOutputStream extends ObjectOutputStream { public SealedObjectOutputStream(OutputStream out, char password[]) throws IOException, GeneralSecurityException { super(new PasswordEncryptingOutputStream(out, password)); } } --- NEW FILE: VerifyingOutputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import java.security.*; /* $Id: VerifyingOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: VerifyingOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * Handy Stream for calculating the Digest of data. */ public class VerifyingOutputStream extends AbstractSignatureStream { public VerifyingOutputStream(KeyPair kp, byte signature[]) throws NoSuchAlgorithmException, InvalidKeyException { this(kp.getPublic(), signature); } public VerifyingOutputStream(PublicKey key, byte signature[]) throws NoSuchAlgorithmException, InvalidKeyException { this(CryptoTools.getSignatureCipher(key), signature); } public VerifyingOutputStream(Signature sig, byte signature[]) { super(sig); this.signature = signature; } /** * Verify that the Stream was signed by provided signature and PublicKey. * * @return * @throws SignatureException */ public final boolean verify() throws SignatureException { return sig.verify(signature); } private final byte[] signature; } --- NEW FILE: PasswordDecryptingInputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import java.io.InputStream; import java.security.GeneralSecurityException; /* $Id: PasswordDecryptingInputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: PasswordDecryptingInputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 12:25:38 PM */ public class PasswordDecryptingInputStream extends CipherInputStream { public PasswordDecryptingInputStream(InputStream stream, char password[]) throws GeneralSecurityException { super(stream, CryptoTools.makePBECipher(Cipher.DECRYPT_MODE, password)); } } --- NEW FILE: PasswordEncryptingOutputStream.java --- package org.neuclear.commons.crypto.streams; import org.neuclear.commons.crypto.CryptoTools; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import java.io.OutputStream; import java.security.GeneralSecurityException; /* $Id: PasswordEncryptingOutputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: PasswordEncryptingOutputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 12:25:38 PM */ public class PasswordEncryptingOutputStream extends CipherOutputStream { public PasswordEncryptingOutputStream(OutputStream stream, char password[]) throws GeneralSecurityException { super(stream, CryptoTools.makePBECipher(Cipher.ENCRYPT_MODE, password)); } } --- NEW FILE: SealedObjectInputStream.java --- package org.neuclear.commons.crypto.streams; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.security.GeneralSecurityException; /* $Id: SealedObjectInputStream.java,v 1.1 2004/03/31 18:48:24 pelle Exp $ $Log: SealedObjectInputStream.java,v $ Revision 1.1 2004/03/31 18:48:24 pelle Added various Streams for simplified crypto operations. */ /** * User: pelleb * Date: Mar 31, 2004 * Time: 1:42:28 PM */ public class SealedObjectInputStream extends ObjectInputStream { public SealedObjectInputStream(InputStream in, char password[]) throws IOException, GeneralSecurityException { super(new PasswordDecryptingInputStream(in, password)); } } |
|
From: Pelle B. <pe...@us...> - 2004-03-31 16:16:50
|
Update of /cvsroot/neuclear/neuclear-commons/src/test/org/neuclear/commons/crypto/streams In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6443/src/test/org/neuclear/commons/crypto/streams Log Message: Directory /cvsroot/neuclear/neuclear-commons/src/test/org/neuclear/commons/crypto/streams added to the repository |
|
From: Pelle B. <pe...@us...> - 2004-03-31 16:11:03
|
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/streams In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5268/src/java/org/neuclear/commons/crypto/streams Log Message: Directory /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/streams added to the repository |
|
From: <bug...@ve...> - 2004-03-30 20:37:35
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/GL-25 Here is an overview of the issue: --------------------------------------------------------------------- Key: GL-25 Summary: Move implementation code LedgerController Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear Ledger Fix Fors: r_0_4 Versions: r_0_4 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Tue, 30 Mar 2004 12:36 PM Updated: Tue, 30 Mar 2004 12:36 PM Description: As each Controller will manage multiple ledgers, we need to move the implementation plugins to there. --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: <bug...@ve...> - 2004-03-30 20:33:35
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/XMLSIG-14 Here is an overview of the issue: --------------------------------------------------------------------- Key: XMLSIG-14 Summary: Support new Interactive Signing Model Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear XMLSig Fix Fors: 0.13 Versions: 0.13 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Tue, 30 Mar 2004 12:32 PM Updated: Tue, 30 Mar 2004 12:32 PM Description: We need to be able to support the new Interactive Signing Model in NeuClear Commons 0.7 this essentially means signing using a Signer without providing an alias as is done now. That in itself is easy, but then we also need to know the PublicKey that the Signer uses. --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: <bug...@ve...> - 2004-03-30 20:30:35
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/COM-6 Here is an overview of the issue: --------------------------------------------------------------------- Key: COM-6 Summary: Set PublicKey Callback Method Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear Commons Fix Fors: r_0_7 Versions: r_0_7 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Tue, 30 Mar 2004 12:29 PM Updated: Tue, 30 Mar 2004 12:29 PM Description: The XMLSig library needs to know the PublicKey of the signer and thus needs to be able to retrieve it in cases, where the signer isnt known, such as the new interactive model. --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: <bug...@ve...> - 2004-03-30 20:25:43
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/COM-5 Here is an overview of the issue: --------------------------------------------------------------------- Key: COM-5 Summary: Support for more advanced passphrase agent Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear Commons Fix Fors: r_0_7 Versions: r_0_7 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Tue, 30 Mar 2004 12:25 PM Updated: Tue, 30 Mar 2004 12:25 PM Description: The new more interactive approach to signing requires more of the passphrase agents. The passphrase agents need to be able to not just enter passphrases, but also pick aliases and initiate an Identity Creation process. --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: <bug...@ve...> - 2004-03-30 20:23:35
|
The following issue has been updated:
Updater: Pelle Braendgaard (mailto:pe...@ve...)
Date: Tue, 30 Mar 2004 12:21 PM
Changes:
description changed from For interactive situations where the user is signing a message in a gui, he should be able to pick the identity that he wishes to use as well as create new identities.
Thus the Signer should have a sign(byte data[]) method which completely autonomously handles the entire signing process outside of the control of the user.
to For interactive situations where the user is signing a message in a gui, he should be able to pick the identity that he wishes to use as well as create new identities.
Thus the Signer should have a sign(byte data[]) method which completely autonomously handles the entire signing process outside of the control of direct application control.
---------------------------------------------------------------------
For a full history of the issue, see:
http://jira.neuclear.org//browse/COM-4?page=history
---------------------------------------------------------------------
View the issue:
http://jira.neuclear.org//browse/COM-4
Here is an overview of the issue:
---------------------------------------------------------------------
Key: COM-4
Summary: Create Completely Interactive Signing Method
Type: New Feature
Status: Open
Priority: Major
Original Estimate: Unknown
Time Spent: Unknown
Remaining: Unknown
Project: NeuClear Commons
Fix Fors:
r_0_7
Versions:
r_0_7
Assignee: Pelle Braendgaard
Reporter: Pelle Braendgaard
Created: Tue, 30 Mar 2004 12:21 PM
Updated: Tue, 30 Mar 2004 12:21 PM
Description:
For interactive situations where the user is signing a message in a gui, he should be able to pick the identity that he wishes to use as well as create new identities.
Thus the Signer should have a sign(byte data[]) method which completely autonomously handles the entire signing process outside of the control of direct application control.
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://jira.neuclear.org//secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
|
|
From: <bug...@ve...> - 2004-03-30 20:21:42
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/COM-4 Here is an overview of the issue: --------------------------------------------------------------------- Key: COM-4 Summary: Create Completely Interactive Signing Method Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear Commons Fix Fors: r_0_7 Versions: r_0_7 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Tue, 30 Mar 2004 12:21 PM Updated: Tue, 30 Mar 2004 12:21 PM Description: For interactive situations where the user is signing a message in a gui, he should be able to pick the identity that he wishes to use as well as create new identities. Thus the Signer should have a sign(byte data[]) method which completely autonomously handles the entire signing process outside of the control of the user. --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: Pelle B. <pe...@us...> - 2004-03-30 00:00:05
|
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/signers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22709/src/java/org/neuclear/commons/crypto/signers Added Files: BrowsableSigner.java Log Message: InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. The intention is to encapsulate most of the key management functionality within the InteractiveAgent. --- NEW FILE: BrowsableSigner.java --- package org.neuclear.commons.crypto.signers; import java.security.KeyStoreException; import java.util.Iterator; /* NeuClear Distributed Transaction Clearing Platform (C) 2003 Pelle Braendgaard This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: BrowsableSigner.java,v 1.1 2004/03/29 23:48:33 pelle Exp $ $Log: BrowsableSigner.java,v $ Revision 1.1 2004/03/29 23:48:33 pelle InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. The intention is to encapsulate most of the key management functionality within the InteractiveAgent. */ /** * Signer Stores with interactive user interfaces can implement this to * provide an iterator of the keys held within. */ public interface BrowsableSigner { Iterator iterator() throws KeyStoreException; } |
|
From: Pelle B. <pe...@us...> - 2004-03-30 00:00:05
|
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/passphraseagents In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22709/src/java/org/neuclear/commons/crypto/passphraseagents Modified Files: GuiDialogAgent.java InteractiveAgent.java Log Message: InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. The intention is to encapsulate most of the key management functionality within the InteractiveAgent. Index: GuiDialogAgent.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/passphraseagents/GuiDialogAgent.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** GuiDialogAgent.java 19 Jan 2004 17:53:14 -0000 1.7 --- GuiDialogAgent.java 29 Mar 2004 23:48:32 -0000 1.8 *************** *** 1,4 **** --- 1,6 ---- package org.neuclear.commons.crypto.passphraseagents; + import org.neuclear.commons.crypto.signers.Signer; + import java.awt.*; import java.awt.event.ActionEvent; *************** *** 29,32 **** --- 31,40 ---- $Id$ $Log$ + Revision 1.8 2004/03/29 23:48:32 pelle + InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. + The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. + + The intention is to encapsulate most of the key management functionality within the InteractiveAgent. + Revision 1.7 2004/01/19 17:53:14 pelle Various clean ups *************** *** 94,98 **** public final class GuiDialogAgent implements InteractiveAgent { public GuiDialogAgent() { ! cache=new HashMap(); frame = new Frame("Please Enter Passphrase..."); --- 102,106 ---- public final class GuiDialogAgent implements InteractiveAgent { public GuiDialogAgent() { ! cache = new HashMap(); frame = new Frame("Please Enter Passphrase..."); *************** *** 138,144 **** panel.add(buttons, BorderLayout.SOUTH); ! remember=new Checkbox("remember passphrase",false); buttons.add(remember); ! remember.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent itemEvent) { if (!remember.getState()) --- 146,152 ---- panel.add(buttons, BorderLayout.SOUTH); ! remember = new Checkbox("remember passphrase", false); buttons.add(remember); ! remember.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent itemEvent) { if (!remember.getState()) *************** *** 155,159 **** synchronized (passphrase) { passphrase.setText(""); ! isCancel=true; passphrase.notifyAll(); } --- 163,167 ---- synchronized (passphrase) { passphrase.setText(""); ! isCancel = true; passphrase.notifyAll(); } *************** *** 165,169 **** public void actionPerformed(final ActionEvent actionEvent) { synchronized (passphrase) { ! isCancel=false; passphrase.notifyAll(); } --- 173,177 ---- public void actionPerformed(final ActionEvent actionEvent) { synchronized (passphrase) { ! isCancel = false; passphrase.notifyAll(); } *************** *** 174,184 **** passphrase.addActionListener(action); } public char[] getPassPhrase(final String name) throws UserCancellationException { ! return getPassPhrase(name,false); } /** * Asks for the passphrase. * @param name * @param incorrect true indicates the user entered an incorrect passphrase and should reenter it. --- 182,207 ---- passphrase.addActionListener(action); + createNew = new Button("New Identity"); + createNew.setVisible(false); + createNew.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent event) { + + } + + }); + buttons.add(createNew); + aliasList = new List(); + aliasList.setVisible(false); + text.add(aliasList); + } public char[] getPassPhrase(final String name) throws UserCancellationException { ! return getPassPhrase(name, false); } + /** * Asks for the passphrase. + * * @param name * @param incorrect true indicates the user entered an incorrect passphrase and should reenter it. *************** *** 186,190 **** * @throws UserCancellationException */ ! public synchronized char[] getPassPhrase(final String name,boolean incorrect) throws UserCancellationException { synchronized (passphrase) {//We dont want multiple agents popping up at the same time if (cache.containsKey(name)) --- 209,213 ---- * @throws UserCancellationException */ ! public synchronized char[] getPassPhrase(final String name, boolean incorrect) throws UserCancellationException { synchronized (passphrase) {//We dont want multiple agents popping up at the same time if (cache.containsKey(name)) *************** *** 192,199 **** else passphrase.setText(""); ! isCancel=true; if (incorrect) System.err.println("Incorrect passphrase"); incorrectLabel.setVisible(incorrect); nameLabel.setText(name); --- 215,223 ---- else passphrase.setText(""); ! isCancel = true; if (incorrect) System.err.println("Incorrect passphrase"); incorrectLabel.setVisible(incorrect); + nameLabel.setVisible(true); nameLabel.setText(name); *************** *** 206,214 **** } frame.setVisible(false); ! if(isCancel) throw new UserCancellationException(name); final String phrase = passphrase.getText(); ! if(remember.getState()) ! cache.put(name,phrase); passphrase.setText(""); return phrase.toCharArray(); --- 230,238 ---- } frame.setVisible(false); ! if (isCancel) throw new UserCancellationException(name); final String phrase = passphrase.getText(); ! if (remember.getState()) ! cache.put(name, phrase); passphrase.setText(""); return phrase.toCharArray(); *************** *** 220,226 **** try { System.out.println("Getting passphrase... " + new String(dia.getPassPhrase("neu://pelle@test"))); ! System.out.println("Getting passphrase... " + new String(dia.getPassPhrase("neu://pelle@test",true))); } catch (UserCancellationException e) { ! System.out.print("User Cancellation by: "+e.getName()); } --- 244,250 ---- try { System.out.println("Getting passphrase... " + new String(dia.getPassPhrase("neu://pelle@test"))); ! System.out.println("Getting passphrase... " + new String(dia.getPassPhrase("neu://pelle@test", true))); } catch (UserCancellationException e) { ! System.out.print("User Cancellation by: " + e.getName()); } *************** *** 228,231 **** --- 252,269 ---- } + /** + * The User is asked to pick a name by the PassPhraseAgent. The PassPhraseAgent can query the given signer for + * a list of included aliases or even create a new keypair. + * + * @return + * @throws UserCancellationException + */ + public char[] getPassPhrase(Signer signer) throws UserCancellationException { + nameLabel.setVisible(false); + createNew.setVisible(true); + aliasList.setVisible(true); + return new char[0]; + } + private final TextField passphrase; private final Button ok; *************** *** 233,240 **** private final Label nameLabel; private final Label incorrectLabel; private final Frame frame; private final Map cache; private Image img; ! private boolean isCancel=true; --- 271,280 ---- private final Label nameLabel; private final Label incorrectLabel; + private final List aliasList; + private final Button createNew; private final Frame frame; private final Map cache; private Image img; ! private boolean isCancel = true; Index: InteractiveAgent.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/passphraseagents/InteractiveAgent.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** InteractiveAgent.java 19 Dec 2003 18:02:53 -0000 1.3 --- InteractiveAgent.java 29 Mar 2004 23:48:32 -0000 1.4 *************** *** 1,4 **** --- 1,6 ---- package org.neuclear.commons.crypto.passphraseagents; + import org.neuclear.commons.crypto.signers.Signer; + /* NeuClear Distributed Transaction Clearing Platform *************** *** 21,24 **** --- 23,32 ---- $Id$ $Log$ + Revision 1.4 2004/03/29 23:48:32 pelle + InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. + The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. + + The intention is to encapsulate most of the key management functionality within the InteractiveAgent. + Revision 1.3 2003/12/19 18:02:53 pelle Revamped a lot of exception handling throughout the framework, it has been simplified in most places: *************** *** 50,53 **** --- 58,70 ---- */ public interface InteractiveAgent extends PassPhraseAgent { + /** + * The User is asked to pick a name by the PassPhraseAgent. The PassPhraseAgent can query the given signer for + * a list of included aliases or even create a new keypair. + * + * @return + * @throws UserCancellationException + */ + char[] getPassPhrase(final Signer signer) throws UserCancellationException; + } |
|
From: Pelle B. <pe...@us...> - 2004-03-30 00:00:04
|
Update of /cvsroot/neuclear/neuclear-commons In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22709 Modified Files: project.xml Log Message: InteractiveAgent now has a new method which allows signers to ask for a passphrase without specifying alias. The agents are passed a reference to the Signer, which they can use to browse aliases as well as create new key pairs. The intention is to encapsulate most of the key management functionality within the InteractiveAgent. Index: project.xml =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/project.xml,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** project.xml 23 Mar 2004 19:23:40 -0000 1.24 --- project.xml 29 Mar 2004 23:48:32 -0000 1.25 *************** *** 4,8 **** <name>NeuClear Commons</name> <id>neuclear-commons</id> ! <currentVersion>0.6</currentVersion> <inceptionYear>2003</inceptionYear> <package>org.neuclear.commons</package> --- 4,8 ---- <name>NeuClear Commons</name> <id>neuclear-commons</id> ! <currentVersion>0.6.1-SNAPSHOT</currentVersion> <inceptionYear>2003</inceptionYear> <package>org.neuclear.commons</package> |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:03
|
Update of /cvsroot/neuclear/neuclear-ledger/src/webapp/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675/src/webapp/WEB-INF Modified Files: web.xml Log Message: The servlets now work and display the ledger contents. Index: web.xml =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger/src/webapp/WEB-INF/web.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** web.xml 29 Mar 2004 20:05:17 -0000 1.3 --- web.xml 29 Mar 2004 23:43:30 -0000 1.4 *************** *** 15,19 **** <param-value>jdbc/AssetDS</param-value> </context-param> ! <!-- <context-param> <param-name>configurator</param-name> <param-value>org.neuclear.ledger.browser.LedgerConfiguration</param-value> --- 15,19 ---- <param-value>jdbc/AssetDS</param-value> </context-param> ! <!--<context-param> <param-name>configurator</param-name> <param-value>org.neuclear.ledger.browser.LedgerConfiguration</param-value> *************** *** 24,28 **** <servlet> <servlet-name>browser</servlet-name> ! <servlet-class>org.neuclear.ledger.servlets.LedgerServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> --- 24,33 ---- <servlet> <servlet-name>browser</servlet-name> ! <servlet-class>org.neuclear.ledger.servlets.LedgerBrowserServlet</servlet-class> ! <load-on-startup>1</load-on-startup> ! </servlet> ! <servlet> ! <servlet-name>statement</servlet-name> ! <servlet-class>org.neuclear.ledger.servlets.LedgerStatementServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> *************** *** 31,33 **** --- 36,42 ---- <url-pattern>/browse/*</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>statement</servlet-name> + <url-pattern>/statements/*</url-pattern> + </servlet-mapping> </web-app> \ No newline at end of file |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:03
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/servlets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675/src/java/org/neuclear/ledger/servlets Added Files: LedgerBrowserServlet.java LedgerStatementServlet.java Removed Files: LedgerServlet.java Log Message: The servlets now work and display the ledger contents. --- NEW FILE: LedgerBrowserServlet.java --- package org.neuclear.ledger.servlets; import org.neuclear.commons.Utility; import org.neuclear.commons.configuration.ConfigurableContainer; import org.neuclear.commons.servlets.ServletTools; import org.neuclear.commons.time.TimeTools; import org.neuclear.id.InvalidNamedObjectException; import org.neuclear.id.NSTools; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.Ledger; import org.neuclear.ledger.browser.BookBrowser; import org.neuclear.ledger.browser.LedgerBrowser; import org.neuclear.ledger.simple.PopulatedSimpleLedger; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.security.Principal; import java.util.Date; import java.sql.Timestamp; import java.text.ParseException; /* NeuClear Distributed Transaction Clearing Platform (C) 2003 Pelle Braendgaard This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: LedgerBrowserServlet.java,v 1.1 2004/03/29 23:43:30 pelle Exp $ $Log: LedgerBrowserServlet.java,v $ Revision 1.1 2004/03/29 23:43:30 pelle The servlets now work and display the ledger contents. Revision 1.7 2004/03/29 20:05:16 pelle LedgerServlet works now at least for a straight non date restricted browse. Revision 1.6 2004/03/26 23:36:34 pelle The simple browse(book) now works on hibernate, I have implemented the other two, which currently don not constrain the query correctly. Revision 1.5 2004/03/25 22:04:46 pelle The first shell for the HibernateBookBrowser Revision 1.4 2004/03/21 00:48:36 pelle The problem with Enveloped signatures has now been fixed. It was a problem in the way transforms work. I have bandaided it, but in the future if better support for transforms need to be made, we need to rethink it a bit. Perhaps using the new crypto channel's in neuclear-commons. Revision 1.3 2004/01/02 23:18:34 pelle Added StatementFactory pattern and refactored the ledger to use it. Revision 1.2 2003/12/31 00:39:04 pelle Added Drivers for handling different Database dialects in the entity model. Added BookBrowser pattern to ledger, simplifying the statement writing process. Revision 1.1 2003/12/29 22:40:15 pelle Added LedgerServlet and friends */ /** * User: pelleb * Date: Dec 26, 2003 * Time: 5:54:05 PM */ public class LedgerBrowserServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { serviceid = ServletTools.getInitParam("serviceid", config); try { // ConfigurableContainer pico=(ConfigurableContainer) getServletContext().getAttribute("pico"); // ledger = (LedgerBrowser) pico.getComponentInstance(Ledger.class) ; ledger=new PopulatedSimpleLedger(serviceid); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); ServletTools.printHeader(out, request, "Account Browser"); String url = ServletTools.getAbsoluteURL(request, request.getServletPath()); try { Principal user = request.getUserPrincipal(); String book = request.getPathInfo(); if (Utility.isEmpty(book)) book = serviceid; else book = book.substring(1); System.out.println("Browsing: " + book); String fromStr=request.getParameter("from"); String toStr=request.getParameter("to"); Date from=parseDate(fromStr); Date to=parseDate(toStr); BookBrowser stmt = browse(book,from,to); out.println("<table><tr><th>Transaction ID</th><th>Time</th><th>Counterparty</th><th>Comment</th><th>Amount</th></tr>"); while (stmt.next()) { final double amount = stmt.getAmount(); out.print("<tr"); if (amount < 0) out.print(" class=\"negative\""); out.print("><td style=\"size:small\">"); out.print(stmt.getId()); out.print("</td><td>"); out.print(TimeTools.formatTimeStampShort(stmt.getValuetime())); out.print("</td><td><a href=\""); out.print(url); if (NSTools.isValidName(stmt.getCounterparty())) out.print(NSTools.name2path(stmt.getCounterparty())); else out.print("/" + stmt.getCounterparty()); out.println("\">"); out.print(stmt.getCounterparty()); out.print("</a></td><td>"); out.print(stmt.getComment()); out.print("</td><td>"); out.print(amount); out.print("</td></tr>"); } out.println("</table>"); } catch (InvalidNamedObjectException e) { e.printStackTrace(); } catch (LowlevelLedgerException e) { e.printStackTrace(); } } private BookBrowser browse(String book,Date from, Date to) throws LowlevelLedgerException { if (from!=null){ if (to!=null) return ledger.browseRange(book,from,to); return ledger.browseFrom(book,from); } return ledger.browse(book); } private Date parseDate(String fromStr) { if (Utility.isEmpty(fromStr)) return null; try { return TimeTools.parseTimeStamp(fromStr); } catch (ParseException e) { return null; } } private String serviceid; private LedgerBrowser ledger; } --- LedgerServlet.java DELETED --- --- NEW FILE: LedgerStatementServlet.java --- package org.neuclear.ledger.servlets; import org.neuclear.commons.Utility; import org.neuclear.commons.servlets.ServletTools; import org.neuclear.commons.time.TimeTools; import org.neuclear.id.InvalidNamedObjectException; import org.neuclear.id.NSTools; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.Ledger; import org.neuclear.ledger.browser.BookBrowser; import org.neuclear.ledger.browser.LedgerBrowser; import org.neuclear.ledger.simple.PopulatedSimpleLedger; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.security.Principal; import java.util.Date; import java.sql.Timestamp; import java.text.ParseException; /* NeuClear Distributed Transaction Clearing Platform (C) 2003 Pelle Braendgaard This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: LedgerStatementServlet.java,v 1.1 2004/03/29 23:43:30 pelle Exp $ $Log: LedgerStatementServlet.java,v $ Revision 1.1 2004/03/29 23:43:30 pelle The servlets now work and display the ledger contents. Revision 1.7 2004/03/29 20:05:16 pelle LedgerServlet works now at least for a straight non date restricted browse. Revision 1.6 2004/03/26 23:36:34 pelle The simple browse(book) now works on hibernate, I have implemented the other two, which currently don not constrain the query correctly. Revision 1.5 2004/03/25 22:04:46 pelle The first shell for the HibernateBookBrowser Revision 1.4 2004/03/21 00:48:36 pelle The problem with Enveloped signatures has now been fixed. It was a problem in the way transforms work. I have bandaided it, but in the future if better support for transforms need to be made, we need to rethink it a bit. Perhaps using the new crypto channel's in neuclear-commons. Revision 1.3 2004/01/02 23:18:34 pelle Added StatementFactory pattern and refactored the ledger to use it. Revision 1.2 2003/12/31 00:39:04 pelle Added Drivers for handling different Database dialects in the entity model. Added BookBrowser pattern to ledger, simplifying the statement writing process. Revision 1.1 2003/12/29 22:40:15 pelle Added LedgerServlet and friends */ /** * User: pelleb * Date: Dec 26, 2003 * Time: 5:54:05 PM */ public class LedgerStatementServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { serviceid = ServletTools.getInitParam("serviceid", config); try { ledger = new PopulatedSimpleLedger(serviceid); } catch (Exception e) { throw new ServletException(e); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); ServletTools.printHeader(out, request, "Account Statement"); String url = ServletTools.getAbsoluteURL(request, request.getServletPath()); try { Principal user = request.getUserPrincipal(); String book = request.getPathInfo(); if (Utility.isEmpty(book)) book = user.getName(); else book = book.substring(1); out.println("<h1>Statement</h1>"); out.print("<h3>"); out.print(book); out.println("</h3><hr>"); out.println("Balance: "); out.println(ledger.getBalance(book)); out.println("<br/>Available: "); out.println(ledger.getAvailableBalance(book)); out.print("<hr><a href=\"../browse/"); out.print(book); out.print("\">View Transactions</a>"); } catch (LowlevelLedgerException e) { e.printStackTrace(); } } private String serviceid; private Ledger ledger; } |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:02
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/browser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675/src/java/org/neuclear/ledger/browser Modified Files: LedgerConfiguration.java Log Message: The servlets now work and display the ledger contents. Index: LedgerConfiguration.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/browser/LedgerConfiguration.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LedgerConfiguration.java 23 Mar 2004 22:01:42 -0000 1.3 --- LedgerConfiguration.java 29 Mar 2004 23:43:30 -0000 1.4 *************** *** 4,7 **** --- 4,8 ---- import org.neuclear.ledger.Ledger; import org.neuclear.ledger.simple.SimpleLedger; + import org.neuclear.ledger.simple.PopulatedSimpleLedger; import org.picocontainer.Parameter; import org.picocontainer.defaults.ConstantParameter; *************** *** 27,30 **** --- 28,34 ---- $Id$ $Log$ + Revision 1.4 2004/03/29 23:43:30 pelle + The servlets now work and display the ledger contents. + Revision 1.3 2004/03/23 22:01:42 pelle Bumped version numbers for commons and xmlsig througout. *************** *** 50,54 **** // pico.registerComponentImplementation(StatementFactory.class, SimpleStatementFactory.class); // pico.registerComponentImplementation(Ledger.class,SQLLedger.class,new Parameter[] {new ConstantParameter("neu://test/bux")}); ! pico.registerComponentImplementation(Ledger.class, SimpleLedger.class, new Parameter[]{new ConstantParameter("neu://test/bux")}); } --- 54,58 ---- // pico.registerComponentImplementation(StatementFactory.class, SimpleStatementFactory.class); // pico.registerComponentImplementation(Ledger.class,SQLLedger.class,new Parameter[] {new ConstantParameter("neu://test/bux")}); ! pico.registerComponentImplementation(Ledger.class, PopulatedSimpleLedger.class, new Parameter[]{new ConstantParameter("test")}); } |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:02
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/simple In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675/src/java/org/neuclear/ledger/simple Added Files: PopulatedSimpleLedger.java Log Message: The servlets now work and display the ledger contents. --- NEW FILE: PopulatedSimpleLedger.java --- package org.neuclear.ledger.simple; import org.neuclear.ledger.UnBalancedTransactionException; import org.neuclear.ledger.LowlevelLedgerException; import org.neuclear.ledger.InvalidTransactionException; /* NeuClear Distributed Transaction Clearing Platform (C) 2003 Pelle Braendgaard This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: PopulatedSimpleLedger.java,v 1.1 2004/03/29 23:43:30 pelle Exp $ $Log: PopulatedSimpleLedger.java,v $ Revision 1.1 2004/03/29 23:43:30 pelle The servlets now work and display the ledger contents. */ /** * User: pelleb * Date: Mar 29, 2004 * Time: 7:36:18 PM */ public class PopulatedSimpleLedger extends SimpleLedger { public PopulatedSimpleLedger(String name) throws InvalidTransactionException, LowlevelLedgerException { super(name); transfer("mint","bob",10000,"Initial Funding"); transfer("mint","alice",10000,"Initial Funding"); for(int i=0;i<50;i++){ transfer("bob","carol", 50+i,"test"+i); } for(int i=0;i<50;i++){ transfer("alice","bob", 50+i,"test"+i); } } } |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:02
|
Update of /cvsroot/neuclear/neuclear-ledger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675 Modified Files: project.xml Log Message: The servlets now work and display the ledger contents. Index: project.xml =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger/project.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** project.xml 29 Mar 2004 20:05:17 -0000 1.17 --- project.xml 29 Mar 2004 23:43:29 -0000 1.18 *************** *** 77,81 **** <dependency> <id>picocontainer</id> ! <version>1.0-beta-1</version> <properties> <war.bundle>true</war.bundle> --- 77,81 ---- <dependency> <id>picocontainer</id> ! <version>1.0-beta-5</version> <properties> <war.bundle>true</war.bundle> |
|
From: Pelle B. <pe...@us...> - 2004-03-29 23:55:02
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21675/src/java/org/neuclear/ledger Added Files: LedgerController.java Log Message: The servlets now work and display the ledger contents. --- NEW FILE: LedgerController.java --- package org.neuclear.ledger; /* NeuClear Distributed Transaction Clearing Platform (C) 2003 Pelle Braendgaard This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: LedgerController.java,v 1.1 2004/03/29 23:43:29 pelle Exp $ $Log: LedgerController.java,v $ Revision 1.1 2004/03/29 23:43:29 pelle The servlets now work and display the ledger contents. */ /** * User: pelleb * Date: Mar 29, 2004 * Time: 9:35:30 PM */ public class LedgerController { public Ledger add(String id){ return null; } public Ledger get(String id) { return null; } public boolean exists(String id){ return false; } } |
|
From: <bug...@ve...> - 2004-03-29 21:37:38
|
Message: A new issue has been created in JIRA. --------------------------------------------------------------------- View the issue: http://jira.neuclear.org//browse/GL-24 Here is an overview of the issue: --------------------------------------------------------------------- Key: GL-24 Summary: Add LedgerController Type: New Feature Status: Open Priority: Major Original Estimate: Unknown Time Spent: Unknown Remaining: Unknown Project: NeuClear Ledger Fix Fors: r_0_4 Versions: r_0_4 Assignee: Pelle Braendgaard Reporter: Pelle Braendgaard Created: Mon, 29 Mar 2004 1:36 PM Updated: Mon, 29 Mar 2004 1:36 PM Description: Create LedgerController This manages and accesses multiple ledgers. The main interface should contain: get(String id) add(String id) exists(String id) --------------------------------------------------------------------- JIRA INFORMATION: This message is automatically generated by JIRA. If you think it was sent incorrectly contact one of the administrators: http://jira.neuclear.org//secure/Administrators.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |
|
From: <bug...@ve...> - 2004-03-29 20:49:36
|
Message:
The following issue has been closed.
Resolver: Pelle Braendgaard
Date: Mon, 29 Mar 2004 12:47 PM
This has been implemented. Currently it simply shows the real and available balances as well as a link to the browser.
---------------------------------------------------------------------
View the issue:
http://jira.neuclear.org//browse/GL-17
Here is an overview of the issue:
---------------------------------------------------------------------
Key: GL-17
Summary: Create LedgerStatementServlet
Type: New Feature
Status: Closed
Priority: Major
Resolution: FIXED
Original Estimate: Unknown
Time Spent: Unknown
Remaining: Unknown
Project: NeuClear Ledger
Fix Fors:
r_0_4
Assignee: Pelle Braendgaard
Reporter: Pelle Braendgaard
Created: Wed, 19 Nov 2003 12:29 PM
Updated: Mon, 29 Mar 2004 12:47 PM
Description:
Similar to LedgerBrowserServlet, but displays summary information for an account.
Summary Information should be as follows:
- Amount of Transactions in Period
- Sum of Inward Cashflow in Period
- Sum of Outgoing Cashflow in Period
- Starting and end balances
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://jira.neuclear.org//secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
|
|
From: <bug...@ve...> - 2004-03-29 20:28:16
|
Message:
The following issue has been closed.
Resolver: Pelle Braendgaard
Date: Mon, 29 Mar 2004 12:27 PM
The Hibernate Book Browser now works
---------------------------------------------------------------------
View the issue:
http://jira.neuclear.org//browse/GL-23
Here is an overview of the issue:
---------------------------------------------------------------------
Key: GL-23
Summary: Create Hibernate Book Browser
Type: New Feature
Status: Closed
Priority: Major
Resolution: FIXED
Original Estimate: Unknown
Time Spent: Unknown
Remaining: Unknown
Project: NeuClear Ledger
Components:
Browser
Fix Fors:
r_0_4
Versions:
r_0_4
Assignee: Pelle Braendgaard
Reporter: Pelle Braendgaard
Created: Thu, 25 Mar 2004 2:01 PM
Updated: Mon, 29 Mar 2004 12:27 PM
Description:
We need to be able to visually browser the Hibernate Ledger
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://jira.neuclear.org//secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
|
|
From: Pelle B. <pe...@us...> - 2004-03-29 20:25:22
|
Update of /cvsroot/neuclear/neuclear-ledger/src/webapp/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6815/src/webapp/WEB-INF Modified Files: web.xml Log Message: LedgerServlet works now at least for a straight non date restricted browse. Index: web.xml =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger/src/webapp/WEB-INF/web.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** web.xml 2 Jan 2004 23:18:35 -0000 1.2 --- web.xml 29 Mar 2004 20:05:17 -0000 1.3 *************** *** 2,30 **** <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> - <context-param> - <param-name>serviceid</param-name> - <param-value>neu://test/bux</param-value> - <description>NeuClear id of Service</description> - </context-param> - <context-param> - <param-name>title</param-name> - <param-value>NeuClear Sample E-Currency Application</param-value> - </context-param> - <context-param> - <param-name>datasource</param-name> - <param-value>jdbc/AssetDS</param-value> - </context-param> <context-param> ! <param-name>configurator</param-name> ! <param-value>org.neuclear.ledger.browser.LedgerConfiguration</param-value> </context-param> ! <listener> ! <listener-class>org.neuclear.commons.configuration.ServletContextContainer</listener-class> ! </listener> ! <servlet> ! <servlet-name>browser</servlet-name> ! <servlet-class>org.neuclear.ledger.servlets.LedgerServlet</servlet-class> ! <load-on-startup>1</load-on-startup> ! </servlet> <servlet-mapping> <servlet-name>browser</servlet-name> --- 2,30 ---- <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <context-param> ! <param-name>serviceid</param-name> ! <param-value>neu://test/bux</param-value> ! <description>NeuClear id of Service</description> </context-param> ! <context-param> ! <param-name>title</param-name> ! <param-value>NeuClear Sample E-Currency Application</param-value> ! </context-param> ! <context-param> ! <param-name>datasource</param-name> ! <param-value>jdbc/AssetDS</param-value> ! </context-param> ! <!-- <context-param> ! <param-name>configurator</param-name> ! <param-value>org.neuclear.ledger.browser.LedgerConfiguration</param-value> ! </context-param> ! <listener> ! <listener-class>org.neuclear.commons.configuration.ServletContextContainer</listener-class> ! </listener>--> ! <servlet> ! <servlet-name>browser</servlet-name> ! <servlet-class>org.neuclear.ledger.servlets.LedgerServlet</servlet-class> ! <load-on-startup>1</load-on-startup> ! </servlet> <servlet-mapping> <servlet-name>browser</servlet-name> |
|
From: Pelle B. <pe...@us...> - 2004-03-29 20:25:22
|
Update of /cvsroot/neuclear/neuclear-ledger/src/webapp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6815/src/webapp Added Files: index.html Log Message: LedgerServlet works now at least for a straight non date restricted browse. --- NEW FILE: index.html --- <html> <head><title>NeuClear Ledger</title></head> <body> Test application: <a href="browse/bob">Bob</a> </body> </html> |