Class KeyMetadata


  • public class KeyMetadata
    extends Object
    Parquet encryption specification defines "key metadata" as an arbitrary byte array, generated by file writers for each encryption key, and passed to the low level API for storage in the file footer . The "key metadata" field is made available to file readers to enable recovery of the key. This simple interface can be utilized for implementation of any key management scheme. The keytools package (PARQUET-1373) implements one approach, of many possible, to key management and to generation of the "key metadata" fields. This approach, based on the "envelope encryption" pattern, allows to work with KMS servers. It keeps the actual material, required to recover a key, in a "key material" object (see the KeyMaterial class for details). KeyMetadata class writes (and reads) the "key metadata" field as a flat json object, with the following fields: 1. "keyMaterialType" - a String, with the type of key material. In the current version, only one value is allowed - "PKMT1" (stands for "parquet key management tools, version 1") 2. "internalStorage" - a boolean. If true, means that "key material" is kept inside the "key metadata" field. If false, "key material" is kept externally (outside Parquet files) - in this case, "key metadata" keeps a reference to the external "key material". 3. "keyReference" - a String, with the reference to the external "key material". Written only if internalStorage is false. If internalStorage is true, "key material" is a part of "key metadata", and the json keeps additional fields, described in the KeyMaterial class.