CryptoConstants.java

/*
 * The contents of this file are subject to the terms of the Common Development and
 * Distribution License (the License). You may not use this file except in compliance with the
 * License.
 *
 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
 * specific language governing permission and limitations under the License.
 *
 * When distributing Covered Software, include this CDDL Header Notice in each file and include
 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
 * Header, with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions copyright [year] [name of copyright owner]".
 *
 * Copyright 2016 ForgeRock AS.
 */
package org.forgerock.util.crypto;

/**
 * Constants for Crypto Algorithms and Json Crypto Json pointer keys.
 */
public final class CryptoConstants {

    /**
     * key for the crypto json object.
     */
    public static final String CRYPTO = "$crypto";

    /**
     * key for crypt type used to generate the crypt value.
     */
    public static final String CRYPTO_TYPE = "type";

    /**
     * key for the crypt value, holding the crypt meta-data.
     */
    public static final String CRYPTO_VALUE = "value";

    /**
     * Key for the crypto algorithm used to crypt the data.
     */
    public static final String CRYPTO_ALGORITHM = "algorithm";

    /**
     * key for the password data within crypto json.
     */
    public static final String CRYPTO_DATA = "data";

    /**
     * key for the name of the key-store alias used to crypt the data.
     */
    public static final String CRYPTO_KEY = "key";

    /**
     * key for the cipher used to crypt the data.
     */
    public static final String CRYPTO_CIPHER = "cipher";

    /**
     * A cipher value for the AES/CBC/PKCS5Padding algorithm.
     */
    public static final String CIPHER_AES_CBC_PKCS5 = "AES/CBC/PKCS5Padding";

    /**
     * key for the Initialization Vector (a.k.a. salt) used to crypt the data.
     */
    public static final String CRYPTO_IV = "iv";

    /**
     * A salted hash encryption storage type.
     */
    public static final String STORAGE_TYPE_HASH = "salted-hash";

    /**
     * The name of the message digest algorithm that should be used to generate MD5 hashes.
     */
    public static final String ALGORITHM_MD5 = "MD5";

    /**
     * The name of the message digest algorithm that should be used to generate SHA-1 hashes.
     */
    public static final String ALGORITHM_SHA_1 = "SHA-1";

    /**
     * The name of the message digest algorithm that should be used to generate 256-bit SHA-2 hashes.
     */
    public static final String ALGORITHM_SHA_256 = "SHA-256";

    /**
     * The name of the message digest algorithm that should be used to generate 384-bit SHA-2 hashes.
     */
    public static final String ALGORITHM_SHA_384 = "SHA-384";

    /**
     * The name of the message digest algorithm that should be used to generate 512-bit SHA-2 hashes.
     */
    public static final String ALGORITHM_SHA_512 = "SHA-512";

    private CryptoConstants() {
        throw new UnsupportedOperationException();
    }
}