Class ProtectedString
- All Implemented Interfaces:
- Traceable,- FFDCSelfIntrospectable
toString().
 Instances of this class are immutable.
 
 This class does not provide a constructor that takes a String, and it does
 not have a method to convert the contents to a String. This is deliberate to
 encourage the caller to never store passwords in a String, which might be
 accidentally logged in trace or FFDC. In particular, callers must avoid
 storing a String even indirectly, such as in a Map. Additionally, callers
 must be careful to avoid accidentally logging in trace or FFDC
 the char[] used to construct the instance or that is returned
 from getChars().
 
 
This implementation does not protect against the string being visible in clear text in JVM memory dumps. This class does not provide additional protection against the string being accessible via reflection, so callers should be careful to use private accessibility.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final ProtectedStringA password object that holds the equivalent of the empty stringstatic final ProtectedStringA password object that holds null
- 
Constructor SummaryConstructorsConstructorDescriptionProtectedString(char[] password) Construct a ProtectedString (typically a password) from an array of characters.
- 
Method SummaryModifier and TypeMethodDescriptionbooleanDetermine if this password is the same as another object NOTE: As with all equals() methods, this implementation obeys the requirements of java.lang.Object.equals().char[]getChars()Return the protected password (Note: it is then the job of the caller to prevent its copies reaching trace, ffdc or converting it to a stringinthashCode()return a hash code for this PasswordString[]Provide details on the state of this object to ffdc, hiding the actual contents of the passwordbooleanisEmpty()Return true if password is either null or has no characters (use in situations where some kind of password is required)toString()Convert the password to a string, revealing only if it is null or non-null.Convert the password to a string for tracing purposes.
- 
Field Details- 
NULL_PROTECTED_STRINGA password object that holds null
- 
EMPTY_PROTECTED_STRINGA password object that holds the equivalent of the empty string
 
- 
- 
Constructor Details- 
ProtectedStringpublic ProtectedString(char[] password) Construct a ProtectedString (typically a password) from an array of characters. The characters will not be revealed to trace or ffdc by this class- Parameters:
- chars- The password to be protected
 
 
- 
- 
Method Details- 
getCharspublic char[] getChars()Return the protected password (Note: it is then the job of the caller to prevent its copies reaching trace, ffdc or converting it to a string- Returns:
- char[] The protected password
 
- 
toStringConvert the password to a string, revealing only if it is null or non-null. In particular note that it is NOT the password.
- 
toTraceStringConvert the password to a string for tracing purposes. This provides a string that, for the same password, will be the same string, but will be different for different password (well, almost certainly different) and/or different class loaders (of Password). The password cannot be deduced from the trace string- Specified by:
- toTraceStringin interface- Traceable
- Returns:
- String A string for the password for trace purposes
 
- 
introspectSelfProvide details on the state of this object to ffdc, hiding the actual contents of the password- Specified by:
- introspectSelfin interface- FFDCSelfIntrospectable
- Returns:
- String[] An array of strings to be added to the ffdc log
 
- 
equalsDetermine if this password is the same as another object NOTE: As with all equals() methods, this implementation obeys the requirements of java.lang.Object.equals(). In particular that requires that if a.equals(b), then b.equals(a). That means that we only check against other ProtectedString objects. If we returned true for any String that was passed in, we would then need to modify java.lang.String's implementation so that it returned true when passed in the correct ProtectedString....
- 
hashCodepublic int hashCode()return a hash code for this Password
- 
isEmptypublic boolean isEmpty()Return true if password is either null or has no characters (use in situations where some kind of password is required)- Returns:
- true if password is null or has no characters.
 
 
-