//@GENERATED@ -*- java -*- package gnu.crypto; // ---------------------------------------------------------------------------- // $Id: Registry.java.in,v 1.4 2005/10/06 04:24:13 rsdio Exp $ // // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. // // This file is part of GNU Crypto. // // GNU Crypto is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2, or (at your option) // any later version. // // GNU Crypto is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to the // // Free Software Foundation Inc., // 51 Franklin Street, Fifth Floor, // Boston, MA 02110-1301 // USA // // Linking this library statically or dynamically with other modules is // making a combined work based on this library. Thus, the terms and // conditions of the GNU General Public License cover the whole // combination. // // As a special exception, the copyright holders of this library give // you permission to link this library with independent modules to // produce an executable, regardless of the license terms of these // independent modules, and to copy and distribute the resulting // executable under terms of your choice, provided that you also meet, // for each linked independent module, the terms and conditions of the // license of that module. An independent module is a module which is // not derived from or based on this library. If you modify this // library, you may extend this exception to your version of the // library, but you are not obligated to do so. If you do not wish to // do so, delete this exception statement from your version. // ---------------------------------------------------------------------------- /** * A placeholder for <i>names</i> and <i>literals</i> used throughout this * library. * * @version $Revision: 1.4 $ */ public interface Registry { // Constants // ------------------------------------------------------------------------- /** The name of our Providers. */ String GNU_CRYPTO = "GNU-CRYPTO"; String GNU_SASL = "GNU-SASL"; String GNU_SECURITY = "GNU-SECURITY"; /** Our version number. */ String VERSION_STRING = "@VERSION@@PRERELEASE@"; // Names of properties to use in Maps when initialising primitives ......... // Symmetric block cipher algorithms and synonyms........................... String ANUBIS_CIPHER = "anubis"; String BLOWFISH_CIPHER = "blowfish"; String DES_CIPHER = "des"; String KHAZAD_CIPHER = "khazad"; String RIJNDAEL_CIPHER = "rijndael"; String SERPENT_CIPHER = "serpent"; String SQUARE_CIPHER = "square"; String TRIPLEDES_CIPHER = "tripledes"; String TWOFISH_CIPHER = "twofish"; String CAST5_CIPHER = "cast5"; String NULL_CIPHER = "null"; /** AES is synonymous to Rijndael for 128-bit block size only. */ String AES_CIPHER = "aes"; /** TripleDES is also known as DESede. */ String DESEDE_CIPHER = "desede"; /** CAST5 is also known as CAST-128. */ String CAST128_CIPHER = "cast128"; String CAST_128_CIPHER = "cast-128"; // Message digest algorithms and synonyms................................... String WHIRLPOOL_HASH = "whirlpool"; String RIPEMD128_HASH = "ripemd128"; String RIPEMD160_HASH = "ripemd160"; String SHA160_HASH = "sha-160"; String SHA256_HASH = "sha-256"; String SHA384_HASH = "sha-384"; String SHA512_HASH = "sha-512"; String TIGER_HASH = "tiger"; String HAVAL_HASH = "haval"; String MD5_HASH = "md5"; String MD4_HASH = "md4"; String MD2_HASH = "md2"; /** RIPEMD-128 is synonymous to RIPEMD128. */ String RIPEMD_128_HASH = "ripemd-128"; /** RIPEMD-160 is synonymous to RIPEMD160. */ String RIPEMD_160_HASH = "ripemd-160"; /** SHA-1 is synonymous to SHA-160. */ String SHA_1_HASH = "sha-1"; /** SHA1 is synonymous to SHA-160. */ String SHA1_HASH = "sha1"; /** SHA is synonymous to SHA-160. */ String SHA_HASH = "sha"; // Symmetric block cipher modes of operations............................... /** Electronic CodeBook mode. */ String ECB_MODE = "ecb"; /** Counter (NIST) mode. */ String CTR_MODE = "ctr"; /** Integer Counter Mode (David McGrew). */ String ICM_MODE = "icm"; /** Output Feedback Mode (NIST). */ String OFB_MODE = "ofb"; /** Cipher block chaining mode (NIST). */ String CBC_MODE = "cbc"; /** Cipher feedback mode (NIST). */ String CFB_MODE = "cfb"; /** Authenticated-Encrypted mode. */ String EAX_MODE = "eax"; // Padding scheme names and synonyms........................................ /** PKCS#7 padding scheme. */ String PKCS7_PAD = "pkcs7"; /** Trailing Bit Complement padding scheme. */ String TBC_PAD = "tbc"; /** EME-PKCS1-v1_5 padding as described in section 7.2 in RFC-3447. */ String EME_PKCS1_V1_5_PAD = "eme-pkcs1-v1.5"; /** SSLv3 padding scheme. */ String SSL3_PAD = "ssl3"; /** TLSv1 padding scheme. */ String TLS1_PAD = "tls1"; // Pseudo-random number generators.......................................... /** (Apparently) RC4 keystream PRNG. */ String ARCFOUR_PRNG = "arcfour"; /** We use "rc4" as an alias for "arcfour". */ String RC4_PRNG = "rc4"; /** PRNG based on David McGrew's Integer Counter Mode. */ String ICM_PRNG = "icm"; /** PRNG based on a designated hash function. */ String MD_PRNG = "md"; /** PRNG based on UMAC's Key Derivation Function. */ String UMAC_PRNG = "umac-kdf"; /** * PRNG based on PBKDF2 from PKCS #5 v.2. This is suffixed with the name * of a MAC to be used as a PRF. */ String PBKDF2_PRNG_PREFIX = "pbkdf2-"; /** The continuously-seeded pseudo-random number generator. */ String CSPRNG_PRNG = "csprng"; /** The Fortuna PRNG. */ String FORTUNA_PRNG = "fortuna"; /** The Fortuna generator PRNG. */ String FORTUNA_GENERATOR_PRNG = "fortuna-generator"; // Asymmetric keypair generators............................................ String DSS_KPG = "dss"; String RSA_KPG = "rsa"; String DH_KPG = "dh"; String SRP_KPG = "srp"; /** DSA is synonymous to DSS. */ String DSA_KPG = "dsa"; // Signature-with-appendix schemes.......................................... String DSS_SIG = "dss"; String RSA_PSS_SIG = "rsa-pss"; String RSA_PKCS1_V1_5_SIG = "rsa-pkcs1-v1.5"; /** DSA is synonymous to DSS. */ String DSA_SIG = "dsa"; // Key agreement protocols ................................................. String DH_KA = "dh"; String ELGAMAL_KA = "elgamal"; String SRP6_KA = "srp6"; String SRP_SASL_KA = "srp-sasl"; String SRP_TLS_KA = "srp-tls"; // Keyed-Hash Message Authentication Code .................................. /** Name prefix of every HMAC implementation. */ String HMAC_NAME_PREFIX = "hmac-"; // Other MAC algorithms .................................................... /** The One-key CBC MAC. */ String OMAC_PREFIX = "omac-"; /** Message Authentication Code using Universal Hashing (Ted Krovetz). */ String UHASH32 = "uhash32"; String UMAC32 = "umac32"; /** The Truncated Multi-Modular Hash Function -v1 (David McGrew). */ String TMMH16 = "tmmh16"; // String TMMH32 = "tmmh32"; // Format IDs used to identify how we externalise asymmetric keys .......... String RAW_ENCODING = "gnu.crypto.raw.format"; int RAW_ENCODING_ID = 1; // Magic bytes we generate/expect in externalised asymmetric keys .......... // the four bytes represent G (0x47) for GNU, 1 (0x01) for Raw format, // D (0x44) for DSS, R (0x52) for RSA, H (0x48) for Diffie-Hellman, or S // (0x53) for SRP-6, and finally P (0x50) for Public, p (0x70) for private, // or S (0x53) for signature. byte[] MAGIC_RAW_DSS_PUBLIC_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x44, 0x50}; byte[] MAGIC_RAW_DSS_PRIVATE_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x44, 0x70}; byte[] MAGIC_RAW_DSS_SIGNATURE = new byte[] {0x47, RAW_ENCODING_ID, 0x44, 0x53}; byte[] MAGIC_RAW_RSA_PUBLIC_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x52, 0x50}; byte[] MAGIC_RAW_RSA_PRIVATE_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x52, 0x70}; byte[] MAGIC_RAW_RSA_PSS_SIGNATURE = new byte[] {0x47, RAW_ENCODING_ID, 0x52, 0x53}; byte[] MAGIC_RAW_DH_PUBLIC_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x48, 0x50}; byte[] MAGIC_RAW_DH_PRIVATE_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x48, 0x70}; byte[] MAGIC_RAW_SRP_PUBLIC_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x53, 0x50}; byte[] MAGIC_RAW_SRP_PRIVATE_KEY = new byte[] {0x47, RAW_ENCODING_ID, 0x53, 0x70}; // SASL Property names ..................................................... String SASL_PREFIX = "gnu.crypto.sasl"; /** Name of username property. */ String SASL_USERNAME = SASL_PREFIX + ".username"; /** Name of password property. */ String SASL_PASSWORD = SASL_PREFIX + ".password"; /** Name of authentication information provider packages. */ String SASL_AUTH_INFO_PROVIDER_PKGS = SASL_PREFIX + ".auth.info.provider.pkgs"; /** SASL authorization ID. */ String SASL_AUTHORISATION_ID = SASL_PREFIX + ".authorisation.ID"; /** SASL protocol. */ String SASL_PROTOCOL = SASL_PREFIX + ".protocol"; /** SASL Server name. */ String SASL_SERVER_NAME = SASL_PREFIX + ".server.name"; /** SASL Callback handler. */ String SASL_CALLBACK_HANDLER = SASL_PREFIX + ".callback.handler"; /** SASL channel binding. */ String SASL_CHANNEL_BINDING = SASL_PREFIX + ".channel.binding"; // SASL data element size limits ........................................... /** The size limit, in bytes, of a SASL OS (Octet Sequence) element. */ int SASL_ONE_BYTE_MAX_LIMIT = 255; /** * The size limit, in bytes, of both a SASL MPI (Multi-Precision Integer) * element and a SASL Text element. */ int SASL_TWO_BYTE_MAX_LIMIT = 65535; /** The size limit, in bytes, of a SASL EOS (Extended Octet Sequence) element. */ int SASL_FOUR_BYTE_MAX_LIMIT = 2147483383; /** The size limit, in bytes, of a SASL Buffer. */ int SASL_BUFFER_MAX_LIMIT = 2147483643; // Canonical names of SASL mechanisms ...................................... String SASL_ANONYMOUS_MECHANISM = "ANONYMOUS"; String SASL_CRAM_MD5_MECHANISM = "CRAM-MD5"; String SASL_PLAIN_MECHANISM = "PLAIN"; String SASL_SRP_MECHANISM = "SRP"; // Canonical names of Integrity Protection algorithms ...................... String SASL_HMAC_MD5_IALG = "HMACwithMD5"; String SASL_HMAC_SHA_IALG = "HMACwithSHA"; // Quality Of Protection string representations ............................ /** authentication only. */ String QOP_AUTH = "auth"; /** authentication plus integrity protection. */ String QOP_AUTH_INT = "auth-int"; /** authentication plus integrity and confidentiality protection. */ String QOP_AUTH_CONF = "auth-conf"; // SASL mechanism strength string representation ........................... String STRENGTH_HIGH = "high"; String STRENGTH_MEDIUM = "medium"; String STRENGTH_LOW = "low"; // SASL Server Authentication requirement .................................. /** Server must authenticate to the client. */ String SERVER_AUTH_TRUE = "true"; /** Server does not need to, or cannot, authenticate to the client. */ String SERVER_AUTH_FALSE = "false"; // SASL mechanism reuse capability ......................................... String REUSE_TRUE = "true"; String REUSE_FALSE = "false"; // Keyrings ............................................................... byte[] GKR_MAGIC = new byte[] { 0x47, 0x4b, 0x52, 0x01 }; // Ring usage fields. int GKR_PRIVATE_KEYS = 1 << 0; int GKR_PUBLIC_CREDENTIALS = 1 << 1; int GKR_CERTIFICATES = 1 << 2; // HMac types. int GKR_HMAC_MD5_128 = 0; int GKR_HMAC_SHA_160 = 1; int GKR_HMAC_MD5_96 = 2; int GKR_HMAC_SHA_96 = 3; // Cipher types. int GKR_CIPHER_AES_128_OFB = 0; int GKR_CIPHER_AES_128_CBC = 1; // Methods // ------------------------------------------------------------------------- }