예제 #1
0
  /**
   * Compute the signature or MAC value over the supplied input.
   *
   * <p>It is up to the caller to ensure that the specified algorithm URI is consistent with the
   * type of signing key supplied in the signing credential.
   *
   * @param signingCredential the credential containing the signing key
   * @param algorithmURI the algorithm URI to use
   * @param input the input over which to compute the signature
   * @return the computed signature or MAC value
   * @throws SecurityException throw if the computation process results in an error
   */
  public static byte[] signWithURI(Credential signingCredential, String algorithmURI, byte[] input)
      throws SecurityException {

    String jcaAlgorithmID = SecurityHelper.getAlgorithmIDFromURI(algorithmURI);
    if (jcaAlgorithmID == null) {
      throw new SecurityException("Could not derive JCA algorithm identifier from algorithm URI");
    }

    boolean isHMAC = SecurityHelper.isHMAC(algorithmURI);

    return sign(signingCredential, jcaAlgorithmID, isHMAC, input);
  }