2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License (the "License").
2N/A * You may not use this file except in compliance with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A/*
2N/A * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
2N/A */
2N/A
2N/A
2N/A/*
2N/A * Block comment which describes the contents of this file.
2N/A */
2N/A
2N/A#include <stdio.h>
2N/A#include <security/cryptoki.h>
2N/A
2N/A/*
2N/A * pkcs11_strerror: returns a string representation of the given return code.
2N/A * The string returned is static pointer. It doesn't need to be free'd
2N/A * by the caller.
2N/A */
2N/Achar *
2N/Apkcs11_strerror(CK_RV rv)
2N/A{
2N/A static char errstr[128];
2N/A
2N/A switch (rv) {
2N/A case CKR_OK:
2N/A return ("CKR_OK");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_CANCEL:
2N/A return ("CKR_CANCEL");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_HOST_MEMORY:
2N/A return ("CKR_HOST_MEMORY");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SLOT_ID_INVALID:
2N/A return ("CKR_SLOT_ID_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_GENERAL_ERROR:
2N/A return ("CKR_GENERAL_ERROR");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_FUNCTION_FAILED:
2N/A return ("CKR_FUNCTION_FAILED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ARGUMENTS_BAD:
2N/A return ("CKR_ARGUMENTS_BAD");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_NO_EVENT:
2N/A return ("CKR_NO_EVENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_NEED_TO_CREATE_THREADS:
2N/A return ("CKR_NEED_TO_CREATE_THREADS");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_CANT_LOCK:
2N/A return ("CKR_CANT_LOCK");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ATTRIBUTE_READ_ONLY:
2N/A return ("CKR_ATTRIBUTE_READ_ONLY");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ATTRIBUTE_SENSITIVE:
2N/A return ("CKR_ATTRIBUTE_SENSITIVE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ATTRIBUTE_TYPE_INVALID:
2N/A return ("CKR_ATTRIBUTE_TYPE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ATTRIBUTE_VALUE_INVALID:
2N/A return ("CKR_ATTRIBUTE_VALUE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DATA_INVALID:
2N/A return ("CKR_DATA_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DATA_LEN_RANGE:
2N/A return ("CKR_DATA_LEN_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DEVICE_ERROR:
2N/A return ("CKR_DEVICE_ERROR");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DEVICE_MEMORY:
2N/A return ("CKR_DEVICE_MEMORY");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DEVICE_REMOVED:
2N/A return ("CKR_DEVICE_REMOVED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ENCRYPTED_DATA_INVALID:
2N/A return ("CKR_ENCRYPTED_DATA_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_ENCRYPTED_DATA_LEN_RANGE:
2N/A return ("CKR_ENCRYPTED_DATA_LEN_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_FUNCTION_CANCELED:
2N/A return ("CKR_FUNCTION_CANCELED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_FUNCTION_NOT_PARALLEL:
2N/A return ("CKR_FUNCTION_NOT_PARALLEL");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_FUNCTION_NOT_SUPPORTED:
2N/A return ("CKR_FUNCTION_NOT_SUPPORTED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_HANDLE_INVALID:
2N/A return ("CKR_KEY_HANDLE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_SIZE_RANGE:
2N/A return ("CKR_KEY_SIZE_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_TYPE_INCONSISTENT:
2N/A return ("CKR_KEY_TYPE_INCONSISTENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_NOT_NEEDED:
2N/A return ("CKR_KEY_NOT_NEEDED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_CHANGED:
2N/A return ("CKR_KEY_CHANGED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_NEEDED:
2N/A return ("CKR_KEY_NEEDED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_INDIGESTIBLE:
2N/A return ("CKR_KEY_INDIGESTIBLE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_FUNCTION_NOT_PERMITTED:
2N/A return ("CKR_KEY_FUNCTION_NOT_PERMITTED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_NOT_WRAPPABLE:
2N/A return ("CKR_KEY_NOT_WRAPPABLE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_KEY_UNEXTRACTABLE:
2N/A return ("CKR_KEY_UNEXTRACTABLE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_MECHANISM_INVALID:
2N/A return ("CKR_MECHANISM_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_MECHANISM_PARAM_INVALID:
2N/A return ("CKR_MECHANISM_PARAM_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_OBJECT_HANDLE_INVALID:
2N/A return ("CKR_OBJECT_HANDLE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_OPERATION_ACTIVE:
2N/A return ("CKR_OPERATION_ACTIVE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_OPERATION_NOT_INITIALIZED:
2N/A return ("CKR_OPERATION_NOT_INITIALIZED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_PIN_INCORRECT:
2N/A return ("CKR_PIN_INCORRECT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_PIN_INVALID:
2N/A return ("CKR_PIN_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_PIN_LEN_RANGE:
2N/A return ("CKR_PIN_LEN_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_PIN_EXPIRED:
2N/A return ("CKR_PIN_EXPIRED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_PIN_LOCKED:
2N/A return ("CKR_PIN_LOCKED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_CLOSED:
2N/A return ("CKR_SESSION_CLOSED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_COUNT:
2N/A return ("CKR_SESSION_COUNT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_HANDLE_INVALID:
2N/A return ("CKR_SESSION_HANDLE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_PARALLEL_NOT_SUPPORTED:
2N/A return ("CKR_SESSION_PARALLEL_NOT_SUPPORTED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_READ_ONLY:
2N/A return ("CKR_SESSION_READ_ONLY");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_EXISTS:
2N/A return ("CKR_SESSION_EXISTS");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_READ_ONLY_EXISTS:
2N/A return ("CKR_SESSION_READ_ONLY_EXISTS");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SESSION_READ_WRITE_SO_EXISTS:
2N/A return ("CKR_SESSION_READ_WRITE_SO_EXISTS");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SIGNATURE_INVALID:
2N/A return ("CKR_SIGNATURE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SIGNATURE_LEN_RANGE:
2N/A return ("CKR_SIGNATURE_LEN_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_TEMPLATE_INCOMPLETE:
2N/A return ("CKR_TEMPLATE_INCOMPLETE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_TEMPLATE_INCONSISTENT:
2N/A return ("CKR_TEMPLATE_INCONSISTENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_TOKEN_NOT_PRESENT:
2N/A return ("CKR_TOKEN_NOT_PRESENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_TOKEN_NOT_RECOGNIZED:
2N/A return ("CKR_TOKEN_NOT_RECOGNIZED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_TOKEN_WRITE_PROTECTED:
2N/A return ("CKR_TOKEN_WRITE_PROTECTED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_UNWRAPPING_KEY_HANDLE_INVALID:
2N/A return ("CKR_UNWRAPPING_KEY_HANDLE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_UNWRAPPING_KEY_SIZE_RANGE:
2N/A return ("CKR_UNWRAPPING_KEY_SIZE_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT:
2N/A return ("CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_ALREADY_LOGGED_IN:
2N/A return ("CKR_USER_ALREADY_LOGGED_IN");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_NOT_LOGGED_IN:
2N/A return ("CKR_USER_NOT_LOGGED_IN");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_PIN_NOT_INITIALIZED:
2N/A return ("CKR_USER_PIN_NOT_INITIALIZED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_TYPE_INVALID:
2N/A return ("CKR_USER_TYPE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_ANOTHER_ALREADY_LOGGED_IN:
2N/A return ("CKR_USER_ANOTHER_ALREADY_LOGGED_IN");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_USER_TOO_MANY_TYPES:
2N/A return ("CKR_USER_TOO_MANY_TYPES");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_WRAPPED_KEY_INVALID:
2N/A return ("CKR_WRAPPED_KEY_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_WRAPPED_KEY_LEN_RANGE:
2N/A return ("CKR_WRAPPED_KEY_LEN_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_WRAPPING_KEY_HANDLE_INVALID:
2N/A return ("CKR_WRAPPING_KEY_HANDLE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_WRAPPING_KEY_SIZE_RANGE:
2N/A return ("CKR_WRAPPING_KEY_SIZE_RANGE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_WRAPPING_KEY_TYPE_INCONSISTENT:
2N/A return ("CKR_WRAPPING_KEY_TYPE_INCONSISTENT");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_RANDOM_SEED_NOT_SUPPORTED:
2N/A return ("CKR_RANDOM_SEED_NOT_SUPPORTED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_RANDOM_NO_RNG:
2N/A return ("CKR_RANDOM_NO_RNG");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_DOMAIN_PARAMS_INVALID:
2N/A return ("CKR_DOMAIN_PARAMS_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_BUFFER_TOO_SMALL:
2N/A return ("CKR_BUFFER_TOO_SMALL");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_SAVED_STATE_INVALID:
2N/A return ("CKR_SAVED_STATE_INVALID");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_INFORMATION_SENSITIVE:
2N/A return ("CKR_INFORMATION_SENSITIVE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_STATE_UNSAVEABLE:
2N/A return ("CKR_STATE_UNSAVEABLE");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_CRYPTOKI_NOT_INITIALIZED:
2N/A return ("CKR_CRYPTOKI_NOT_INITIALIZED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_CRYPTOKI_ALREADY_INITIALIZED:
2N/A return ("CKR_CRYPTOKI_ALREADY_INITIALIZED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_MUTEX_BAD:
2N/A return ("CKR_MUTEX_BAD");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_MUTEX_NOT_LOCKED:
2N/A return ("CKR_MUTEX_NOT_LOCKED");
2N/A /* NOTREACHED */
2N/A break;
2N/A case CKR_VENDOR_DEFINED:
2N/A return ("CKR_VENDOR_DEFINED");
2N/A /* NOTREACHED */
2N/A break;
2N/A default:
2N/A /* rv not found */
2N/A (void) snprintf(errstr, sizeof (errstr),
2N/A "Unknown return code: 0x%lx", rv);
2N/A return (errstr);
2N/A /* NOTREACHED */
2N/A break;
2N/A }
2N/A}