⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 IBM的Linux上的PKCS#11实现
💻 C
📖 第 1 页 / 共 2 页
字号:
             damage to or loss of data, programs or equipment, and             unavailability or interruption of operations.              6. DISCLAIMER OF LIABILITY             EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER             RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY             FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,             OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION             LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF             LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT             (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT             OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE             OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE             POSSIBILITY OF SUCH DAMAGES.             7. GENERAL             If any provision of this Agreement is invalid or             unenforceable under applicable law, it shall not affect             the validity or enforceability of the remainder of the             terms of this Agreement, and without further action by the             parties hereto, such provision shall be reformed to the             minimum extent necessary to make such provision valid and             enforceable.             If Recipient institutes patent litigation against a             Contributor with respect to a patent applicable to             software (including a cross-claim or counterclaim in a             lawsuit), then any patent licenses granted by that             Contributor to such Recipient under this Agreement shall             terminate as of the date such litigation is filed. In             addition, If Recipient institutes patent litigation             against any entity (including a cross-claim or             counterclaim in a lawsuit) alleging that the Program             itself (excluding combinations of the Program with other             software or hardware) infringes such Recipient's             patent(s), then such Recipient's rights granted under             Section 2(b) shall terminate as of the date such             litigation is filed.             All Recipient's rights under this Agreement shall             terminate if it fails to comply with any of the material             terms or conditions of this Agreement and does not cure             such failure in a reasonable period of time after becoming             aware of such noncompliance. If all Recipient's rights             under this Agreement terminate, Recipient agrees to cease             use and distribution of the Program as soon as reasonably             practicable. However, Recipient's obligations under this             Agreement and any licenses granted by Recipient relating             to the Program shall continue and survive.              Everyone is permitted to copy and distribute copies of             this Agreement, but in order to avoid inconsistency the             Agreement is copyrighted and may only be modified in the             following manner. The Agreement Steward reserves the right             to publish new versions (including revisions) of this             Agreement from time to time. No one other than the             Agreement Steward has the right to modify this Agreement.             IBM is the initial Agreement Steward. IBM may assign the             responsibility to serve as the Agreement Steward to a             suitable separate entity. Each new version of the             Agreement will be given a distinguishing version number.             The Program (including Contributions) may always be             distributed subject to the version of the Agreement under             which it was received. In addition, after a new version of             the Agreement is published, Contributor may elect to             distribute the Program (including its Contributions) under             the new version. Except as expressly stated in Sections             2(a) and 2(b) above, Recipient receives no rights or             licenses to the intellectual property of any Contributor             under this Agreement, whether expressly, by implication,             estoppel or otherwise. All rights in the Program not             expressly granted under this Agreement are reserved.             This Agreement is governed by the laws of the State of New             York and the intellectual property laws of the United             States of America. No party to this Agreement will bring a             legal action under this Agreement more than one year after             the cause of action arose. Each party waives its rights to             a jury trial in any resulting litigation. *//* (C) COPYRIGHT International Business Machines Corp. 2001          */// File:  util.c//// Generic utility routines//    * linked-list managment//#include <pthread.h>#if defined(LEEDS_BUILD)  #include <stdio.h>  #include <stdlib.h>  #include "pkcs11types.h"#ifdef PKCS64  #include "pkcs32.h"#endif  #include "defs.h"  #include "h_extern.h"#define CK_ULONG_32  CK_ULONG#define CK_SSL3_MASTER_KEY_DERIVE_PARAMS_32 CK_SSL3_MASTER_KEY_DERIVE_PARAMS#endif// Routine to get the mechanism parameters length properly// adjusted.... Some mechs with structures as parameters need // to have their structures re-cast to 32bit values, but we// will address these if they ever are supported.CK_ULONG_32get_mech_parameter_len(CK_MECHANISM_PTR  pMech){   switch (pMech->mechanism){      // Mechanisms wich have parameters of type CK_MAC_GENERAL_PARAMS      case CKM_MD5_HMAC_GENERAL:       case CKM_SHA_1_HMAC_GENERAL:       case CKM_SSL3_MD5_MAC:      case CKM_SSL3_SHA1_MAC:         {	// These are 32 bit numbers really in 64Bit so we	// recase the answer.         return(sizeof(CK_ULONG_32));         break;         }      case CKM_SSL3_KEY_AND_MAC_DERIVE:         return (sizeof(CK_SSL3_KEY_MAT_PARAMS));         break;      case CKM_SSL3_MASTER_KEY_DERIVE:         return (sizeof(CK_SSL3_MASTER_KEY_DERIVE_PARAMS_32));         break;      default:         return (pMech->ulParameterLen);   }}#ifdef _BIG_ENDIAN// Routine to adjust mechanism parameters for endianness// Takes the mechanism, and if it needs adjustment then// it will allocate a new parameter block, copy the// data and adjust it for each mechanism.  Returning the// adjusted data.  User MUST free the memory if the// returned value is not NULL.CK_VOID_PTR adjust_mech_parameter(CK_MECHANISM_PTR  pMech){   switch (pMech->mechanism){      // Mechanisms wich have parameters of type CK_MAC_GENERAL_PARAMS      case CKM_MD5_HMAC_GENERAL:       case CKM_SHA_1_HMAC_GENERAL:       case CKM_SSL3_MD5_MAC:      case CKM_SSL3_SHA1_MAC:         {#if __64BIT__            CK_MAC_GENERAL_PARAMS_PTR_32  nptr;#else            CK_MAC_GENERAL_PARAMS_PTR  nptr;#endif            CK_MAC_GENERAL_PARAMS  *ptr;            ptr = (CK_MAC_GENERAL_PARAMS *)pMech->pParameter;#if __64BIT__            nptr = (CK_MAC_GENERAL_PARAMS_PTR_32)malloc(sizeof(CK_MAC_GENERAL_PARAMS_32));#else            nptr = (CK_MAC_GENERAL_PARAMS_PTR)malloc((long)sizeof(CK_MAC_GENERAL_PARAMS));#endif            // What does one do if malloc fails here....  For now we assume all            // is ok.            *nptr = long_reverse((CK_ULONG)*ptr);            return nptr;         break;         }#if __64BIT__      case CKM_SSL3_PRE_MASTER_KEY_GEN:         {         VERSION  *nptr;         nptr = (VERSION *)malloc(sizeof(VERSION));         return nptr;         }         break;#endif      default:            return NULL;  // Not one of the mechanisms which needs adjusting   }}#elseCK_VOID_PTR adjust_mech_parameter(CK_MECHANISM_PTR  pMech){   return NULL;  // no endian junk going on here}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -