|
OperationModeECB |
|
1 /* $RCSfile: OperationModeECB.java,v $ 2 * $Revision: 1.6 $ 3 * $Date: 2001/11/02 09:11:01 $ 4 * $Author: uwe $ 5 * $State: Exp $ 6 * 7 * Created on August 18, 2001 4:53 PM 8 * 9 * Copyright (C) 2001 Uwe Guenther <uwe@cscc.de> 10 * 11 * This file is part of the jhbci JCE-ServiceProvider. The jhbci JCE- 12 * ServiceProvider is a library, written in JavaTM, that should be 13 * used in HBCI banking applications (clients and may be servers), 14 * to do cryptographic operations. 15 * 16 * The jhbci library is free software; you can redistribute it and/or 17 * modify it under the terms of the GNU Lesser General Public 18 * License as published by the Free Software Foundation; either 19 * version 2.1 of the License, or (at your option) any later version. 20 * 21 * The jhbci library is distributed in the hope that it will be useful, 22 * but WITHOUT ANY WARRANTY; without even the implied warranty of 23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 24 * Lesser General Public License for more details. 25 * 26 * You should have received a copy of the GNU Lesser General Public 27 * License along with this library; if not, write to the Free Software 28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 29 * 30 */ 31 32 package de.cscc.crypto.provider; 33 34 import javax.crypto.IllegalBlockSizeException; 35 import javax.crypto.ShortBufferException; 36 37 /** 38 * DESCoreECBOperationMode Class. 39 * 40 * @author <a href=mailto:uwe@cscc.de>Uwe Günther</a> 41 * @version $Revision: 1.6 $ 42 */ 43 class OperationModeECB extends OperationMode { 44 45 /** 46 * A BlockCipher object that will be used 47 * for this OperationMode algorithm. 48 */ 49 private BlockCipher cipher; 50 51 /** Don't create a new OperationModeEBC with the default constructor. */ 52 private OperationModeECB() {} 53 54 /** 55 * Creates new OperationModeECB with a Blockcipher and an Iv. 56 * @param cipher the cipher to wrap. 57 */ 58 public OperationModeECB(BlockCipher cipher) { 59 this.cipher = cipher; 60 } 61 62 /** 63 * Returns a string representation of the object. 64 * 65 * @return a string representation of the object. 66 */ 67 public String toString() { 68 return "Cipher: [" + this.cipher + "]"; 69 } 70 71 /** 72 * Returns the algorithm specific block size in bytes. These block 73 * size will be processed if one encrypt or decrypt method runs. 74 * If you subclass these abstract class, you have to implement these 75 * method. 76 * 77 * @return the algorithm specific block size in bytes. 78 */ 79 public int getBlockSize() { 80 return this.cipher.getBlockSize(); 81 } 82 83 /** 84 * The abstract encryption operation. If you subclass these abstract class, 85 * you have to implement these method. 86 * 87 * If (input.length-inputOffset > getBlockSize()) we use only the first 88 * getBlockSize() bytes from the block. 89 * 90 * @param input the getBlockSize() long data block that will be encrypted. 91 * @param inputOffset the offset in input where the input starts. 92 * @param output the buffer for the result. 93 * @param outputOffset the offset in output where the result is stored. 94 * @throws IllegalBlockSizeException will be thrown, if the 95 * deliverd byte array has a length lesser than getBlockSize(). 96 * @throws ShortBufferException will be thrown, if the 97 * output buffer byte array has a length lesser than getBlockSize(). 98 * @return the number of bytes stored in output. 99 */ 100 public int encrypt(byte[] input, int inputOffset, 101 byte[] output, int outputOffset) 102 throws IllegalBlockSizeException, ShortBufferException { 103 return cipher.encrypt(input, inputOffset, output, outputOffset); 104 } 105 106 /** 107 * The abstract decryption operation. If you subclass these abstract class, 108 * you have to implement these method. 109 * 110 * If (input.length-inputOffset > getBlockSize()) we use only the first 111 * getBlockSize() bytes 112 * for the block. 113 * 114 * @param input the getBlockSize() long data block that will be decrypted. 115 * @param inputOffset the offset in input where the input starts. 116 * @param output the buffer for the result. 117 * @param outputOffset the offset in output where the result is stored. 118 * @throws IllegalBlockSizeException will be thrown, if the 119 * deliverd byte array has a length lesser than getBlockSize(). 120 * @throws ShortBufferException will be thrown, if the 121 * output buffer byte array has a length lesser than getBlockSize(). 122 * @return the number of bytes stored in output. 123 */ 124 public int decrypt(byte[] input, int inputOffset, 125 byte[] output, int outputOffset) 126 throws IllegalBlockSizeException, ShortBufferException { 127 return cipher.decrypt(input, inputOffset, output, outputOffset); 128 } 129 130 /** 131 * Set an initialization vector (iv) as a deep copy. 132 * The iv have to getBlockSize() bytes long. 133 * 134 * @param iv the initialization vector (iv). 135 */ 136 public void setIv(byte[] iv) { 137 //Do nothing in ECB mode. 138 } 139 140 /** 141 * Returns a deep copy of the internal byte[] array, 142 * which contains the initialization vector (iv), 143 * or null of the mode does not need an iv. 144 * Such as ECB. 145 * 146 * @return a deep copy of the internal byte[] array, 147 * which contains the initialization vector (iv), 148 * or null of the mode does not need an iv. 149 */ 150 public byte[] getIv() { 151 return null; 152 } 153 154 /** Set chaning vector to the initial iv value. */ 155 public void resetToIv() { 156 //Do nothing in ECB mode. :) 157 } 158 } 159
|
OperationModeECB |
|