Source for gnu.javax.crypto.jce.GnuCrypto

   1: /* GnuCrypto.java --
   2:    Copyright (C) 2004, 2006 Free Software Foundation, Inc.
   3: 
   4: This file is a part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2 of the License, or (at
   9: your option) any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; if not, write to the Free Software
  18: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
  19: USA
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version.  */
  37: 
  38: 
  39: package gnu.javax.crypto.jce;
  40: 
  41: import gnu.java.security.Registry;
  42: import gnu.javax.crypto.cipher.CipherFactory;
  43: import gnu.javax.crypto.mac.MacFactory;
  44: 
  45: import java.security.AccessController;
  46: import java.security.PrivilegedAction;
  47: import java.security.Provider;
  48: import java.util.HashSet;
  49: import java.util.Set;
  50: 
  51: /**
  52:  * The additional GNU algorithm implementation as a Java Cryptographic Extension
  53:  * (JCE) Provider.
  54:  *
  55:  * @see java.security.Provider
  56:  */
  57: public final class GnuCrypto
  58:     extends Provider
  59: {
  60:   public GnuCrypto()
  61:   {
  62:     super(Registry.GNU_CRYPTO, 2.1, "GNU Crypto JCE Provider");
  63: 
  64:     AccessController.doPrivileged(new PrivilegedAction()
  65:     {
  66:       public Object run()
  67:       {
  68:         // Cipher
  69:         put("Cipher.ANUBIS",
  70:             gnu.javax.crypto.jce.cipher.AnubisSpi.class.getName());
  71:         put("Cipher.ANUBIS ImplementedIn", "Software");
  72:         put("Cipher.ARCFOUR",
  73:             gnu.javax.crypto.jce.cipher.ARCFourSpi.class.getName());
  74:         put("Cipher.ARCFOUR ImplementedIn", "Software");
  75:         put("Cipher.BLOWFISH",
  76:             gnu.javax.crypto.jce.cipher.BlowfishSpi.class.getName());
  77:         put("Cipher.BLOWFISH ImplementedIn", "Software");
  78:         put("Cipher.DES", gnu.javax.crypto.jce.cipher.DESSpi.class.getName());
  79:         put("Cipher.DES ImplementedIn", "Software");
  80:         put("Cipher.KHAZAD",
  81:             gnu.javax.crypto.jce.cipher.KhazadSpi.class.getName());
  82:         put("Cipher.KHAZAD ImplementedIn", "Software");
  83:         put("Cipher.NULL",
  84:             gnu.javax.crypto.jce.cipher.NullCipherSpi.class.getName());
  85:         put("Cipher.NULL ImplementedIn", "Software");
  86:         put("Cipher.AES",
  87:             gnu.javax.crypto.jce.cipher.RijndaelSpi.class.getName());
  88:         put("Cipher.AES ImplementedIn", "Software");
  89:         put("Cipher.RIJNDAEL",
  90:             gnu.javax.crypto.jce.cipher.RijndaelSpi.class.getName());
  91:         put("Cipher.RIJNDAEL ImplementedIn", "Software");
  92:         put("Cipher.SERPENT",
  93:             gnu.javax.crypto.jce.cipher.SerpentSpi.class.getName());
  94:         put("Cipher.SERPENT ImplementedIn", "Software");
  95:         put("Cipher.SQUARE",
  96:             gnu.javax.crypto.jce.cipher.SquareSpi.class.getName());
  97:         put("Cipher.SQUARE ImplementedIn", "Software");
  98:         put("Cipher.TRIPLEDES",
  99:             gnu.javax.crypto.jce.cipher.TripleDESSpi.class.getName());
 100:         put("Cipher.TRIPLEDES ImplementedIn", "Software");
 101:         put("Cipher.TWOFISH",
 102:             gnu.javax.crypto.jce.cipher.TwofishSpi.class.getName());
 103:         put("Cipher.TWOFISH ImplementedIn", "Software");
 104:         put("Cipher.CAST5",
 105:             gnu.javax.crypto.jce.cipher.Cast5Spi.class.getName());
 106:         put("Cipher.CAST5 ImplementedIn", "Software");
 107: 
 108:         // PBES2 ciphers.
 109:         put("Cipher.PBEWithHMacHavalAndAES",
 110:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.AES.class.getName());
 111:         put("Cipher.PBEWithHMacHavalAndAnubis",
 112:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Anubis.class.getName());
 113:         put("Cipher.PBEWithHMacHavalAndBlowfish",
 114:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Blowfish.class.getName());
 115:         put("Cipher.PBEWithHMacHavalAndCast5",
 116:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Cast5.class.getName());
 117:         put("Cipher.PBEWithHMacHavalAndDES",
 118:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.DES.class.getName());
 119:         put("Cipher.PBEWithHMacHavalAndKhazad",
 120:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Khazad.class.getName());
 121:         put("Cipher.PBEWithHMacHavalAndSerpent",
 122:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Serpent.class.getName());
 123:         put("Cipher.PBEWithHMacHavalAndSquare",
 124:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Square.class.getName());
 125:         put("Cipher.PBEWithHMacHavalAndTripleDES",
 126:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.TripleDES.class.getName());
 127:         put("Cipher.PBEWithHMacHavalAndTwofish",
 128:             gnu.javax.crypto.jce.cipher.PBES2.HMacHaval.Twofish.class.getName());
 129: 
 130:         put("Cipher.PBEWithHMacMD2AndAES",
 131:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.AES.class.getName());
 132:         put("Cipher.PBEWithHMacMD2AndAnubis",
 133:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Anubis.class.getName());
 134:         put("Cipher.PBEWithHMacMD2AndBlowfish",
 135:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Blowfish.class.getName());
 136:         put("Cipher.PBEWithHMacMD2AndCast5",
 137:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Cast5.class.getName());
 138:         put("Cipher.PBEWithHMacMD2AndDES",
 139:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.DES.class.getName());
 140:         put("Cipher.PBEWithHMacMD2AndKhazad",
 141:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Khazad.class.getName());
 142:         put("Cipher.PBEWithHMacMD2AndSerpent",
 143:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Serpent.class.getName());
 144:         put("Cipher.PBEWithHMacMD2AndSquare",
 145:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Square.class.getName());
 146:         put("Cipher.PBEWithHMacMD2AndTripleDES",
 147:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.TripleDES.class.getName());
 148:         put("Cipher.PBEWithHMacMD2AndTwofish",
 149:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD2.Twofish.class.getName());
 150: 
 151:         put("Cipher.PBEWithHMacMD4AndAES",
 152:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.AES.class.getName());
 153:         put("Cipher.PBEWithHMacMD4AndAnubis",
 154:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Anubis.class.getName());
 155:         put("Cipher.PBEWithHMacMD4AndBlowfish",
 156:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Blowfish.class.getName());
 157:         put("Cipher.PBEWithHMacMD4AndCast5",
 158:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Cast5.class.getName());
 159:         put("Cipher.PBEWithHMacMD4AndDES",
 160:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.DES.class.getName());
 161:         put("Cipher.PBEWithHMacMD4AndKhazad",
 162:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Khazad.class.getName());
 163:         put("Cipher.PBEWithHMacMD4AndSerpent",
 164:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Serpent.class.getName());
 165:         put("Cipher.PBEWithHMacMD4AndSquare",
 166:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Square.class.getName());
 167:         put("Cipher.PBEWithHMacMD4AndTripleDES",
 168:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.TripleDES.class.getName());
 169:         put("Cipher.PBEWithHMacMD4AndTwofish",
 170:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD4.Twofish.class.getName());
 171: 
 172:         put("Cipher.PBEWithHMacMD5AndAES",
 173:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.AES.class.getName());
 174:         put("Cipher.PBEWithHMacMD5AndAnubis",
 175:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Anubis.class.getName());
 176:         put("Cipher.PBEWithHMacMD5AndBlowfish",
 177:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Blowfish.class.getName());
 178:         put("Cipher.PBEWithHMacMD5AndCast5",
 179:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Cast5.class.getName());
 180:         put("Cipher.PBEWithHMacMD5AndDES",
 181:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.DES.class.getName());
 182:         put("Cipher.PBEWithHMacMD5AndKhazad",
 183:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Khazad.class.getName());
 184:         put("Cipher.PBEWithHMacMD5AndSerpent",
 185:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Serpent.class.getName());
 186:         put("Cipher.PBEWithHMacMD5AndSquare",
 187:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Square.class.getName());
 188:         put("Cipher.PBEWithHMacMD5AndTripleDES",
 189:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.TripleDES.class.getName());
 190:         put("Cipher.PBEWithHMacMD5AndTwofish",
 191:             gnu.javax.crypto.jce.cipher.PBES2.HMacMD5.Twofish.class.getName());
 192: 
 193:         put("Cipher.PBEWithHMacSHA1AndAES",
 194:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.AES.class.getName());
 195:         put("Cipher.PBEWithHMacSHA1AndAnubis",
 196:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Anubis.class.getName());
 197:         put("Cipher.PBEWithHMacSHA1AndBlowfish",
 198:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Blowfish.class.getName());
 199:         put("Cipher.PBEWithHMacSHA1AndCast5",
 200:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Cast5.class.getName());
 201:         put("Cipher.PBEWithHMacSHA1AndDES",
 202:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.DES.class.getName());
 203:         put("Cipher.PBEWithHMacSHA1AndKhazad",
 204:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Khazad.class.getName());
 205:         put("Cipher.PBEWithHMacSHA1AndSerpent",
 206:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Serpent.class.getName());
 207:         put("Cipher.PBEWithHMacSHA1AndSquare",
 208:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Square.class.getName());
 209:         put(
 210:             "Cipher.PBEWithHMacSHA1AndTripleDES",
 211:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.TripleDES.class.getName());
 212:         put("Cipher.PBEWithHMacSHA1AndTwofish",
 213:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA1.Twofish.class.getName());
 214: 
 215:         put("Cipher.PBEWithHMacSHA256AndAES",
 216:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.AES.class.getName());
 217:         put("Cipher.PBEWithHMacSHA256AndAnubis",
 218:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Anubis.class.getName());
 219:         put("Cipher.PBEWithHMacSHA256AndBlowfish",
 220:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Blowfish.class.getName());
 221:         put("Cipher.PBEWithHMacSHA256AndCast5",
 222:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Cast5.class.getName());
 223:         put("Cipher.PBEWithHMacSHA256AndDES",
 224:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.DES.class.getName());
 225:         put("Cipher.PBEWithHMacSHA256AndKhazad",
 226:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Khazad.class.getName());
 227:         put("Cipher.PBEWithHMacSHA256AndSerpent",
 228:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Serpent.class.getName());
 229:         put("Cipher.PBEWithHMacSHA256AndSquare",
 230:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Square.class.getName());
 231:         put("Cipher.PBEWithHMacSHA256AndTripleDES",
 232:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.TripleDES.class.getName());
 233:         put("Cipher.PBEWithHMacSHA256AndTwofish",
 234:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA256.Twofish.class.getName());
 235: 
 236:         put("Cipher.PBEWithHMacSHA384AndAES",
 237:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.AES.class.getName());
 238:         put("Cipher.PBEWithHMacSHA384AndAnubis",
 239:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Anubis.class.getName());
 240:         put("Cipher.PBEWithHMacSHA384AndBlowfish",
 241:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Blowfish.class.getName());
 242:         put("Cipher.PBEWithHMacSHA384AndCast5",
 243:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Cast5.class.getName());
 244:         put("Cipher.PBEWithHMacSHA384AndDES",
 245:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.DES.class.getName());
 246:         put("Cipher.PBEWithHMacSHA384AndKhazad",
 247:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Khazad.class.getName());
 248:         put("Cipher.PBEWithHMacSHA384AndSerpent",
 249:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Serpent.class.getName());
 250:         put("Cipher.PBEWithHMacSHA384AndSquare",
 251:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Square.class.getName());
 252:         put("Cipher.PBEWithHMacSHA384AndTripleDES",
 253:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.TripleDES.class.getName());
 254:         put("Cipher.PBEWithHMacSHA384AndTwofish",
 255:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA384.Twofish.class.getName());
 256: 
 257:         put("Cipher.PBEWithHMacSHA512AndAES",
 258:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.AES.class.getName());
 259:         put("Cipher.PBEWithHMacSHA512AndAnubis",
 260:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Anubis.class.getName());
 261:         put("Cipher.PBEWithHMacSHA512AndBlowfish",
 262:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Blowfish.class.getName());
 263:         put("Cipher.PBEWithHMacSHA512AndCast5",
 264:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Cast5.class.getName());
 265:         put("Cipher.PBEWithHMacSHA512AndDES",
 266:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.DES.class.getName());
 267:         put("Cipher.PBEWithHMacSHA512AndKhazad",
 268:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Khazad.class.getName());
 269:         put("Cipher.PBEWithHMacSHA512AndSerpent",
 270:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Serpent.class.getName());
 271:         put("Cipher.PBEWithHMacSHA512AndSquare",
 272:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Square.class.getName());
 273:         put("Cipher.PBEWithHMacSHA512AndTripleDES",
 274:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.TripleDES.class.getName());
 275:         put("Cipher.PBEWithHMacSHA512AndTwofish",
 276:             gnu.javax.crypto.jce.cipher.PBES2.HMacSHA512.Twofish.class.getName());
 277: 
 278:         put("Cipher.PBEWithHMacTigerAndAES",
 279:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.AES.class.getName());
 280:         put("Cipher.PBEWithHMacTigerAndAnubis",
 281:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Anubis.class.getName());
 282:         put("Cipher.PBEWithHMacTigerAndBlowfish",
 283:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Blowfish.class.getName());
 284:         put("Cipher.PBEWithHMacTigerAndCast5",
 285:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Cast5.class.getName());
 286:         put("Cipher.PBEWithHMacTigerAndDES",
 287:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.DES.class.getName());
 288:         put("Cipher.PBEWithHMacTigerAndKhazad",
 289:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Khazad.class.getName());
 290:         put("Cipher.PBEWithHMacTigerAndSerpent",
 291:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Serpent.class.getName());
 292:         put("Cipher.PBEWithHMacTigerAndSquare",
 293:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Square.class.getName());
 294:         put("Cipher.PBEWithHMacTigerAndTripleDES",
 295:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.TripleDES.class.getName());
 296:         put("Cipher.PBEWithHMacTigerAndTwofish",
 297:             gnu.javax.crypto.jce.cipher.PBES2.HMacTiger.Twofish.class.getName());
 298: 
 299:         put("Cipher.PBEWithHMacWhirlpoolAndAES",
 300:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.AES.class.getName());
 301:         put("Cipher.PBEWithHMacWhirlpoolAndAnubis",
 302:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Anubis.class.getName());
 303:         put("Cipher.PBEWithHMacWhirlpoolAndBlowfish",
 304:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Blowfish.class.getName());
 305:         put("Cipher.PBEWithHMacWhirlpoolAndCast5",
 306:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Cast5.class.getName());
 307:         put("Cipher.PBEWithHMacWhirlpoolAndDES",
 308:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.DES.class.getName());
 309:         put("Cipher.PBEWithHMacWhirlpoolAndKhazad",
 310:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Khazad.class.getName());
 311:         put("Cipher.PBEWithHMacWhirlpoolAndSerpent",
 312:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Serpent.class.getName());
 313:         put("Cipher.PBEWithHMacWhirlpoolAndSquare",
 314:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Square.class.getName());
 315:         put("Cipher.PBEWithHMacWhirlpoolAndTripleDES",
 316:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.TripleDES.class.getName());
 317:         put("Cipher.PBEWithHMacWhirlpoolAndTwofish",
 318:             gnu.javax.crypto.jce.cipher.PBES2.HMacWhirlpool.Twofish.class.getName());
 319: 
 320:         // Key Wrapping Algorithm cipher
 321:         put("Cipher." + Registry.AES128_KWA,
 322:             gnu.javax.crypto.jce.cipher.AES128KeyWrapSpi.class.getName());
 323:         put("Cipher." + Registry.AES192_KWA,
 324:             gnu.javax.crypto.jce.cipher.AES192KeyWrapSpi.class.getName());
 325:         put("Cipher." + Registry.AES256_KWA,
 326:             gnu.javax.crypto.jce.cipher.AES256KeyWrapSpi.class.getName());
 327:         put("Cipher." + Registry.TRIPLEDES_KWA,
 328:             gnu.javax.crypto.jce.cipher.TripleDESKeyWrapSpi.class.getName());
 329: 
 330:         // SecretKeyFactory interface to PBKDF2.
 331:         put("SecretKeyFactory.PBKDF2WithHMacHaval",
 332:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacHaval.class.getName());
 333:         put("SecretKeyFactory.PBKDF2WithHMacMD2",
 334:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacMD2.class.getName());
 335:         put("SecretKeyFactory.PBKDF2WithHMacMD4",
 336:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacMD4.class.getName());
 337:         put("SecretKeyFactory.PBKDF2WithHMacMD5",
 338:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacMD5.class.getName());
 339:         put("SecretKeyFactory.PBKDF2WithHMacSHA1",
 340:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacSHA1.class.getName());
 341:         put("SecretKeyFactory.PBKDF2WithHMacSHA256",
 342:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacSHA256.class.getName());
 343:         put("SecretKeyFactory.PBKDF2WithHMacSHA384",
 344:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacSHA384.class.getName());
 345:         put("SecretKeyFactory.PBKDF2WithHMacSHA512",
 346:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacSHA512.class.getName());
 347:         put("SecretKeyFactory.PBKDF2WithHMacTiger",
 348:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacTiger.class.getName());
 349:         put("SecretKeyFactory.PBKDF2WithHMacWhirlpool",
 350:             gnu.javax.crypto.jce.PBKDF2SecretKeyFactory.HMacWhirlpool.class.getName());
 351: 
 352:         // Simple SecretKeyFactory implementations.
 353:         put("SecretKeyFactory.Anubis",
 354:             gnu.javax.crypto.jce.key.AnubisSecretKeyFactoryImpl.class.getName());
 355:         put("SecretKeyFactory.Blowfish",
 356:             gnu.javax.crypto.jce.key.BlowfishSecretKeyFactoryImpl.class.getName());
 357:         put("SecretKeyFactory.Cast5",
 358:             gnu.javax.crypto.jce.key.Cast5SecretKeyFactoryImpl.class.getName());
 359:         put("SecretKeyFactory.DES",
 360:             gnu.javax.crypto.jce.key.DESSecretKeyFactoryImpl.class.getName());
 361:         put("SecretKeyFactory.Khazad",
 362:             gnu.javax.crypto.jce.key.KhazadSecretKeyFactoryImpl.class.getName());
 363:         put("SecretKeyFactory.Rijndael",
 364:             gnu.javax.crypto.jce.key.RijndaelSecretKeyFactoryImpl.class.getName());
 365:         put("SecretKeyFactory.Serpent",
 366:             gnu.javax.crypto.jce.key.SerpentSecretKeyFactoryImpl.class.getName());
 367:         put("SecretKeyFactory.Square",
 368:             gnu.javax.crypto.jce.key.SquareSecretKeyFactoryImpl.class.getName());
 369:         put("SecretKeyFactory.TripleDES",
 370:             gnu.javax.crypto.jce.key.DESedeSecretKeyFactoryImpl.class.getName());
 371:         put("Alg.Alias.SecretKeyFactory.AES", "Rijndael");
 372:         put("Alg.Alias.SecretKeyFactory.DESede", "TripleDES");
 373:         put("Alg.Alias.SecretKeyFactory.3-DES", "TripleDES");
 374:         put("Alg.Alias.SecretKeyFactory.3DES", "TripleDES");
 375: 
 376:         put("AlgorithmParameters.BlockCipherParameters",
 377:             gnu.javax.crypto.jce.params.BlockCipherParameters.class.getName());
 378:         put("Alg.Alias.AlgorithmParameters.Anubis", "BlockCipherParameters");
 379:         put("Alg.Alias.AlgorithmParameters.Blowfish", "BlockCipherParameters");
 380:         put("Alg.Alias.AlgorithmParameters.Cast5", "BlockCipherParameters");
 381:         put("Alg.Alias.AlgorithmParameters.DES", "BlockCipherParameters");
 382:         put("Alg.Alias.AlgorithmParameters.Khazad", "BlockCipherParameters");
 383:         put("Alg.Alias.AlgorithmParameters.Rijndael", "BlockCipherParameters");
 384:         put("Alg.Alias.AlgorithmParameters.AES", "BlockCipherParameters");
 385:         put("Alg.Alias.AlgorithmParameters.Serpent", "BlockCipherParameters");
 386:         put("Alg.Alias.AlgorithmParameters.Square", "BlockCipherParameters");
 387:         put("Alg.Alias.AlgorithmParameters.TripleDES", "BlockCipherParameters");
 388:         put("Alg.Alias.AlgorithmParameters.DESede", "BlockCipherParameters");
 389:         put("Alg.Alias.AlgorithmParameters.3-DES", "BlockCipherParameters");
 390:         put("Alg.Alias.AlgorithmParameters.3DES", "BlockCipherParameters");
 391: 
 392:         // KeyGenerator Adapter implementations
 393:         put("KeyGenerator.Anubis",
 394:             gnu.javax.crypto.jce.key.AnubisKeyGeneratorImpl.class.getName());
 395:         put("KeyGenerator.Blowfish",
 396:             gnu.javax.crypto.jce.key.BlowfishKeyGeneratorImpl.class.getName());
 397:         put("KeyGenerator.Cast5",
 398:             gnu.javax.crypto.jce.key.Cast5KeyGeneratorImpl.class.getName());
 399:         put("KeyGenerator.DES",
 400:             gnu.javax.crypto.jce.key.DESKeyGeneratorImpl.class.getName());
 401:         put("KeyGenerator.Khazad",
 402:             gnu.javax.crypto.jce.key.KhazadKeyGeneratorImpl.class.getName());
 403:         put("KeyGenerator.Rijndael",
 404:             gnu.javax.crypto.jce.key.RijndaelKeyGeneratorImpl.class.getName());
 405:         put("KeyGenerator.Serpent",
 406:             gnu.javax.crypto.jce.key.SerpentKeyGeneratorImpl.class.getName());
 407:         put("KeyGenerator.Square",
 408:             gnu.javax.crypto.jce.key.SquareKeyGeneratorImpl.class.getName());
 409:         put("KeyGenerator.TripleDES",
 410:             gnu.javax.crypto.jce.key.TripleDESKeyGeneratorImpl.class.getName());
 411:         put("Alg.Alias.KeyGenerator.AES", "Rijndael");
 412:         put("Alg.Alias.KeyGenerator.DESede", "TripleDES");
 413:         put("Alg.Alias.KeyGenerator.3-DES", "TripleDES");
 414:         put("Alg.Alias.KeyGenerator.3DES", "TripleDES");
 415: 
 416:         // MAC
 417:         put("Mac.HMAC-MD2", gnu.javax.crypto.jce.mac.HMacMD2Spi.class.getName());
 418:         put("Mac.HMAC-MD4", gnu.javax.crypto.jce.mac.HMacMD4Spi.class.getName());
 419:         put("Mac.HMAC-MD5", gnu.javax.crypto.jce.mac.HMacMD5Spi.class.getName());
 420:         put("Mac.HMAC-RIPEMD128",
 421:             gnu.javax.crypto.jce.mac.HMacRipeMD128Spi.class.getName());
 422:         put("Mac.HMAC-RIPEMD160",
 423:             gnu.javax.crypto.jce.mac.HMacRipeMD160Spi.class.getName());
 424:         put("Mac.HMAC-SHA160",
 425:             gnu.javax.crypto.jce.mac.HMacSHA160Spi.class.getName());
 426:         put("Mac.HMAC-SHA256",
 427:             gnu.javax.crypto.jce.mac.HMacSHA256Spi.class.getName());
 428:         put("Mac.HMAC-SHA384",
 429:             gnu.javax.crypto.jce.mac.HMacSHA384Spi.class.getName());
 430:         put("Mac.HMAC-SHA512",
 431:             gnu.javax.crypto.jce.mac.HMacSHA512Spi.class.getName());
 432:         put("Mac.HMAC-TIGER",
 433:             gnu.javax.crypto.jce.mac.HMacTigerSpi.class.getName());
 434:         put("Mac.HMAC-HAVAL",
 435:             gnu.javax.crypto.jce.mac.HMacHavalSpi.class.getName());
 436:         put("Mac.HMAC-WHIRLPOOL",
 437:             gnu.javax.crypto.jce.mac.HMacWhirlpoolSpi.class.getName());
 438:         put("Mac.TMMH16", gnu.javax.crypto.jce.mac.TMMH16Spi.class.getName());
 439:         put("Mac.UHASH32", gnu.javax.crypto.jce.mac.UHash32Spi.class.getName());
 440:         put("Mac.UMAC32", gnu.javax.crypto.jce.mac.UMac32Spi.class.getName());
 441: 
 442:         put("Mac.OMAC-ANUBIS",
 443:             gnu.javax.crypto.jce.mac.OMacAnubisImpl.class.getName());
 444:         put("Mac.OMAC-BLOWFISH",
 445:             gnu.javax.crypto.jce.mac.OMacBlowfishImpl.class.getName());
 446:         put("Mac.OMAC-CAST5",
 447:             gnu.javax.crypto.jce.mac.OMacCast5Impl.class.getName());
 448:         put("Mac.OMAC-DES",
 449:             gnu.javax.crypto.jce.mac.OMacDESImpl.class.getName());
 450:         put("Mac.OMAC-KHAZAD",
 451:             gnu.javax.crypto.jce.mac.OMacKhazadImpl.class.getName());
 452:         put("Mac.OMAC-RIJNDAEL",
 453:             gnu.javax.crypto.jce.mac.OMacRijndaelImpl.class.getName());
 454:         put("Mac.OMAC-SERPENT",
 455:             gnu.javax.crypto.jce.mac.OMacSerpentImpl.class.getName());
 456:         put("Mac.OMAC-SQUARE",
 457:             gnu.javax.crypto.jce.mac.OMacSquareImpl.class.getName());
 458:         put("Mac.OMAC-TRIPLEDES",
 459:             gnu.javax.crypto.jce.mac.OMacTripleDESImpl.class.getName());
 460:         put("Mac.OMAC-TWOFISH",
 461:             gnu.javax.crypto.jce.mac.OMacTwofishImpl.class.getName());
 462: 
 463:         // Aliases
 464:         put("Alg.Alias.AlgorithmParameters.AES", "BlockCipherParameters");
 465:         put("Alg.Alias.AlgorithmParameters.BLOWFISH", "BlockCipherParameters");
 466:         put("Alg.Alias.AlgorithmParameters.ANUBIS", "BlockCipherParameters");
 467:         put("Alg.Alias.AlgorithmParameters.KHAZAD", "BlockCipherParameters");
 468:         put("Alg.Alias.AlgorithmParameters.NULL", "BlockCipherParameters");
 469:         put("Alg.Alias.AlgorithmParameters.RIJNDAEL", "BlockCipherParameters");
 470:         put("Alg.Alias.AlgorithmParameters.SERPENT", "BlockCipherParameters");
 471:         put("Alg.Alias.AlgorithmParameters.SQUARE", "BlockCipherParameters");
 472:         put("Alg.Alias.AlgorithmParameters.TWOFISH", "BlockCipherParameters");
 473:         put("Alg.Alias.Cipher.RC4", "ARCFOUR");
 474:         put("Alg.Alias.Cipher.3-DES", "TRIPLEDES");
 475:         put("Alg.Alias.Cipher.3DES", "TRIPLEDES");
 476:         put("Alg.Alias.Cipher.DES-EDE", "TRIPLEDES");
 477:         put("Alg.Alias.Cipher.DESede", "TRIPLEDES");
 478:         put("Alg.Alias.Cipher.CAST128", "CAST5");
 479:         put("Alg.Alias.Cipher.CAST-128", "CAST5");
 480:         put("Alg.Alias.Mac.HMAC-SHS", "HMAC-SHA160");
 481:         put("Alg.Alias.Mac.HMAC-SHA", "HMAC-SHA160");
 482:         put("Alg.Alias.Mac.HMAC-SHA1", "HMAC-SHA160");
 483:         put("Alg.Alias.Mac.HMAC-SHA-160", "HMAC-SHA160");
 484:         put("Alg.Alias.Mac.HMAC-SHA-256", "HMAC-SHA256");
 485:         put("Alg.Alias.Mac.HMAC-SHA-384", "HMAC-SHA384");
 486:         put("Alg.Alias.Mac.HMAC-SHA-512", "HMAC-SHA512");
 487:         put("Alg.Alias.Mac.HMAC-RIPEMD-160", "HMAC-RIPEMD160");
 488:         put("Alg.Alias.Mac.HMAC-RIPEMD-128", "HMAC-RIPEMD128");
 489:         put("Alg.Alias.Mac.OMAC-AES", "OMAC-RIJNDAEL");
 490:         put("Alg.Alias.Mac.OMAC-3DES", "OMAC-3DES");
 491:         put("Alg.Alias.Mac.HmacMD4", "HMAC-MD4");
 492:         put("Alg.Alias.Mac.HmacMD5", "HMAC-MD5");
 493:         put("Alg.Alias.Mac.HmacSHA-1", "HMAC-SHA-1");
 494:         put("Alg.Alias.Mac.HmacSHA1", "HMAC-SHA1");
 495:         put("Alg.Alias.Mac.HmacSHA-160", "HMAC-SHA-160");
 496:         put("Alg.Alias.Mac.HmacSHA160", "HMAC-SHA-160");
 497:         put("Alg.Alias.Mac.HmacSHA-256", "HMAC-SHA-256");
 498:         put("Alg.Alias.Mac.HmacSHA256", "HMAC-SHA-256");
 499:         put("Alg.Alias.Mac.HmacSHA-384", "HMAC-SHA-384");
 500:         put("Alg.Alias.Mac.HmacSHA384", "HMAC-SHA-384");
 501:         put("Alg.Alias.Mac.HmacSHA-512", "HMAC-SHA-512");
 502:         put("Alg.Alias.Mac.HmacSHA512", "HMAC-SHA-512");
 503:         put("Alg.Alias.Mac.HmacRIPEMD128", "HMAC-RIPEMD128");
 504:         put("Alg.Alias.Mac.HmacRIPEMD-128", "HMAC-RIPEMD128");
 505:         put("Alg.Alias.Mac.HmacRIPEMD160", "HMAC-RIPEMD160");
 506:         put("Alg.Alias.Mac.HmacRIPEMD-160", "HMAC-RIPEMD160");
 507:         put("Alg.Alias.Mac.HmacTiger", "HMAC-TIGER");
 508:         put("Alg.Alias.Mac.HmacHaval", "HMAC-HAVAL");
 509:         put("Alg.Alias.Mac.HmacWhirlpool", "HMAC-WHIRLPOOL");
 510: 
 511:         // KeyAgreement
 512:         put("KeyAgreement.DH",
 513:             gnu.javax.crypto.jce.DiffieHellmanImpl.class.getName());
 514:         put("Alg.Alias.KeyAgreement.DiffieHellman", "DH");
 515: 
 516:         // Cipher
 517:         put("Cipher.RSAES-PKCS1-v1_5",
 518:             gnu.javax.crypto.RSACipherImpl.class.getName());
 519:         put("Alg.Alias.Cipher.RSA", "RSAES-PKCS1-v1_5");
 520: 
 521:         // SecureRandom
 522:         put("SecureRandom.ARCFOUR",
 523:             gnu.javax.crypto.jce.prng.ARCFourRandomSpi.class.getName());
 524:         put("SecureRandom.ARCFOUR ImplementedIn", "Software");
 525:         put("SecureRandom.CSPRNG",
 526:             gnu.javax.crypto.jce.prng.CSPRNGSpi.class.getName());
 527:         put("SecureRandom.CSPRNG ImplementedIn", "Software");
 528:         put("SecureRandom.ICM",
 529:             gnu.javax.crypto.jce.prng.ICMRandomSpi.class.getName());
 530:         put("SecureRandom.ICM ImplementedIn", "Software");
 531:         put("SecureRandom.UMAC-KDF",
 532:             gnu.javax.crypto.jce.prng.UMacRandomSpi.class.getName());
 533:         put("SecureRandom.UMAC-KDF ImplementedIn", "Software");
 534:         put("SecureRandom.Fortuna",
 535:             gnu.javax.crypto.jce.prng.FortunaImpl.class.getName());
 536:         put("SecureRandom.Fortuna ImplementedIn", "Software");
 537: 
 538:         // KeyStore
 539:         put("KeyStore.GKR",
 540:             gnu.javax.crypto.jce.keyring.GnuKeyring.class.getName());
 541:         put("Alg.Alias.KeyStore.GnuKeyring", "GKR");
 542: 
 543:         // KeyPairGenerator ---------------------------------------------------
 544:         put("KeyPairGenerator.DH",
 545:             gnu.javax.crypto.jce.sig.DHKeyPairGeneratorSpi.class.getName());
 546:         put("KeyPairGenerator.DH KeySize", "512");
 547:         put("KeyPairGenerator.DH ImplementedIn", "Software");
 548: 
 549:         put("Alg.Alias.KeyPairGenerator.DiffieHellman", "DH");
 550: 
 551:         // KeyFactory ---------------------------------------------------------
 552:         put("KeyFactory.DH",
 553:             gnu.javax.crypto.jce.sig.DHKeyFactory.class.getName());
 554: 
 555:         put("Alg.Alias,KeyFactory.DiffieHellman", "DH");
 556: 
 557:         // Algorithm Parameters -----------------------------------------------
 558:         put("AlgorithmParameters.DH",
 559:             gnu.javax.crypto.jce.sig.DHParameters.class.getName());
 560: 
 561:         put("Alg.Alias.AlgorithmParameters.DiffieHellman", "DH");
 562: 
 563:         // Algorithm Parameters Generator -------------------------------------
 564:         put("AlgorithmParameterGenerator.DH",
 565:             gnu.javax.crypto.jce.sig.DHParametersGenerator.class.getName());
 566: 
 567:         put("Alg.Alias.AlgorithmParameterGenerator.DiffieHellman", "DH");
 568: 
 569:         return null;
 570:       }
 571:     });
 572:   }
 573: 
 574:   /**
 575:    * Returns a {@link Set} of names of symmetric key block cipher algorithms
 576:    * available from this {@link Provider}.
 577:    *
 578:    * @return a {@link Set} of cipher names (Strings).
 579:    */
 580:   public static final Set getCipherNames()
 581:   {
 582:     HashSet s = new HashSet();
 583:     s.addAll(CipherFactory.getNames());
 584:     s.add(Registry.ARCFOUR_PRNG);
 585:     return s;
 586:   }
 587: 
 588:   /**
 589:    * Returns a {@link Set} of names of MAC algorithms available from this
 590:    * {@link Provider}.
 591:    *
 592:    * @return a {@link Set} of MAC names (Strings).
 593:    */
 594:   public static final Set getMacNames()
 595:   {
 596:     return MacFactory.getNames();
 597:   }
 598: }