Enum EncryptedFieldTable.EFTYPE
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable<EncryptedFieldTable.EFTYPE>
,java.lang.constant.Constable
- Enclosing class:
- EncryptedFieldTable
public static enum EncryptedFieldTable.EFTYPE extends java.lang.Enum<EncryptedFieldTable.EFTYPE>
The representation has three significant features:
- the format of a value when written as string in an XML statement and
- The classification of the type as exact or real. Exact values are basically strings and integer numbers, which - when encrypted - are strongly encrypted. The real types have a finite precision and when encrypted are weakly encrypted in a manner that conceals the true value without disrupting the numerical comparisons between concealed values and
- whether the field is a single value, a list of values, or a range of values.
It provides a basic classification to guide the partial encryption on the client side or the matching of encrypted fields on the match maker side.
The F_CLEAR and F_SUPPRESS types govern what happens to fields that do not have any other encryption type. These two types are necessary because XML documents have management fields that may be kept unencrypted in order to facilitate the document flow. These fields should not contain any sensitive information. To designate such a field, we mark it as F_CLEAR and it will pass through without encryption. In other cases, the handling of the field depends on the policies established for the matching engagement. There may be fields that are simply not desired during the matching and these should be designated by the enum value F_SURPRESS. A field that is so designated is removed from the document during encryption.
The action taken for any field that is not listed in this table is determined by the value of FTYPE_DEFAULT. The default depends on the particular application, but, if there is any doubt, use F_SUPPRESS.
The type of a simple string field is F_STRING. Such a field may also be used to hold the name of an individual or place. However, many individuals or places may have aliases. Thus, the matchmaking process may be different for strings representing names. For this reason, the F_NAME_STRING enum value is provided.
An F_LIST field is a comma-separated list of strings. Each string in the list is encrypted in the same way as F_STRING. However, an F_LIST may be verified against the list of available choices. An object that implements this interface maintains a list of choices for each field.
The F_INT_EXACT is a number represented as a string value or a Java int or long.
The preceding types: F_STRING, F_NAME_STRING, F_LIST, and F_INT_EXACT are encrypted using standard encryption producing a hexadecimal representation of the output of applying encryption to the string value of the clear text value. In contrast, the remaining types: F_REAL and F_REAL_RANGE are treated as numbers. An F_REAL is converted to a new number using the encryption key and the pair of numbers defining an F_REAL_RANGE value is converted to a new pair. This type of encryption is adopted so that range overlap calculations are possible; but, that means that the encryption is less secure against statistical data mining. According to some definitions of encryption, this process does not qualify and for that reason might be best referred to as concealing the numeric value with the encryption key.
The standard recommendation applies: don't use a real number type like float or double and expect to compare for exact equality. Hence there is no EFTYPE for exact reals.
There are also types to be used with integer ranges: F_INT and F_INT_RANGE. It is possible to compare an F_INT with an F_INT_RANGE to determine whether the F_INT lies in the range and to determine the overlap of two F_INT_RANGE values.
Both integers and reals provide the following degree of flexibility to handle the needs of the matching operations. There may be contexts where either a single value or a range may appear. If that is possible and allowed, then the field should be labeled as F_INT_RANGE or F_REAL_RANGE. The terms F_INT and F_REAL imply that the field that is so named may contain only a single value.
-
Nested Class Summary
-
Enum Constant Summary
Enum Constants Enum Constant Description F_CLEAR
F_INT
F_INT_EXACT
F_INT_RANGE
F_LIST
F_NAME_STRING
F_REAL
F_REAL_RANGE
F_STRING
F_SUPPRESS
-
Method Summary
Modifier and Type Method Description static EncryptedFieldTable.EFTYPE
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.static EncryptedFieldTable.EFTYPE[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
Enum Constant Details
-
Method Details
-
values
Returns an array containing the constants of this enum type, in the order they are declared.- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
java.lang.IllegalArgumentException
- if this enum type has no constant with the specified namejava.lang.NullPointerException
- if the argument is null
-