Java Cryptography by Jonathan B. Knudsen Unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. This page was updated on December 20, 2001. Here's the key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification UNCONFIRMED errors and comments from readers: (13) Third full paragraph: "Internet newsgroups" Should be: "Usenet newsgroups" (47) Middle of page; In the SeederDialog.setupWindow the last three lines of the method say: t1.addKeyListener(mSeeder); t1.addKeyListener(this); t1.requestFocus(); Using JDK1.4.2_02 this doesn't seem to work. I had to change the lines to: SeederDialog.this.addKeyListener(mSeeder); SeederDialog.this.addKeyListener(this); SeederDialog.this.requestFocus(); {106} last line; method load usage is: load(InputStream stream, char[] password) Notice the 2nd parameter is array of char, but not a String ! [117] 1st code segment; The code segment reads : X509Certificate c = X509Certificate.getInstance(certificateData); There is no such method getInstance() in the X509Certificate class. How about : InputStream inStream = new FileInputStream("fileName-of-cert"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); inStream.close(); [136] entire code segment; The 'Cloak' class example imports java.security.* and javax.crypto.*; This will result in an ambiguous class exception as both packages implement the Cipher class. It appears that it is the javax.crypto (JCE) Cipher that is required so you should change the java.security.* import statement to java.security.Key; as it seems that it is only this class that will be required from that package.