public static void main(String[] args) throws Exception { s = new String("This is just a test!"); byte[] asciiBytes = s.getBytes("ASCII"); byte[] utf8Bytes = s.getBytes("UTF8"); byte[] iso8859_1Bytes = s.getBytes("ISO-8859-1"); byte[] unicodeBytes = s.getBytes("UnicodeBigUnmarked"); byte[] unicodeBytes2 = getBytes(s); // test that unicode encoder is the correct one if (!equalBytes(unicodeBytes, unicodeBytes2)) throw new Exception("Problem with unicode encoder being used."); FileOutputStream fout = new FileOutputStream(fileName); DerOutputStream derOut = new DerOutputStream(); System.out.println("Writing Java string out as various DER" + " encoded Strings now..."); derOut.putUTF8String(s); derOut.putPrintableString(s); derOut.putIA5String(s); derOut.putT61String(s); derOut.putBMPString(s); derOut.derEncode(fout); fout.close(); FileInputStream fis = new FileInputStream(fileName); byte[] data = new byte[fis.available()]; fis.read(data); DerInputStream derIn = new DerInputStream(data); fis.close(); System.out.println("\nReading Strings back as DerValue's...\n"); DerValue der; der = derIn.getDerValue(); verifyDER("UTF8", der, DerValue.tag_UTF8String, utf8Bytes); der = derIn.getDerValue(); verifyDER("Printable", der, DerValue.tag_PrintableString, asciiBytes); der = derIn.getDerValue(); verifyDER("IA5", der, DerValue.tag_IA5String, asciiBytes); der = derIn.getDerValue(); verifyDER("T61", der, DerValue.tag_T61String, iso8859_1Bytes); der = derIn.getDerValue(); verifyDER("BMP", der, DerValue.tag_BMPString, unicodeBytes); if (derIn.available() > 0) throw new Exception("DerInputStream has extra data!"); derIn.reset(); System.out.println("Reading Strings back as Strings...\n"); verifyString("UTF8", derIn.getUTF8String()); verifyString("Printable", derIn.getPrintableString()); verifyString("IA5", derIn.getIA5String()); verifyString("T61", derIn.getT61String()); verifyString("BMP", derIn.getBMPString()); }