|
From: <pe...@us...> - 2003-10-01 19:08:37
|
Update of /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/verifier
In directory sc8-pr-cvs1:/tmp/cvs-serv19838/src/java/org/neuclear/id/verifier
Modified Files:
VerifyingReader.java
Log Message:
Changed XML Format. Now NameSpace has been modified to Identity also the
xml namespace prefix nsdl has been changed to neuid.
The standard constants for using these have been moved into NSTools.
The NamedObjectBuilder can also now take an Element, such as an unsigned template.
Index: VerifyingReader.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/id/verifier/VerifyingReader.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** VerifyingReader.java 1 Oct 2003 17:05:38 -0000 1.2
--- VerifyingReader.java 1 Oct 2003 19:08:31 -0000 1.3
***************
*** 1,25 ****
package org.neuclear.id.verifier;
! import org.neudist.xml.xmlsec.SignedElement;
! import org.neudist.xml.xmlsec.XMLSecurityException;
! import org.neudist.xml.xmlsec.XMLSecTools;
! import org.neudist.xml.XMLTools;
! import org.neudist.xml.XMLException;
! import org.neudist.utils.NeudistException;
! import org.neudist.crypto.CryptoTools;
! import org.dom4j.Namespace;
import org.dom4j.Element;
import org.dom4j.QName;
- import org.dom4j.DocumentHelper;
import org.neuclear.id.*;
import org.neuclear.id.resolver.NSResolver;
- import org.neuclear.id.cache.NSCache;
import org.neuclear.time.TimeTools;
- import java.security.PublicKey;
import java.io.InputStream;
! import java.util.Map;
! import java.util.HashMap;
import java.sql.Timestamp;
/*
--- 1,20 ----
package org.neuclear.id.verifier;
! import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.neuclear.id.*;
import org.neuclear.id.resolver.NSResolver;
import org.neuclear.time.TimeTools;
+ import org.neudist.crypto.CryptoTools;
+ import org.neudist.utils.NeudistException;
+ import org.neudist.xml.XMLTools;
+ import org.neudist.xml.xmlsec.XMLSecTools;
import java.io.InputStream;
! import java.security.PublicKey;
import java.sql.Timestamp;
+ import java.util.HashMap;
+ import java.util.Map;
/*
***************
*** 43,46 ****
--- 38,47 ----
$Id$
$Log$
+ Revision 1.3 2003/10/01 19:08:31 pelle
+ Changed XML Format. Now NameSpace has been modified to Identity also the
+ xml namespace prefix nsdl has been changed to neuid.
+ The standard constants for using these have been moved into NSTools.
+ The NamedObjectBuilder can also now take an Element, such as an unsigned template.
+
Revision 1.2 2003/10/01 17:05:38 pelle
Moved the NeuClearCertificate class to be an inner class of Identity.
***************
*** 64,71 ****
*/
public class VerifyingReader {
! private VerifyingReader(){
! readers=new HashMap();
! readers.put("Identity",new Identity.Reader());
! defaultReader=new SignedNamedObject.Reader();
}
--- 65,72 ----
*/
public class VerifyingReader {
! private VerifyingReader() {
! readers = new HashMap();
! readers.put("Identity", new Identity.Reader());
! defaultReader = new SignedNamedObject.Reader();
}
***************
*** 73,76 ****
--- 74,78 ----
return new VerifyingReader();
}
+
/**
* Read Object from input stream.
***************
*** 81,109 ****
*/
public SignedNamedObject read(InputStream is) throws NeudistException {
! Element elem=XMLTools.loadDocument(is).getRootElement();
! String name=NSTools.normalizeNameURI(elem.attributeValue(getNameAttrQName()));
! String signatoryName=NSTools.getParentNSURI(name);
! PublicKey pubs[]=null;
! Identity signatory=NSResolver.resolveIdentity(signatoryName);
! if (XMLSecTools.verifySignature(elem,signatory.getPublicKey())) {
//I should be able to get this from within. This is just a quick hack.
! String digest=new String(CryptoTools.digest(XMLSecTools.canonicalize(elem)));
! Timestamp timestamp=TimeTools.parseTimeStamp(elem.attributeValue("timestamp"));
! return resolveReader(elem).read(elem,name,signatory, digest,timestamp);
} else
! throw new InvalidIdentityException(name+" isnt valid");
}
! private NamedObjectReader resolveReader(Element elem){
! NamedObjectReader reader=(NamedObjectReader) readers.get(elem.getName());
! if (reader==null)
! reader=defaultReader;
return reader;
}
! private static QName getNameAttrQName() {
! return DocumentHelper.createQName("name",SignedNamedObject.NS_NSDL);
}
private Map readers;
private NamedObjectReader defaultReader;
--- 83,112 ----
*/
public SignedNamedObject read(InputStream is) throws NeudistException {
! Element elem = XMLTools.loadDocument(is).getRootElement();
! String name = NSTools.normalizeNameURI(elem.attributeValue(getNameAttrQName()));
! String signatoryName = NSTools.getParentNSURI(name);
! PublicKey pubs[] = null;
! Identity signatory = NSResolver.resolveIdentity(signatoryName);
! if (XMLSecTools.verifySignature(elem, signatory.getPublicKey())) {
//I should be able to get this from within. This is just a quick hack.
! String digest = new String(CryptoTools.digest(XMLSecTools.canonicalize(elem)));
! Timestamp timestamp = TimeTools.parseTimeStamp(elem.attributeValue("timestamp"));
! return resolveReader(elem).read(elem, name, signatory, digest, timestamp);
} else
! throw new InvalidIdentityException(name + " isnt valid");
}
! private NamedObjectReader resolveReader(Element elem) {
! NamedObjectReader reader = (NamedObjectReader) readers.get(elem.getName());
! if (reader == null)
! reader = defaultReader;
return reader;
}
! private static QName getNameAttrQName() {
! return DocumentHelper.createQName("name", NSTools.NS_NEUID);
}
+
private Map readers;
private NamedObjectReader defaultReader;
|