+++ /dev/null
-/* SignatureSpi.java --- Signature Service Provider Interface
- Copyright (C) 1999 Free Software Foundation, Inc.
-
-This file is 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, 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; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 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 java.security;
-import java.security.spec.AlgorithmParameterSpec;
-
-/**
- SignatureSpi defines the Service Provider Interface (SPI)
- for the Signature class. The signature class provides an
- interface to a digital signature algorithm. Digital signatures
- are used for authentication and integrity of data.
-
- @author Mark Benvenuto <ivymccough@worldnet.att.net>
-
- @since JDK 1.2
- */
-public abstract class SignatureSpi
-{
- /**
- Source of randomness
- */
- protected SecureRandom appRandom;
-
- /**
- Creates a new instance of SignatureSpi.
- */
- public SignatureSpi()
- {
- appRandom = null;
- }
-
- /**
- Initializes this class with the public key for
- verification purposes.
-
- @param publicKey the public key to verify with
-
- @throws InvalidKeyException invalid key
- */
- protected abstract void engineInitVerify(PublicKey publicKey)
- throws InvalidKeyException;
-
- /**
- Initializes this class with the private key for
- signing purposes.
-
- @param privateKey the private key to sign with
-
- @throws InvalidKeyException invalid key
- */
- protected abstract void engineInitSign(PrivateKey privateKey)
- throws InvalidKeyException;
-
- /**
- Initializes this class with the private key and source
- of randomness for signing purposes.
-
- This cannot be abstract backward compatibility reasons
-
- @param privateKey the private key to sign with
- @param random Source of randomness
-
- @throws InvalidKeyException invalid key
-
- @since JDK 1.2
- */
- protected void engineInitSign(PrivateKey privateKey, SecureRandom random)
- throws InvalidKeyException
- {
- appRandom = random;
- engineInitSign(privateKey);
- }
-
- /**
- Updates the data to be signed or verified with the specified
- byte.
-
- @param b byte to update with
-
- @throws SignatureException Engine not properly initialized
- */
- protected abstract void engineUpdate(byte b) throws SignatureException;
-
- /**
- Updates the data to be signed or verified with the specified
- bytes.
-
- @param b array of bytes
- @param off the offset to start at in the array
- @param len the length of the bytes to use in the array
-
- @throws SignatureException engine not properly initialized
- */
- protected abstract void engineUpdate(byte[] b, int off, int len)
- throws SignatureException;
-
- /**
- Returns the signature bytes of all the data fed to this class.
- The format of the output depends on the underlying signature
- algorithm.
-
- @return the signature
-
- @throws SignatureException engine not properly initialized
- */
- protected abstract byte[] engineSign() throws SignatureException;
-
- /**
- Generates signature bytes of all the data fed to this class
- and outputs it to the passed array. The format of the
- output depends on the underlying signature algorithm.
-
- This cannot be abstract backward compatibility reasons.
- After calling this method, the signature is reset to its
- initial state and can be used to generate additional
- signatures.
-
- @param outbuff array of bytes
- @param offset the offset to start at in the array
- @param len the length of the bytes to put into the array.
- Neither this method or the GNU provider will
- return partial digests. If len is less than the
- signature length, this method will throw
- SignatureException. If it is greater than or equal
- then it is ignored.
-
- @return number of bytes in outbuf
-
- @throws SignatureException engine not properly initialized
-
- @since JDK 1.2
- */
- protected int engineSign(byte[] outbuf, int offset, int len)
- throws SignatureException
- {
- byte tmp[] = engineSign();
-
- if (tmp.length > len)
- throw new SignatureException("Invalid Length");
-
- System.arraycopy(outbuf, offset, tmp, 0, tmp.length);
-
- return tmp.length;
- }
-
- /**
- Verifies the passed signature.
-
- @param sigBytes the signature bytes to verify
-
- @return true if verified, false otherwise
-
- @throws SignatureException engine not properly initialized
- or wrong signature
- */
- protected abstract boolean engineVerify(byte[] sigBytes)
- throws SignatureException;
-
- /**
- Sets the specified algorithm parameter to the specified value.
-
- @param param parameter name
- @param value parameter value
-
- @throws InvalidParameterException invalid parameter, parameter
- already set and cannot set again, a security exception,
- etc.
-
- @deprecated use the other setParameter
- */
- protected abstract void engineSetParameter(String param, Object value)
- throws InvalidParameterException;
-
- /**
- Sets the signature engine with the specified
- AlgorithmParameterSpec;
-
- This cannot be abstract backward compatibility reasons
- By default this always throws UnsupportedOperationException
- if not overridden;
-
- @param params the parameters
-
- @throws InvalidParameterException invalid parameter, parameter
- already set and cannot set again, a security exception,
- etc.
- */
- protected void engineSetParameter(AlgorithmParameterSpec params)
- throws InvalidAlgorithmParameterException
- {
- throw new UnsupportedOperationException();
- }
-
- /**
- Gets the value for the specified algorithm parameter.
-
- @param param parameter name
-
- @return parameter value
-
- @throws InvalidParameterException invalid parameter
-
- @deprecated use the other getParameter
- */
- protected abstract Object engineGetParameter(String param)
- throws InvalidParameterException;
-
- /**
- Returns a clone if cloneable.
-
- @return a clone if cloneable.
-
- @throws CloneNotSupportedException if the implementation does
- not support cloning
- */
- public Object clone() throws CloneNotSupportedException
- {
- throw new CloneNotSupportedException();
- }
-}