From: Max M. <max...@us...> - 2002-05-14 02:02:03
|
Update of /cvsroot/wonder/ProjectWonder/Frameworks/ERExtensionsJava In directory usw-pr-cvs1:/tmp/cvs-serv23953 Modified Files: ERXCheckCookies.java ERXCrypto.java ERXDirectActionHyperlink.java Log Message: JavaDoc Index: ERXCheckCookies.java =================================================================== RCS file: /cvsroot/wonder/ProjectWonder/Frameworks/ERExtensionsJava/ERXCheckCookies.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ERXCheckCookies.java 27 Apr 2002 21:45:42 -0000 1.2 --- ERXCheckCookies.java 14 May 2002 02:02:00 -0000 1.3 *************** *** 10,24 **** import com.webobjects.appserver.WOContext; ! /* This component will display is content (as in WOComponentContent) if ! it detects cookies are disabled */ public class ERXCheckCookies extends WOComponent { public ERXCheckCookies(WOContext aContext) { super(aContext); } ! public boolean isStateless() { return true; } public String string1() { return "<script LANGUAGE=\"JavaScript\">\n"+ --- 10,45 ---- import com.webobjects.appserver.WOContext; ! /** ! * This component will display is content (as in WOComponentContent) if ! * it detects cookies are disabled. This can be useful for displaying ! * messages to the user that they should have cookies enabled in order ! * to use different features of the application.<br/> ! * <br/> ! * No Bindings ! */ + // FIXME: Should be renamed: ERXJSCheckCookiesConditional + // ENHANCEME: Should support the negate binding public class ERXCheckCookies extends WOComponent { + /** + * Public constructor + * @param aContext a context + */ public ERXCheckCookies(WOContext aContext) { super(aContext); } ! ! /** ! * Component is stateless ! * @return true ! */ public boolean isStateless() { return true; } + /** + * First part of the javascript to check if cookies are + * enabled. + * @return first part of the js string + */ public String string1() { return "<script LANGUAGE=\"JavaScript\">\n"+ *************** *** 44,47 **** --- 65,72 ---- } + /** + * Second part of the js string + * @return second part of the js string. + */ public String string2() { return "\")\n"+ Index: ERXCrypto.java =================================================================== RCS file: /cvsroot/wonder/ProjectWonder/Frameworks/ERExtensionsJava/ERXCrypto.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ERXCrypto.java 27 Apr 2002 21:45:42 -0000 1.4 --- ERXCrypto.java 14 May 2002 02:02:00 -0000 1.5 *************** *** 1,9 **** ! // ! // ERXCrypto.java ! // Project ERExtensionsJava ! // ! // Created by patrice on Tue Jan 29 2002 ! // ! // A simple wrapper around Blowfish package er.extensions; --- 1,8 ---- ! /* ! * Copyright (C) NetStruxr, Inc. All rights reserved. ! * ! * This software is published under the terms of the NetStruxr ! * Public Software License version 0.5, a copy of which has been ! * included with this distribution in the LICENSE.NPL file. */ package er.extensions; *************** *** 17,36 **** import javax.crypto.spec.*; - // this class requires that you have JCE (javax.crypto and the sun provider) installed - // JCE is standard in the 1.4 JDK - // for 1.3 you can find it at http://java.sun.com/products/jce/index-121.html - // All, - // - // you will have to put the 4 JCE jars in your extensions directory - // (/Library/Java/Home/lib/ext on X) for ERExtensionsJava to build.. - // And edit /Library/Java/Home/lib/security/java.security, add the following line - // security.provider.4=com.sun.crypto.provider.SunJCE public class ERXCrypto { ! public static final Category cat = Category.getInstance(ERXCrypto.class); private static SecretKey secretKey() throws NoSuchAlgorithmException { String blowfishKey = System.getProperty("ERBlowfishCipherKey"); if (blowfishKey == null) { --- 16,62 ---- import javax.crypto.spec.*; + /* Compilation problems? READ THIS + * + * Note: this class requires that you have JCE (javax.crypto and the sun provider) + * installed JCE is standard in the 1.4 JDK + * for 1.3 you can find it at http://java.sun.com/products/jce/index-121.html + * + * You will have to put the 4 JCE jars in your extensions directory + * (/Library/Java/Home/lib/ext on X) for ERExtensionsJava to build.. + * And edit /Library/Java/Home/lib/security/java.security, add the following line + * security.provider.4=com.sun.crypto.provider.SunJCE + */ + /** + * Provides a nice wrapper around the blowfish cipher and + * the sha digest algorithms.<br/> + * <br/> + * The blowfish cipher is a two-way cipher meaning the original + * string that was encrypted can be retrieved. The blowfish + * cipher uses a secret key that should be set in the System + * properties using the key: <b>ERBlowfishCipherKey</b>. The way + * that this version of the blowfish cipher is enrcypted it is + * safe to use as a form value.<br/> + * <br/> + * The sha digest uses one-way encryption to form a hash of a + * given string. The digest formed is safe for use in form values + * and cookies. + */ public class ERXCrypto { ! ! /** logging support */ public static final Category cat = Category.getInstance(ERXCrypto.class); + /** Block size of blowfish encrypted strings */ + public final static int BLOCK_SIZE=8; + /** + * Generates a secret key from the System property + * <b>ERBlowfishCipherKey</b>. This secret key is + * used when generating the blowfish cipher. + * @return a secret key for the blowfish cipher + */ private static SecretKey secretKey() throws NoSuchAlgorithmException { + // FIXME: Should prefix the key as 'er.extensions.ERXBlowfishCipherKey' String blowfishKey = System.getProperty("ERBlowfishCipherKey"); if (blowfishKey == null) { *************** *** 41,47 **** } ! public final static int BLOCK_SIZE=8; ! ! private static Cipher createBlowfishCipher(int mode) { Cipher cipher=null; --- 67,79 ---- } ! /** ! * Creates a blowfish cipher for a given mode. ! * The two possible modes for a blowfish cipher ! * are: ENCRYPT and DECRYPT. ! * @param mode of the cipher (encrypting or decrypting) ! * @return a blowfish cipher initialized with the given ! * mode and with the <code>secretKey</code> ! * from the above method. ! */ private static Cipher createBlowfishCipher(int mode) { Cipher cipher=null; *************** *** 55,59 **** --- 87,97 ---- } + /** Used to cache the blowfish encryption cipher */ private static Cipher _encryptCipher; + /** + * Method used to return the shared instance of the + * blowfish encryption cipher. + * @return blowfish encryption cipher + */ private static Cipher encryptCipher() { if (_encryptCipher == null) { *************** *** 62,67 **** return _encryptCipher; } ! private static Cipher _decryptCipher; private static Cipher decryptCipher() { if (_decryptCipher == null) { --- 100,110 ---- return _encryptCipher; } ! /** Used to cache the blowfish decryption cipher */ private static Cipher _decryptCipher; + /** + * Method used to return the shared instance of the + * blowfish decryption cipher. + * @return blowfish decryption cipher + */ private static Cipher decryptCipher() { if (_decryptCipher == null) { *************** *** 70,75 **** return _decryptCipher; } ! private final static String hexDigits = "0123456789abcdef"; public static String bytesToString(byte[] bytes) { StringBuffer result=new StringBuffer(); --- 113,120 ---- return _decryptCipher; } ! ! // DELETEME: Duplicate ivar in ERXExtensions private final static String hexDigits = "0123456789abcdef"; + // DELETEME: Duplicate method in ERXExtensions public static String bytesToString(byte[] bytes) { StringBuffer result=new StringBuffer(); *************** *** 82,88 **** } ! public static String shaEncode(String string) { - byte[] buf=string.getBytes(); MessageDigest md; --- 127,142 ---- } ! /** ! * Sha encodes a given string. The resulting ! * string is safe to use in urls and cookies. ! * From the digest of the string it is nearly ! * impossible to determine what the original ! * string was. Running the same string through ! * the Sha digest multiple times will always ! * produce the same hash. ! * @param string to be put through the sha digest ! * @return hashed form of the given string ! */ public static String shaEncode(String string) { byte[] buf=string.getBytes(); MessageDigest md; *************** *** 96,101 **** } ! ! // provide encoding suitable for use in a URL public static String blowfishEncode(String s) { StringBuffer result=new StringBuffer(); --- 150,167 ---- } ! /** ! * Blowfish encodes a given string using the ! * secret key specified in the System property: ! * <b>ERBlowfishCipherKey</b>. The blowfish cipher is ! * a two way cipher meaning that given the secret key ! * you can de-cipher what the original string is. For ! * one-way encryption look at methods dealing with the ! * Sha alogrithm. To decode a blowfish encoded string ! * use the method: <code>blowfishDecode</code>. The ! * resultant string from encoding a string is safe for ! * use in urls and cookies. ! * @param s string to be encrypted ! * @return encrypted string ! */ public static String blowfishEncode(String s) { StringBuffer result=new StringBuffer(); *************** *** 129,133 **** } ! public static String blowfishDecode(String s) { int length=s.length(); --- 195,208 ---- } ! /** ! * Decodes a blowfish encoded string. Note that ! * the originally encoded string should have been ! * encoded with the same secret key as is used for ! * the decoding cipher or else you are going to get ! * garbage. To encode a string have a look at ! * <code>blowfishEncode</code>. ! * @param s blowfish encoded string to be decoded ! * @return decode clear text string ! */ public static String blowfishDecode(String s) { int length=s.length(); *************** *** 171,174 **** --- 246,256 ---- } + /** + * Decodes all of the values from a given dictionary + * using blowfish. + * @param dict dictionary of key value pairs where the + * values are blowfish encoded strings + * @return a dictionary of decoded key-value pairs + */ public static NSMutableDictionary decodedFormValuesDictionary(NSDictionary dict) { NSMutableDictionary result = new NSMutableDictionary(); *************** *** 182,186 **** return result; } ! } ! ! --- 264,266 ---- return result; } ! } \ No newline at end of file Index: ERXDirectActionHyperlink.java =================================================================== RCS file: /cvsroot/wonder/ProjectWonder/Frameworks/ERExtensionsJava/ERXDirectActionHyperlink.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ERXDirectActionHyperlink.java 12 Feb 2002 19:29:16 -0000 1.2 --- ERXDirectActionHyperlink.java 14 May 2002 02:02:00 -0000 1.3 *************** *** 24,30 **** public final static String SUFFIX_MARKER="**SUFFIX**"; public static final Category cat = Category.getInstance(ERXDirectActionHyperlink.class); ! protected String oneTime; public boolean synchronizesVariablesWithBindings() { return false; } --- 24,31 ---- public final static String SUFFIX_MARKER="**SUFFIX**"; + /** logging support */ public static final Category cat = Category.getInstance(ERXDirectActionHyperlink.class); ! // DELETEME: Not needed protected String oneTime; public boolean synchronizesVariablesWithBindings() { return false; } *************** *** 125,129 **** String entityName = key.substring(0, key.indexOf(separator)); cat.debug("Decoding entity named: " + entityName); ! // FIXME: This needs to be made case insensitive. EOEntity entity = EOModelGroup.defaultGroup().entityNamed(entityName); if (entity != null) { --- 126,131 ---- String entityName = key.substring(0, key.indexOf(separator)); cat.debug("Decoding entity named: " + entityName); ! // FIXME: This needs to be made case insensitive and should be getting the ! // model group from the ec EOEntity entity = EOModelGroup.defaultGroup().entityNamed(entityName); if (entity != null) { *************** *** 157,161 **** return encoded; } - public NSArray allObjectsForFormValues() { --- 159,162 ---- *************** *** 179,187 **** StringBuffer result=new StringBuffer(ADAPTOR_PREFIX_MARKER); result.append(".woa/wa/"); result.append(valueForBinding("actionClass")); ! result.append('/'); // target=_top; result.append(valueForBinding("directActionName")); ! result.append('?'); // target=_top; ! if(hasBinding("bindingDictionary")) { NSDictionary bdgs = (NSDictionary)valueForBinding("bindingDictionary"); if (bdgs != null) { --- 180,190 ---- StringBuffer result=new StringBuffer(ADAPTOR_PREFIX_MARKER); result.append(".woa/wa/"); + // FIXME: Should make actionClass optional result.append(valueForBinding("actionClass")); ! result.append('/'); result.append(valueForBinding("directActionName")); ! result.append('?'); ! // FIXME: Rename binding to encryptedBindingDictionary ! if (hasBinding("bindingDictionary")) { NSDictionary bdgs = (NSDictionary)valueForBinding("bindingDictionary"); if (bdgs != null) { *************** *** 213,216 **** --- 216,220 ---- } } + // FIXME: Ditch this if(hasBinding("id")){ String v= stringForBinding ("id"); *************** *** 223,226 **** --- 227,231 ---- cat.error("Invalid id specified "+v); } + // FIXME: Ditch this if (hasBinding("id2")) { // We should have a better way of passing args than id and id2!! //result.append('&'); // target=_top; *************** *** 233,236 **** --- 238,242 ---- } else cat.error("Invalid id2 "+v); } + // FIXME: Ditch this if (hasBinding("c") && canGetValueForBinding("c")) { appendSeparatorIfLastNot('&', '?', result); *************** *** 239,242 **** --- 245,249 ---- result.append(eCode); } + // FIXME: Ditch this if (hasBinding("loginMessageName") && canGetValueForBinding("loginMessageName")){ appendSeparatorIfLastNot('&', '?', result); *************** *** 244,247 **** --- 251,255 ---- result.append(valueForBinding("loginMessageName")); } + // FIMXE: Bad, need to get rid of this oneTime stuff. //If the OneTime is turned on, then add code and dateCreated keyValue pairs in the href. if( hasBinding("oneTime") && ((Integer)valueForBinding("oneTime")).intValue()==1){ |