FileDocCategorySizeDatePackage
ReceiveObject.javaAPI DocExample3676Sat Jan 13 14:28:26 GMT 2001javasec.samples.ch12

ReceiveObject.java

package javasec.samples.ch12;

import java.io.*;
import java.security.*;
import java.security.cert.*;
import java.util.*;
import javasec.samples.ch10.KeyStoreHandler;

public class ReceiveObject {
    private static void verifySigner(java.security.cert.Certificate c,
                          String name) throws CertificateException {
        java.security.cert.Certificate issuerCert = null;
        X509Certificate sCert = null;
        KeyStore ks = null;

        try {
            KeyStoreHandler ksh = new KeyStoreHandler(null);
            ks = ksh.getKeyStore();
        } catch (Exception e) {
            throw new CertificateException("Invalid keystore");
        }

        try {
            String signer = ks.getCertificateAlias(c);
            if (signer !=null){
                System.out.println("We know the signer as " + signer);
                return;
            }
            for (Enumeration alias = ks.aliases(); 
                              alias.hasMoreElements();){
                String s = (String) alias.nextElement();
                try {
                    sCert = (X509Certificate) ks.getCertificate(s);
                } catch (Exception e) {
                    continue;
                }
                if (name.equals(sCert.getSubjectDN().getName())){
                    issuerCert = sCert;
                    break;
                }
            }
        } catch(KeyStoreException kse) {
            throw new CertificateException("Invalid keystore");
        }
        if (issuerCert == null) {
            throw new CertificateException("No such certificate");
        }
        try {
            c.verify(issuerCert.getPublicKey());
        } catch (Exception e) {
            throw new CertificateException(e.toString());
        }
    }

    private static void processCertificate(X509Certificate x509)
                                    throws CertificateParsingException {
        Principal p;
        p = x509.getSubjectDN();
        System.out.println("This message was signed by " +
                            p.getName());
        p = x509.getIssuerDN();
        System.out.println("This certificate was provided by " +
                            p.getName());
        try {
            verifySigner(x509, p.getName());
        } catch (CertificateException ce) {
            System.out.println("We don