signature.java
来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 568 行 · 第 1/2 页
JAVA
568 行
* the private key to sign with. * @throws InvalidKeyException * if the key is invalid. */ public final void initSign(PrivateKey privateKey) throws InvalidKeyException { state = SIGN; engineInitSign(privateKey); } /** * Initializes this class with the private key and source of randomness for * signing purposes. * * @param privateKey * the private key to sign with. * @param random * the {@link SecureRandom} to use. * @throws InvalidKeyException * if the key is invalid. */ public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException { state = SIGN; engineInitSign(privateKey, random); } /** * Returns the signature bytes of all the data fed to this instance. The * format of the output depends on the underlying signature algorithm. * * @return the signature bytes. * @throws SignatureException * if the engine is not properly initialized. */ public final byte[] sign() throws SignatureException { if (state == SIGN) return engineSign(); else throw new SignatureException(); } /** * Generates signature bytes of all the data fed to this instance and stores * it in the designated array. The format of the result depends on the * underlying signature algorithm. * * <p>After calling this method, the instance is reset to its initial state * and can then be used to generate additional signatures.</p> * * <p><b>IMPLEMENTATION NOTE:</b> Neither this method nor the GNU provider * will return partial digests. If <code>len</code> is less than the * signature length, this method will throw a {@link SignatureException}. If * it is greater than or equal then it is ignored.</p> * * @param outbuf * array of bytes of where to store the resulting signature bytes. * @param offset * the offset to start at in the array. * @param len * the number of the bytes to use in the array. * @return the real number of bytes used. * @throws SignatureException * if the engine is not properly initialized. * @since 1.2 */ public final int sign(byte[] outbuf, int offset, int len) throws SignatureException { if (state == SIGN) return engineSign(outbuf, offset, len); else throw new SignatureException(); } /** * Verifies a designated signature. * * @param signature * the signature bytes to verify. * @return <code>true</code> if verified, <code>false</code> otherwise. * @throws SignatureException * if the engine is not properly initialized or the signature does * not check. */ public final boolean verify(byte[]signature) throws SignatureException { if (state == VERIFY) return engineVerify(signature); else throw new SignatureException(); } /** * Verifies a designated signature. * * @param signature * the signature bytes to verify. * @param offset * the offset to start at in the array. * @param length * the number of the bytes to use from the array. * @return <code>true</code> if verified, <code>false</code> otherwise. * @throws IllegalArgumentException * if the <code>signature</code> byte array is <code>null</code>, * or the <code>offset</code> or <code>length</code> is less * than <code>0</code>, or the sum of the <code>offset</code> * and <code>length</code> is greater than the length of the * <code>signature</code> byte array. * @throws SignatureException * if the engine is not properly initialized or the signature does * not check. */ public final boolean verify(byte[] signature, int offset, int length) throws SignatureException { if (state != VERIFY) throw new SignatureException("illegal state"); if (signature == null) throw new IllegalArgumentException("signature is null"); if (offset < 0) throw new IllegalArgumentException("offset is less than 0"); if (length < 0) throw new IllegalArgumentException("length is less than 0"); if (offset + length < signature.length) throw new IllegalArgumentException("range is out of bounds"); return engineVerify(signature, offset, length); } /** * Updates the data to be signed or verified with the specified byte. * * @param b * the byte to update with. * @throws SignatureException * if the engine is not properly initialized. */ public final void update(byte b) throws SignatureException { if (state != UNINITIALIZED) engineUpdate(b); else throw new SignatureException(); } /** * Updates the data to be signed or verified with the specified bytes. * * @param data * the array of bytes to use. * @throws SignatureException * if the engine is not properly initialized. */ public final void update(byte[]data) throws SignatureException { if (state != UNINITIALIZED) engineUpdate(data, 0, data.length); else throw new SignatureException(); } /** * Updates the data to be signed or verified with the specified bytes. * * @param data * an array of bytes to use. * @param off * the offset to start at in the array. * @param len * the number of bytes to use from the array. * @throws SignatureException * if the engine is not properly initialized. */ public final void update(byte[]data, int off, int len) throws SignatureException { if (state != UNINITIALIZED) engineUpdate(data, off, len); else throw new SignatureException(); } /** * Returns the name of the algorithm currently used. The names of algorithms * are usually SHA/DSA or SHA/RSA. * * @return name of algorithm. */ public final String getAlgorithm() { return algorithm; } /** * Returns a rstring representation of this instance. * * @return a rstring representation of this instance. */ public String toString() { return (algorithm + " Signature"); } /** * Sets the specified algorithm parameter to the specified value. * * @param param * the parameter name. * @param value * the parameter value. * @throws InvalidParameterException * if the parameter is invalid, the parameter is already set and * can not be changed, a security exception occured, etc. * @deprecated use the other setParameter */ public final void setParameter(String param, Object value) throws InvalidParameterException { engineSetParameter(param, value); } /** * Sets the signature engine with the specified {@link AlgorithmParameterSpec}. * * <p>By default, and unless overriden by the concrete SPI, this method always * throws an {@link UnsupportedOperationException}.</p> * * @param params * the parameters to use for intializing this instance. * @throws InvalidParameterException * if the parameter is invalid, the parameter is already set and * cannot be changed, a security exception occured, etc. */ public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException { engineSetParameter(params); } /** * Return the parameters of the algorithm used in this instance as an * {@link AlgorithmParameters}. * * @return the parameters used with this instance, or <code>null</code> if * this instance does not use any parameters. */ public final AlgorithmParameters getParameters() { return engineGetParameters(); } /** * Returns the value for the specified algorithm parameter. * * @param param * the parameter name. * @return the parameter value. * @throws InvalidParameterException * if the parameter is invalid. * @deprecated use the other getParameter */ public final Object getParameter(String param) throws InvalidParameterException { return engineGetParameter(param); } /** * Returns a clone of this instance. * * @return a clone of this instace. * @throws CloneNotSupportedException * if the implementation does not support cloning. */ public Object clone() throws CloneNotSupportedException { return super.clone(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?