| /* Registry.java -- |
| Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc. |
| |
| This file is a part of GNU Classpath. |
| |
| GNU Classpath 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 of the License, or (at |
| your option) any later version. |
| |
| GNU Classpath 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 GNU Classpath; if not, write to the Free Software |
| Foundation, Inc., 51 Franklin St, 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. */ |
| |
| |
| package gnu.java.security; |
| |
| /** |
| * A placeholder for <i>names</i> and <i>literals</i> used throughout this |
| * library. |
| */ |
| public interface Registry |
| { |
| /** The name of our Providers. */ |
| String GNU_SECURITY = "GNU"; |
| String GNU_CRYPTO = "GNU-CRYPTO"; |
| String GNU_SASL = "GNU-SASL"; |
| |
| /** Our version number. */ |
| String VERSION_STRING = "2.1.0"; |
| |
| // 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"; |
| |
| // Key Wrapping Algorithm names and synonyms ............................... |
| |
| String KWA_PREFIX = "kw-"; |
| String AES_KWA = KWA_PREFIX + AES_CIPHER; |
| String AES128_KWA = AES_KWA + "128"; |
| String AES192_KWA = AES_KWA + "192"; |
| String AES256_KWA = AES_KWA + "256"; |
| String RIJNDAEL_KWA = KWA_PREFIX + RIJNDAEL_CIPHER; |
| |
| String TRIPLEDES_KWA = KWA_PREFIX + TRIPLEDES_CIPHER; |
| String DESEDE_KWA = KWA_PREFIX + DESEDE_CIPHER; |
| |
| // 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#5 padding scheme. */ |
| String PKCS5_PAD = "pkcs5"; |
| |
| /** 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"; |
| |
| /** ISO 10126-2 padding scheme. */ |
| String ISO10126_PAD = "iso10126"; |
| |
| // 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_SIG_PREFIX = "rsa-"; |
| |
| String RSA_PSS_ENCODING = "pss"; |
| |
| String RSA_PSS_SIG = RSA_SIG_PREFIX + RSA_PSS_ENCODING; |
| |
| String RSA_PKCS1_V1_5_ENCODING = "pkcs1-v1.5"; |
| |
| String RSA_PKCS1_V1_5_SIG = RSA_SIG_PREFIX + RSA_PKCS1_V1_5_ENCODING; |
| |
| /** 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 .......... |
| // fully-qualified names of the supported codecs |
| String RAW_ENCODING = "gnu.crypto.raw.format"; |
| String X509_ENCODING = "gnu.crypto.x509.format"; |
| String PKCS8_ENCODING = "gnu.crypto.pkcs8.format"; |
| String ASN1_ENCODING = "gnu.crypto.asn1.format"; |
| |
| // short names of the same. used by JCE adapters |
| String RAW_ENCODING_SHORT_NAME = "RAW"; |
| String X509_ENCODING_SORT_NAME = "X.509"; |
| String PKCS8_ENCODING_SHORT_NAME = "PKCS#8"; |
| String ASN1_ENCODING_SHORT_NAME = "ASN.1"; |
| |
| // unique identifiers of the same |
| int RAW_ENCODING_ID = 1; |
| int X509_ENCODING_ID = 2; |
| int PKCS8_ENCODING_ID = 3; |
| int ASN1_ENCODING_ID = 4; |
| |
| // OID strings used in encoding/decoding keys |
| String DSA_OID_STRING = "1.2.840.10040.4.1"; |
| String RSA_OID_STRING = "1.2.840.113549.1.1.1"; |
| String DH_OID_STRING = "1.2.840.10046.2.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_RSA_PKCS1V1_5_SIGNATURE = new byte[] { |
| 0x47, RAW_ENCODING_ID, 0x52, 0x54 }; |
| |
| 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; |
| } |