import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.KeyStore;
import java.security.PublicKey;
import java.security.cert.CertPath;
import java.security.cert.CertPathValidator;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.PKIXCertPathValidatorResult;
import java.security.cert.PKIXParameters;
import java.security.cert.TrustAnchor;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
public class MainClass {
public static void main(String args[]) throws Exception {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
List mylist = new ArrayList();
FileInputStream in = new FileInputStream(args[0]);
Certificate c = cf.generateCertificate(in);
mylist.add(c);
CertPath cp = cf.generateCertPath(mylist);
FileInputStream kin = new FileInputStream(args[0]);
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(kin, args[1].toCharArray());
PKIXParameters params = new PKIXParameters(ks);
params.setRevocationEnabled(false);
CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult) cpv.validate(cp, params);
PublicKey pbk = result.getPublicKey();
byte[] pkenc = pbk.getEncoded();
BigInteger pk = new BigInteger(pkenc);
System.out.println(pk.toString(16));
TrustAnchor anc = result.getTrustAnchor();
X509Certificate xc = anc.getTrustedCert();
System.out.println(xc.getSubjectDN());
System.out.println(xc.getIssuerDN());
}
}