/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* figure out out locking semantics */ static CK_RV
nssCKFW_GetThreadSafeState(CK_C_INITIALIZE_ARGS_PTR pInitArgs,
CryptokiLockingState *pLocking_state)
{ int functionCount = 0;
/* parsed according to (PKCS #11 Section 11.4) */ /* no args, the degenerate version of case 1 */ if (!pInitArgs) {
*pLocking_state = SingleThreaded; return CKR_OK;
}
/* CKF_OS_LOCKING_OK set, Cases 2 and 4 */ if (pInitArgs->flags & CKF_OS_LOCKING_OK) {
*pLocking_state = MultiThreaded; return CKR_OK;
} if ((CK_CREATEMUTEX)NULL != pInitArgs->CreateMutex)
functionCount++; if ((CK_DESTROYMUTEX)NULL != pInitArgs->DestroyMutex)
functionCount++; if ((CK_LOCKMUTEX)NULL != pInitArgs->LockMutex)
functionCount++; if ((CK_UNLOCKMUTEX)NULL != pInitArgs->UnlockMutex)
functionCount++;
/* CKF_OS_LOCKING_OK is not set, and not functions supplied,
* explicit case 1 */ if (0 == functionCount) {
*pLocking_state = SingleThreaded; return CKR_OK;
}
/* OS_LOCKING_OK is not set and functions have been supplied. Since *ckfwusesnssbaselibrarywhichexplicitlycallsNSPR,andsince *thereisnowaytoreliablyoverridetheseexplicitcallstoNSPR, *thereforewecan'tsupportapplicationswhichhavetheirownthreading *module.ReturnCKR_CANT_LOCKiftheysuppliedthecorrectnumberof *arguments,orCKR_ARGUMENTS_BADiftheydidnotineithercasewewill
* fail the initialize */ return (4 == functionCount) ? CKR_CANT_LOCK : CKR_ARGUMENTS_BAD;
}
loser: switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CANT_LOCK: case CKR_CRYPTOKI_ALREADY_INITIALIZED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_NEED_TO_CREATE_THREADS: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: break; default:
error = CKR_GENERAL_ERROR; break;
}
for (i = 0; i < nSlots; i++) {
pSlotList[i] = i + 1;
}
return CKR_OK;
}
loser: switch (error) { case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SLOT_ID_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR;
}
loser: switch (error) { case CKR_DEVICE_REMOVED: case CKR_TOKEN_NOT_PRESENT: if (fwToken)
nssCKFWToken_Destroy(fwToken); break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_RECOGNIZED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
for (i = 0; i < nSlots; i++) { if (fwSlot == slots[i]) {
*pSlot = (CK_SLOT_ID)(CK_ULONG)(i + 1); return CKR_OK;
}
}
error = CKR_GENERAL_ERROR; /* returned something not in the slot list */
loser: switch (error) { case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_NO_EVENT: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_DEVICE_REMOVED: case CKR_TOKEN_NOT_PRESENT: if (fwToken)
nssCKFWToken_Destroy(fwToken); break; case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_RECOGNIZED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
if (nssCKFWMechanism_GetInHardware(fwMechanism, &error)) {
pInfo->flags |= CKF_HW;
} if (nssCKFWMechanism_GetCanEncrypt(fwMechanism, &error)) {
pInfo->flags |= CKF_ENCRYPT;
} if (nssCKFWMechanism_GetCanDecrypt(fwMechanism, &error)) {
pInfo->flags |= CKF_DECRYPT;
} if (nssCKFWMechanism_GetCanDigest(fwMechanism, &error)) {
pInfo->flags |= CKF_DIGEST;
} if (nssCKFWMechanism_GetCanSign(fwMechanism, &error)) {
pInfo->flags |= CKF_SIGN;
} if (nssCKFWMechanism_GetCanSignRecover(fwMechanism, &error)) {
pInfo->flags |= CKF_SIGN_RECOVER;
} if (nssCKFWMechanism_GetCanVerify(fwMechanism, &error)) {
pInfo->flags |= CKF_VERIFY;
} if (nssCKFWMechanism_GetCanVerifyRecover(fwMechanism, &error)) {
pInfo->flags |= CKF_VERIFY_RECOVER;
} if (nssCKFWMechanism_GetCanGenerate(fwMechanism, &error)) {
pInfo->flags |= CKF_GENERATE;
} if (nssCKFWMechanism_GetCanGenerateKeyPair(fwMechanism, &error)) {
pInfo->flags |= CKF_GENERATE_KEY_PAIR;
} if (nssCKFWMechanism_GetCanWrap(fwMechanism, &error)) {
pInfo->flags |= CKF_WRAP;
} if (nssCKFWMechanism_GetCanUnwrap(fwMechanism, &error)) {
pInfo->flags |= CKF_UNWRAP;
} if (nssCKFWMechanism_GetCanDerive(fwMechanism, &error)) {
pInfo->flags |= CKF_DERIVE;
}
nssCKFWMechanism_Destroy(fwMechanism);
return error;
loser: switch (error) { case CKR_DEVICE_REMOVED: case CKR_TOKEN_NOT_PRESENT: if (fwToken)
nssCKFWToken_Destroy(fwToken); break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_MECHANISM_INVALID: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_RECOGNIZED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_DEVICE_REMOVED: case CKR_TOKEN_NOT_PRESENT: if (fwToken)
nssCKFWToken_Destroy(fwToken); break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_PIN_INCORRECT: case CKR_PIN_LOCKED: case CKR_SESSION_EXISTS: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_RECOGNIZED: case CKR_TOKEN_WRITE_PROTECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_PIN_INVALID: case CKR_PIN_LEN_RANGE: case CKR_SESSION_READ_ONLY: case CKR_SESSION_HANDLE_INVALID: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_PIN_INCORRECT: case CKR_PIN_INVALID: case CKR_PIN_LEN_RANGE: case CKR_PIN_LOCKED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TOKEN_WRITE_PROTECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SESSION_COUNT: case CKR_SESSION_EXISTS: case CKR_SESSION_PARALLEL_NOT_SUPPORTED: case CKR_SESSION_READ_WRITE_SO_EXISTS: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_PRESENT: case CKR_TOKEN_NOT_RECOGNIZED: case CKR_TOKEN_WRITE_PROTECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SLOT_ID_INVALID: case CKR_TOKEN_NOT_PRESENT: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_HANDLE_INVALID: case CKR_STATE_UNSAVEABLE: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_CHANGED: case CKR_KEY_NEEDED: case CKR_KEY_NOT_NEEDED: case CKR_SAVED_STATE_INVALID: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_PIN_EXPIRED: case CKR_PIN_INCORRECT: case CKR_PIN_LOCKED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY_EXISTS: case CKR_USER_ALREADY_LOGGED_IN: case CKR_USER_ANOTHER_ALREADY_LOGGED_IN: case CKR_USER_PIN_NOT_INITIALIZED: case CKR_USER_TOO_MANY_TYPES: case CKR_USER_TYPE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCOMPLETE: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OBJECT_HANDLE_INVALID: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OBJECT_HANDLE_INVALID: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TOKEN_WRITE_PROTECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_INFORMATION_SENSITIVE: case CKR_OBJECT_HANDLE_INVALID: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ATTRIBUTE_SENSITIVE: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OBJECT_HANDLE_INVALID: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OBJECT_HANDLE_INVALID: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
if (CKR_OK != error) {
nssCKFWFindObjects_Destroy(fwFindObjects); goto loser;
}
return CKR_OK;
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_ACTIVE: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: /* verify error */ switch (error) { case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_INVALID: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_CLOSED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_ENCRYPTED_DATA_INVALID: case CKR_ENCRYPTED_DATA_LEN_RANGE: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; case CKR_DATA_LEN_RANGE:
error = CKR_ENCRYPTED_DATA_LEN_RANGE; break; case CKR_DATA_INVALID:
error = CKR_ENCRYPTED_DATA_INVALID; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_ENCRYPTED_DATA_INVALID: case CKR_ENCRYPTED_DATA_LEN_RANGE: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; case CKR_DATA_LEN_RANGE:
error = CKR_ENCRYPTED_DATA_LEN_RANGE; break; case CKR_DATA_INVALID:
error = CKR_ENCRYPTED_DATA_INVALID; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_FAILED: case CKR_FUNCTION_CANCELED: case CKR_ENCRYPTED_DATA_INVALID: case CKR_ENCRYPTED_DATA_LEN_RANGE: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; case CKR_DATA_LEN_RANGE:
error = CKR_ENCRYPTED_DATA_LEN_RANGE; break; case CKR_DATA_INVALID:
error = CKR_ENCRYPTED_DATA_INVALID; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_INDIGESTIBLE: case CKR_KEY_SIZE_RANGE: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_INVALID: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: case CKR_FUNCTION_REJECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: case CKR_FUNCTION_REJECTED: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_INVALID: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_INVALID: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SIGNATURE_INVALID: case CKR_SIGNATURE_LEN_RANGE: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SIGNATURE_INVALID: case CKR_SIGNATURE_LEN_RANGE: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_FUNCTION_NOT_PERMITTED: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_CLOSED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
error = nssCKFWSession_UpdateFinal(fwSession,
NSSCKFWCryptoOperationType_VerifyRecover,
NSSCKFWCryptoOperationState_SignVerify,
pSignature, ulSignatureLen, pData, pulDataLen); if (CKR_OK == error) { return CKR_OK;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_INVALID: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SIGNATURE_INVALID: case CKR_SIGNATURE_LEN_RANGE: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_ENCRYPTED_DATA_INVALID: case CKR_ENCRYPTED_DATA_LEN_RANGE: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; case CKR_DATA_INVALID:
error = CKR_ENCRYPTED_DATA_INVALID; break; case CKR_DATA_LEN_RANGE:
error = CKR_ENCRYPTED_DATA_LEN_RANGE; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DATA_LEN_RANGE: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_ENCRYPTED_DATA_INVALID: case CKR_ENCRYPTED_DATA_LEN_RANGE: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_NOT_INITIALIZED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: break; case CKR_DATA_INVALID:
error = CKR_ENCRYPTED_DATA_INVALID; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCOMPLETE: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_DOMAIN_PARAMS_INVALID: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCOMPLETE: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_NOT_WRAPPABLE: case CKR_KEY_SIZE_RANGE: case CKR_KEY_UNEXTRACTABLE: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_WRAPPING_KEY_HANDLE_INVALID: case CKR_WRAPPING_KEY_SIZE_RANGE: case CKR_WRAPPING_KEY_TYPE_INCONSISTENT: break; case CKR_KEY_TYPE_INCONSISTENT:
error = CKR_WRAPPING_KEY_TYPE_INCONSISTENT; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_BUFFER_TOO_SMALL: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_DOMAIN_PARAMS_INVALID: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCOMPLETE: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_UNWRAPPING_KEY_HANDLE_INVALID: case CKR_UNWRAPPING_KEY_SIZE_RANGE: case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT: case CKR_USER_NOT_LOGGED_IN: case CKR_WRAPPED_KEY_INVALID: case CKR_WRAPPED_KEY_LEN_RANGE: break; case CKR_KEY_HANDLE_INVALID:
error = CKR_UNWRAPPING_KEY_HANDLE_INVALID; break; case CKR_KEY_SIZE_RANGE:
error = CKR_UNWRAPPING_KEY_SIZE_RANGE; break; case CKR_KEY_TYPE_INCONSISTENT:
error = CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT; break; case CKR_ENCRYPTED_DATA_INVALID:
error = CKR_WRAPPED_KEY_INVALID; break; case CKR_ENCRYPTED_DATA_LEN_RANGE:
error = CKR_WRAPPED_KEY_LEN_RANGE; break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: /* verify error */ switch (error) { case CKR_ARGUMENTS_BAD: case CKR_ATTRIBUTE_READ_ONLY: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_ATTRIBUTE_VALUE_INVALID: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_DEVICE_REMOVED: case CKR_DOMAIN_PARAMS_INVALID: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_KEY_HANDLE_INVALID: case CKR_KEY_SIZE_RANGE: case CKR_KEY_TYPE_INCONSISTENT: case CKR_MECHANISM_INVALID: case CKR_MECHANISM_PARAM_INVALID: case CKR_OPERATION_ACTIVE: case CKR_PIN_EXPIRED: case CKR_SESSION_CLOSED: case CKR_SESSION_HANDLE_INVALID: case CKR_SESSION_READ_ONLY: case CKR_TEMPLATE_INCOMPLETE: case CKR_TEMPLATE_INCONSISTENT: case CKR_TOKEN_WRITE_PROTECTED: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
} return error;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_ACTIVE: case CKR_RANDOM_SEED_NOT_SUPPORTED: case CKR_RANDOM_NO_RNG: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
loser: switch (error) { case CKR_SESSION_CLOSED: /* destroy session? */ break; case CKR_DEVICE_REMOVED: /* (void)nssCKFWToken_Destroy(fwToken); */ break; case CKR_ARGUMENTS_BAD: case CKR_CRYPTOKI_NOT_INITIALIZED: case CKR_DEVICE_ERROR: case CKR_DEVICE_MEMORY: case CKR_FUNCTION_CANCELED: case CKR_FUNCTION_FAILED: case CKR_GENERAL_ERROR: case CKR_HOST_MEMORY: case CKR_OPERATION_ACTIVE: case CKR_RANDOM_NO_RNG: case CKR_SESSION_HANDLE_INVALID: case CKR_USER_NOT_LOGGED_IN: break; default: case CKR_OK:
error = CKR_GENERAL_ERROR; break;
}
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.98Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.