1 /* 2 * This file is part of "The Java Telnet Application". 3 * 4 * (c) Matthias L. Jugel, Marcus Meißner 1996-2002. All Rights Reserved. 5 * The file was changed by Radek Polak to work as midlet in MIDP 1.0 6 * 7 * Please visit http://javatelnet.org/ for updates and contact. 8 * 9 * --LICENSE NOTICE-- 10 * This program is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License 12 * as published by the Free Software Foundation; either version 2 13 * of the License, or (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 * --LICENSE NOTICE-- 24 */ 25 package ssh; 26 27 /** 28 * Cipher class is the type for all other ciphers. 29 * @author Marcus Meissner 30 * @version $Id: Cipher.java,v 1.2 2002/10/26 07:15:59 leo Exp $ 31 */ 32 33 public abstract class Cipher { 34 35 public static Cipher getInstance(String algorithm) { 36 Class c; 37 try { 38 // System.out.println( "--- Cipher needs " + algorithm ); 39 c = Class.forName("ssh." + algorithm); 40 return (Cipher) c.newInstance(); 41 } catch (Throwable t) { 42 // System.err.println("Cipher: unable to load instance of '" + algorithm + "'"); 43 return null; 44 } 45 } 46 47 /** 48 * Encrypt source byte array using the instantiated algorithm. 49 */ 50 public byte[] encrypt(byte[] src) { 51 byte[] dest = new byte[src.length]; 52 encrypt(src, 0, dest, 0, src.length); 53 return dest; 54 } 55 56 /** 57 * The actual encryption takes place here. 58 */ 59 public abstract void encrypt(byte[] src, int srcOff, byte[] dest, int destOff, int len); 60 61 /** 62 * Decrypt source byte array using the instantiated algorithm. 63 */ 64 public byte[] decrypt(byte[] src) { 65 byte[] dest = new byte[src.length]; 66 decrypt(src, 0, dest, 0, src.length); 67 return dest; 68 } 69 70 /** 71 * The actual decryption takes place here. 72 */ 73 public abstract void decrypt(byte[] src, int srcOff, byte[] dest, int destOff, int len); 74 75 public abstract void setKey(byte[] key); 76 77 public void setKey(String key) { 78 setKey(key.getBytes()); 79 } 80 } |