cryptool.cpp
上传用户:filter2008
上传日期:2013-02-01
资源大小:101k
文件大小:31k
源码类别:

CA认证

开发平台:

C/C++

  1. /****************************************************************************
  2. * library : pkcs_csp.dll
  3. * Purpose : It is a cryptographic service provider which is an independent 
  4. * software module that actually performs cryptography algorithms for 
  5. * authentication, encoding, and encryption.
  6. * This DLL can be interfaced on any PKCS#11 module.  
  7. *
  8. * Copyright (C) 2003 Ilex Syst鑝es Informatiques
  9. *
  10. * This library is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU Lesser General Public
  12. * License as published by the Free Software Foundation; either
  13. * version 2.1 of the License, or (at your option) any later version.
  14. *
  15. * This library is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18. * Lesser General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU Lesser General Public
  21. * License along with this library; if not, write to the Free Software
  22. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. *
  24. * Contact :
  25. * Ilex 
  26. * 51 boulevard Voltaire
  27. * 92600 Asni鑢es-sur-Seine
  28. * pkizy@ilex.fr
  29. *
  30. * Author: Delouvrier Antoine
  31. *
  32. *******************************************************************************/
  33. /*
  34. %----------------------------------------------------------------------------
  35. % PROJECT : CSP_PKCS
  36. %
  37. % MODULE : cryptool
  38. %
  39. % VERSION : 1.00
  40. %
  41. % FILE : cryptool.cpp
  42. %
  43. % cryptool: Functions allowing various accesses to the PKCS#11
  44. %----------------------------------------------------------------------------
  45. % Version 1.00
  46. % CPX-31/03/2003-Creation
  47. %----------------------------------------------------------------------------
  48. */ 
  49. /*
  50. % Libraries ANSI or system
  51. %------------------------------
  52. */
  53. #include<windows.h>
  54. #include <stdio.h>
  55. #include <stdlib.h>
  56. #include <string.h>
  57. /*
  58. % HEADER Files include
  59. %-----------------------
  60. */
  61. #include "cryptool.h"
  62. #define CK_API      __stdcall
  63. typedef void *      SYS_HANDLE;
  64. typedef int ( CK_API *CK_PFUNCTION)();
  65. SYS_HANDLE dllPtr;
  66. int traceLevel=0;
  67. extern bool  already_initialized;
  68. extern int  pkcsInitialized;
  69. /*
  70. %--------------------------------------------------------------------------
  71. % init
  72. %
  73. % init is used to initialize DLL PKCS
  74. %  
  75. %
  76. % Parameters of entry  :
  77. % OUT pFunctionList
  78. %  
  79. % return : CKR_OK if the operation occurred well, rc if not
  80. %---------------------------------------------------------------------------
  81. */
  82. CK_RV
  83. init(CK_FUNCTION_LIST_PTR CK_PTR pFunctionList){
  84.    CK_RV rc;             // Return Code
  85.    CK_C_GetFunctionList    pFuncList;
  86.    TRACE(__LINE__,"Cryptool init BEGIN",NULL);
  87.    /* Open the PKCS11 API shared library*/
  88.    int l = 50;
  89.    char buf[50 + 1];
  90.    int rl;
  91.    rl = GetPrivateProfileString( SECTION_PKCS_NAME, KEY_PKCS_NAME ,"",(char *) buf, 51,CSP_PKCS11_INI);
  92.    if(rl==0){
  93.    TRACE(__LINE__," NO csp_pkcs.ini file found(%d)",rl);
  94.    return CKR_CANCEL;
  95.    }
  96.    dllPtr = LoadLibrary(buf);
  97.    if (!dllPtr) {
  98.    TRACE(__LINE__,"LoadLibrary error, Le Kit Pkcs#11 demand閑 n'est pas install