All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xipki.pkcs11.wrapper.PKCS11Exception Maven / Gradle / Ivy

The newest version!
// Copyright (c) 2022 xipki. All rights reserved.
// License Apache License 2.0

package org.xipki.pkcs11.wrapper;

/**
 * This is the superclass of all checked exceptions used by this package. An
 * Exception of this class indicates that a function call to the underlying
 * PKCS#11 module returned a value not equal to CKR_OK. The application can get
 * the returned value by calling getErrorCode(). A return value not equal to
 * CKR_OK is the only reason for such an exception to be thrown.
 * PKCS#11 defines the meaning of an error-code, which may depend on the
 * context in which the error occurs.
 *
 * @author Lijun Liao (xipki)
 */
public class PKCS11Exception extends TokenException {

  /**
   * The code of the error which was the reason for this exception.
   */
  private final long errorCode;

  private final String errorName;

  /**
   * Constructor taking the error code as defined for the CKR_* constants
   * in PKCS#11.
   *
   * @param errorCode
   *          The PKCS#11 error code (return value).
   */
  public PKCS11Exception(long errorCode) {
    this(errorCode, PKCS11Constants.ckrCodeToName(errorCode));
  }

  /**
   * Constructor taking the error code as defined for the CKR_* constants
   * in PKCS#11.
   *
   * @param errorCode
   *          The PKCS#11 error code (return value).
   * @param name
   *          The error name.
   */
  public PKCS11Exception(long errorCode, String name) {
    super(name);
    if (name == null || name.isEmpty()) {
      throw new IllegalArgumentException("name must not be null or blank.");
    }
    this.errorName = name;
    this.errorCode = errorCode;
  }

  /**
   * Returns the PKCS#11 error code.
   *
   * @return The error code; e.g. 0x00000030.
   */
  public long getErrorCode() {
    return errorCode;
  }

  public String getErrorName() {
    return errorName;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy