* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
public final Object issuerUniqueID;
public final Object subjectUniqueID;
public final Vector extensions;
public final Object issuerUniqueID;
public final Object subjectUniqueID;
public final Vector extensions;
public Certificate(InputStream is) throws IOException {
int i;
RecordingInputStream certIS = new RecordingInputStream(is);
public Certificate(InputStream is) throws IOException {
int i;
RecordingInputStream certIS = new RecordingInputStream(is);
tbsCertBytes = tbsCertIS.getBytes();
signatureAlgorithm = new AlgorithmIdentifier(certSequence.readObject());
tbsCertBytes = tbsCertIS.getBytes();
signatureAlgorithm = new AlgorithmIdentifier(certSequence.readObject());
- if(tbsSequence.elementAt(i) instanceof DERTaggedObject)
- version = (Number)((DERTaggedObject)tbsSequence.elementAt(i++)).object;
+ if(tbsSequence.elementAt(i) instanceof DER.TaggedObject)
+ version = (Number)((DER.TaggedObject)tbsSequence.elementAt(i++)).object;
else
version = new Integer(0);
serialNo = (Number) tbsSequence.elementAt(i++);
AlgorithmIdentifier signatureAlgorithm2 = new AlgorithmIdentifier(tbsSequence.elementAt(i++));
if(!signatureAlgorithm2.equals(signatureAlgorithm))
else
version = new Integer(0);
serialNo = (Number) tbsSequence.elementAt(i++);
AlgorithmIdentifier signatureAlgorithm2 = new AlgorithmIdentifier(tbsSequence.elementAt(i++));
if(!signatureAlgorithm2.equals(signatureAlgorithm))
- throw new DERException("AlgoritmIdentifier mismatch " + signatureAlgorithm + " vs " + signatureAlgorithm2);
- issuer = new X509Name(tbsSequence.elementAt(i++));
+ throw new DER.Exception("AlgoritmIdentifier mismatch " + signatureAlgorithm + " vs " + signatureAlgorithm2);
+ issuer = new X509.Name(tbsSequence.elementAt(i++));
Vector validity = (Vector) tbsSequence.elementAt(i++);
startDate = (Date) validity.elementAt(0);
endDate = (Date) validity.elementAt(1);
Vector validity = (Vector) tbsSequence.elementAt(i++);
startDate = (Date) validity.elementAt(0);
endDate = (Date) validity.elementAt(1);
Vector publicKeyInfo = (Vector) tbsSequence.elementAt(i++);
publicKeyAlgorithm = new AlgorithmIdentifier(publicKeyInfo.elementAt(0));
Vector publicKeyInfo = (Vector) tbsSequence.elementAt(i++);
publicKeyAlgorithm = new AlgorithmIdentifier(publicKeyInfo.elementAt(0));
Object issuerUniqueID_=null,subjectUniqueID_=null;
Vector extensions_=null;
for(;i < tbsSequence.size();i++) {
Object issuerUniqueID_=null,subjectUniqueID_=null;
Vector extensions_=null;
for(;i < tbsSequence.size();i++) {
String oid = (String) extension.elementAt(0);
byte[] data = (byte[]) extension.elementAt(extension.size()-1);
if(oid.equals(BASIC_CONSTRAINTS))
String oid = (String) extension.elementAt(0);
byte[] data = (byte[]) extension.elementAt(extension.size()-1);
if(oid.equals(BASIC_CONSTRAINTS))
}
certBytes = certIS.getBytes();
}
public String getSubjectField(String fieldID) { return subject.get(fieldID); }
}
certBytes = certIS.getBytes();
}
public String getSubjectField(String fieldID) { return subject.get(fieldID); }
- public RSAPublicKey getRSAPublicKey() throws DERException {
- if(!RSA_ENCRYPTION.equals(publicKeyAlgorithm.id)) throw new DERException("This isn't an RSA public key");
+ public RSA.PublicKey getRSAPublicKey() throws DER.Exception {
+ if(!RSA_ENCRYPTION.equals(publicKeyAlgorithm.id)) throw new DER.Exception("This isn't an RSA public key");
try {
Digest digest;
if(signatureAlgorithm.id.equals(MD5_WITH_RSA_ENCRYPTION)) digest = new MD5();
else if(signatureAlgorithm.id.equals(SHA1_WITH_RSA_ENCRYPTION)) digest = new SHA1();
else if(signatureAlgorithm.id.equals(MD2_WITH_RSA_ENCRYPTION)) digest = new MD2();
try {
Digest digest;
if(signatureAlgorithm.id.equals(MD5_WITH_RSA_ENCRYPTION)) digest = new MD5();
else if(signatureAlgorithm.id.equals(SHA1_WITH_RSA_ENCRYPTION)) digest = new SHA1();
else if(signatureAlgorithm.id.equals(MD2_WITH_RSA_ENCRYPTION)) digest = new MD2();
PKCS1 pkcs1 = new PKCS1(new RSA(rsapk.modulus,rsapk.exponent,true));
byte[] d = pkcs1.decode(signature.data);
PKCS1 pkcs1 = new PKCS1(new RSA(rsapk.modulus,rsapk.exponent,true));
byte[] d = pkcs1.decode(signature.data);
byte[] signedDigest = (byte[]) v.elementAt(1);
if(signedDigest.length != digest.getDigestSize()) return false;
byte[] signedDigest = (byte[]) v.elementAt(1);
if(signedDigest.length != digest.getDigestSize()) return false;
System.err.println("Start Date: " + cert.startDate);
System.err.println("End Date: " + cert.endDate);
System.err.println("SHA1 Fingerprint: " + prettyBytes(cert.getSHA1Fingerprint()));
System.err.println("Start Date: " + cert.startDate);
System.err.println("End Date: " + cert.endDate);
System.err.println("SHA1 Fingerprint: " + prettyBytes(cert.getSHA1Fingerprint()));
System.err.println("Modulus: " + prettyBytes(key.modulus.toByteArray()));
System.err.println("Exponent: " + key.exponent);
System.err.println("Signature: " + prettyBytes(cert.signature.data));
System.err.println("Modulus: " + prettyBytes(key.modulus.toByteArray()));
System.err.println("Exponent: " + key.exponent);
System.err.println("Signature: " + prettyBytes(cert.signature.data));