Enum EncryptedFieldTable.EFTYPE

java.lang.Object
java.lang.Enum<EncryptedFieldTable.EFTYPE>
pygar.documents.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 EFTYPE enumeration recites representation types that may be found while reading an XML statement.

The representation has three significant features:

  1. the format of a value when written as string in an XML statement and
  2. 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
  3. 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

    Nested classes/interfaces inherited from class java.lang.Enum

    java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
  • 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.

    Methods inherited from class java.lang.Enum

    clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait