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 + -
显示快捷键?