Frames | No Frames |
1: /* ExemptionMechanismSpi.java -- Exemption mechanism service provider interface. 2: Copyright (C) 2004 Free Software Foundation, Inc. 3: 4: This file is 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, or (at your option) 9: 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; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 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 javax.crypto; 40: 41: import java.security.AlgorithmParameters; 42: import java.security.InvalidAlgorithmParameterException; 43: import java.security.InvalidKeyException; 44: import java.security.Key; 45: import java.security.spec.AlgorithmParameterSpec; 46: 47: /** 48: * The <i>Service Provider Interface</i> (<b>SPI</b>) for the {@link 49: * ExemptionMechanism} class. 50: * 51: * @author Casey Marshall (csm@gnu.org) 52: * @since 1.4 53: */ 54: public abstract class ExemptionMechanismSpi 55: { 56: 57: // Constructor. 58: // ------------------------------------------------------------------------ 59: 60: /** 61: * Create a new exemption mechanism SPI. 62: */ 63: public ExemptionMechanismSpi() 64: { 65: } 66: 67: // Abstract instance methods. 68: // ------------------------------------------------------------------------ 69: 70: /** 71: * Return a key blob for the key that this mechanism was initialized 72: * with. 73: * 74: * @return The key blob. 75: * @throws javax.crypto.ExemptionMechanismException If generating the 76: * blob fails. 77: */ 78: protected abstract byte[] engineGenExemptionBlob() 79: throws ExemptionMechanismException; 80: 81: /** 82: * Generate a key blob for the key that this mechanism was initialized 83: * with, storing it into the given byte array. 84: * 85: * @param output The destination for the key blob. 86: * @param outputOffset The index in the output array to start. 87: * @return The size of the key blob. 88: * @throws javax.crypto.ExemptionMechanismException If generating the 89: * blob fails. 90: * @throws javax.crypto.ShortBufferException If the output array is 91: * not large enough for the key blob. 92: */ 93: protected abstract int engineGenExemptionBlob(byte[] output, int outputOffset) 94: throws ExemptionMechanismException, ShortBufferException; 95: 96: /** 97: * Get the size of the output blob given an input key size. The actual 98: * blob may be shorter than the value returned by this method. Both 99: * values are in bytes. 100: * 101: * @param inputLength The input size. 102: * @return The output size. 103: */ 104: protected abstract int engineGetOutputSize(int inputLength); 105: 106: /** 107: * Initialize this mechanism with a key. 108: * 109: * @param key The key. 110: * @throws javax.crypto.ExemptionMechanismException If generating the 111: * blob fails. 112: * @throws java.security.InvalidKeyException If the supplied key 113: * cannot be used. 114: */ 115: protected abstract void engineInit(Key key) 116: throws ExemptionMechanismException, InvalidKeyException; 117: 118: /** 119: * Initialize this mechanism with a key and parameters. 120: * 121: * @param key The key. 122: * @param params The parameters. 123: * @throws javax.crypto.ExemptionMechanismException If generating the 124: * blob fails. 125: * @throws java.security.InvalidAlgorithmParameterExceptin If the 126: * supplied parameters are inappropriate. 127: * @throws java.security.InvalidKeyException If the supplied key 128: * cannot be used. 129: */ 130: protected abstract void engineInit(Key key, AlgorithmParameters params) 131: throws ExemptionMechanismException, InvalidAlgorithmParameterException, 132: InvalidKeyException; 133: 134: /** 135: * Initialize this mechanism with a key and parameters. 136: * 137: * @param key The key. 138: * @param params The parameters. 139: * @throws javax.crypto.ExemptionMechanismException If generating the 140: * blob fails. 141: * @throws java.security.InvalidAlgorithmParameterExceptin If the 142: * supplied parameters are inappropriate. 143: * @throws java.security.InvalidKeyException If the supplied key 144: * cannot be used. 145: */ 146: protected abstract void engineInit(Key key, AlgorithmParameterSpec params) 147: throws ExemptionMechanismException, InvalidAlgorithmParameterException, 148: InvalidKeyException; 149: }