resolve problem with very old compiler (gcc 4.0); refs #28
This commit is contained in:
		
							
								
								
									
										134
									
								
								src/cryptoki.hxx
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								src/cryptoki.hxx
									
									
									
									
									
								
							| @@ -830,6 +830,10 @@ namespace cryptoki { | ||||
|  | ||||
|       //@} | ||||
|  | ||||
|       Library& library() { | ||||
|         return _library; | ||||
|       } | ||||
|  | ||||
|       MechanismInfo mechanisminfo(CK_MECHANISM_TYPE mechanism) { | ||||
|         CRYPTOLOG("log"); | ||||
|         MechanismInfo info(mechanism); | ||||
| @@ -962,7 +966,7 @@ namespace cryptoki { | ||||
|  | ||||
|       bool check(CK_RV result, const std::string& context="") { | ||||
|         _res = result; | ||||
|         if (_slot._library.exc() && !*this) { | ||||
|         if (_slot.library().exc() && !*this) { | ||||
|           if (!context.empty()) { | ||||
|             throw access_error(context+": "+error()); | ||||
|           } else { | ||||
| @@ -976,7 +980,7 @@ namespace cryptoki { | ||||
|       void open(bool rw=false) { | ||||
|         CRYPTOLOG("references: "<<slots().count(_slot._slot)); | ||||
|         if (slots().count(_slot._slot)==0) { | ||||
|           check(_slot._library->C_OpenSession | ||||
|           check(_slot.library()->C_OpenSession | ||||
|                 (_slot._slot, CKF_SERIAL_SESSION|(rw?CKF_RW_SESSION:0), | ||||
|                  0, 0, &_session), | ||||
|                 CRYPTOKI_FN_LOG("C_OpenSession")); | ||||
| @@ -991,7 +995,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("references: "<<slots().count(_slot._slot)); | ||||
|         if (slots().count(_slot._slot)==1) { | ||||
|           slots().erase(slots().find(_slot._slot)); | ||||
|           check(_slot._library->C_CloseSession(_session), | ||||
|           check(_slot.library()->C_CloseSession(_session), | ||||
|                 CRYPTOKI_FN_LOG("C_CloseSession")); | ||||
|         } else { | ||||
|           slots().erase(slots().find(_slot._slot)); | ||||
| @@ -1078,7 +1082,7 @@ namespace cryptoki { | ||||
|  | ||||
|       /*! @return error text of last cryptoki call */ | ||||
|       std::string error() { | ||||
|         return _slot._library.error(_res); | ||||
|         return _slot.library().error(_res); | ||||
|       } | ||||
|  | ||||
|       //@} | ||||
| @@ -1092,7 +1096,7 @@ namespace cryptoki { | ||||
|       bool cancel() { | ||||
|         CRYPTOLOG("log"); | ||||
|         //! calls @c C_CancelFunction | ||||
|         return check(_slot._library->C_CancelFunction(_session), | ||||
|         return check(_slot.library()->C_CancelFunction(_session), | ||||
|                      CRYPTOKI_FN_LOG("C_CancelFunction")); | ||||
|       } | ||||
|  | ||||
| @@ -1105,7 +1109,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_Digest | ||||
|         check(_slot._library->C_Digest | ||||
|         check(_slot.library()->C_Digest | ||||
|               (_session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1120,7 +1124,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_DigestEncryptUpdate | ||||
|         check(_slot._library->C_DigestEncryptUpdate | ||||
|         check(_slot.library()->C_DigestEncryptUpdate | ||||
|               (_session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1134,7 +1138,7 @@ namespace cryptoki { | ||||
|       bool digestfinal() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_DigestFinal | ||||
|         return check(_slot._library->C_DigestFinal(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|         return check(_slot.library()->C_DigestFinal(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_DigestFinal")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1144,7 +1148,7 @@ namespace cryptoki { | ||||
|       bool digestinit() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_DigestInit | ||||
|         return check(_slot._library->C_DigestInit(_session, CK_MECHANISM_PTR), | ||||
|         return check(_slot.library()->C_DigestInit(_session, CK_MECHANISM_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_DigestInit")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1154,7 +1158,7 @@ namespace cryptoki { | ||||
|       bool digestupdate() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_DigestUpdate | ||||
|         return check(_slot._library->C_DigestUpdate(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_DigestUpdate(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_DigestUpdate")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1164,7 +1168,7 @@ namespace cryptoki { | ||||
|       bool findobjectsfinal() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_FindObjectsFinal | ||||
|         return check(_slot._library->C_FindObjectsFinal(_session), | ||||
|         return check(_slot.library()->C_FindObjectsFinal(_session), | ||||
|                      CRYPTOKI_FN_LOG("C_FindObjectsFinal")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1174,7 +1178,7 @@ namespace cryptoki { | ||||
|       bool findobjectsinit() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_FindObjectsInit | ||||
|         return check(_slot._library->C_FindObjectsInit(_session, CK_ATTRIBUTE_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_FindObjectsInit(_session, CK_ATTRIBUTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_FindObjectsInit")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1184,7 +1188,7 @@ namespace cryptoki { | ||||
|       bool findobjects() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_FindObjects | ||||
|         return check(_session->_slot._library->C_FindObjects(_session, CK_OBJECT_HANDLE_PTR, CK_ULONG, | ||||
|         return check(_session->_slot.library()->C_FindObjects(_session, CK_OBJECT_HANDLE_PTR, CK_ULONG, | ||||
|                                    CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_FindObjects")); | ||||
|       } | ||||
| @@ -1195,7 +1199,7 @@ namespace cryptoki { | ||||
|       bool generaterandom() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GenerateRandom | ||||
|         return check(_slot._library->C_GenerateRandom(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_GenerateRandom(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_GenerateRandom")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1205,7 +1209,7 @@ namespace cryptoki { | ||||
|       bool getfunctionstatus() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GetFunctionStatus | ||||
|         return check(_slot._library->C_GetFunctionStatus(_session), | ||||
|         return check(_slot.library()->C_GetFunctionStatus(_session), | ||||
|                      CRYPTOKI_FN_LOG("C_GetFunctionStatus")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1215,7 +1219,7 @@ namespace cryptoki { | ||||
|       bool getoperationstate() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GetOperationState | ||||
|         return check(_slot._library->C_GetOperationState(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|         return check(_slot.library()->C_GetOperationState(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_GetOperationState")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1255,7 +1259,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("log"); | ||||
|         CK_SESSION_INFO info; | ||||
|         //! calls @c C_GetSessionInfo | ||||
|         check(_slot._library->C_GetSessionInfo(_session, &info), | ||||
|         check(_slot.library()->C_GetSessionInfo(_session, &info), | ||||
|               CRYPTOKI_FN_LOG("C_GetSessionInfo")); | ||||
|         return info; | ||||
|       } | ||||
| @@ -1276,7 +1280,7 @@ namespace cryptoki { | ||||
|       bool initpin() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_InitPIN | ||||
|         return check(_slot._library->C_InitPIN(_session, CK_CHAR_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_InitPIN(_session, CK_CHAR_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_InitPIN")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1292,7 +1296,7 @@ namespace cryptoki { | ||||
|                 CK_USER_TYPE userType=CKU_USER): _session(session) { | ||||
|             CRYPTOLOG("log"); | ||||
|             //! calls @c C_Login | ||||
|             _session.check(_session._slot._library->C_Login | ||||
|             _session.check(_session._slot.library()->C_Login | ||||
|                             (_session._session, userType, | ||||
|                              (CK_CHAR*)pin.c_str(), | ||||
|                              pin.size()), | ||||
| @@ -1302,7 +1306,7 @@ namespace cryptoki { | ||||
|           ~Login() { | ||||
|             try { | ||||
|               //! calls @c C_Logout | ||||
|               _session.check(_session._slot._library->C_Logout | ||||
|               _session.check(_session._slot.library()->C_Logout | ||||
|                              (_session._session), | ||||
|                              CRYPTOKI_FN_LOG("C_Logout")); | ||||
|             } catch (const std::exception& x) { | ||||
| @@ -1339,7 +1343,7 @@ namespace cryptoki { | ||||
|       bool seedrandom() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SeedRandom | ||||
|         return check(_slot._library->C_SeedRandom(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_SeedRandom(_session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_SeedRandom")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1349,7 +1353,7 @@ namespace cryptoki { | ||||
|       bool setpin() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SetPIN | ||||
|         return check(_slot._library->C_SetPIN(_session, CK_CHAR_PTR, CK_ULONG, CK_CHAR_PTR, CK_ULONG), | ||||
|         return check(_slot.library()->C_SetPIN(_session, CK_CHAR_PTR, CK_ULONG, CK_CHAR_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_SetPIN")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1367,7 +1371,7 @@ namespace cryptoki { | ||||
|  | ||||
|       bool check(CK_RV result, const std::string& context="") { | ||||
|         _res = result; | ||||
|         if (_session._slot._library.exc() && !*this) { | ||||
|         if (_session._slot.library().exc() && !*this) { | ||||
|           if (!context.empty()) { | ||||
|             throw access_error(context+": "+error()); | ||||
|           } else { | ||||
| @@ -1450,7 +1454,7 @@ namespace cryptoki { | ||||
|  | ||||
|       /*! @return error text of last cryptoki call */ | ||||
|       std::string error() { | ||||
|         return _session._slot._library.error(_res); | ||||
|         return _session._slot.library().error(_res); | ||||
|       }       | ||||
|  | ||||
|       //@} | ||||
| @@ -1466,7 +1470,7 @@ namespace cryptoki { | ||||
|       bool copyobject() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_CopyObject | ||||
|         return check(_session._slot._library->C_CopyObject(_session._session, CK_OBJECT_HANDLE, | ||||
|         return check(_session._slot.library()->C_CopyObject(_session._session, CK_OBJECT_HANDLE, | ||||
|                                   CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_CopyObject")); | ||||
|       } | ||||
| @@ -1480,7 +1484,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("decryptinit: type="<<type<<"; mech=("<<mech.mechanism | ||||
|                      <<", "<<mech.pParameter<<", "<<mech.ulParameterLen<<')'); | ||||
|         //! calls @c C_DecryptInit | ||||
|         return check(_session._slot._library->C_DecryptInit | ||||
|         return check(_session._slot.library()->C_DecryptInit | ||||
|                      (_session._session, &mech, _object), | ||||
|                      CRYPTOKI_FN_LOG("C_DecryptInit")); | ||||
|       } | ||||
| @@ -1492,13 +1496,13 @@ namespace cryptoki { | ||||
|         CK_ULONG size(0); // two calls, first to get minimum buffer length | ||||
|         CRYPTOLOG("get size"); | ||||
|         //! calls @c C_Decrypt | ||||
|         check(_session._slot._library->C_Decrypt | ||||
|         check(_session._slot.library()->C_Decrypt | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), 0, &size), | ||||
|               CRYPTOKI_FN_LOG("C_Decrypt")); | ||||
|         CRYPTOLOG("maximum size is "<<size<<"Bytes"); | ||||
|         res.resize(size, 0); | ||||
|         check(_session._slot._library->C_Decrypt | ||||
|         check(_session._slot.library()->C_Decrypt | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1514,7 +1518,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_DecryptDigestUpdate | ||||
|         check(_session._slot._library->C_DecryptDigestUpdate | ||||
|         check(_session._slot.library()->C_DecryptDigestUpdate | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1526,7 +1530,7 @@ namespace cryptoki { | ||||
|       bool decryptfinal() { | ||||
|         CRYPTOLOG("log"); | ||||
|         //! calls @c C_DecryptFinal | ||||
|         return check(_session._slot._library->C_DecryptFinal | ||||
|         return check(_session._slot.library()->C_DecryptFinal | ||||
|                      (_session._session, 0, 0), | ||||
|               CRYPTOKI_FN_LOG("C_DecryptFinal")); | ||||
|         //! @todo does this work? | ||||
| @@ -1538,7 +1542,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_DecryptUpdate | ||||
|         check(_session._slot._library->C_DecryptUpdate | ||||
|         check(_session._slot.library()->C_DecryptUpdate | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1553,7 +1557,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_DecryptVerifyUpdate | ||||
|         check(_session._slot._library->C_DecryptVerifyUpdate | ||||
|         check(_session._slot.library()->C_DecryptVerifyUpdate | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1567,14 +1571,14 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("log"); | ||||
|         std::string res; | ||||
|         CK_ULONG size(0); | ||||
|         check(_session._slot._library->C_Sign | ||||
|         check(_session._slot.library()->C_Sign | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(),0, &size), | ||||
|               CRYPTOKI_FN_LOG("C_Sign")); | ||||
|         CRYPTOLOG("maximum size is "<<size<<"Bytes"); | ||||
|         res.resize(size, 0); | ||||
|         //! calls @c C_Sign | ||||
|         check(_session._slot._library->C_Sign | ||||
|         check(_session._slot.library()->C_Sign | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1590,7 +1594,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_SignEncryptUpdate | ||||
|         check(_session._slot._library->C_SignEncryptUpdate | ||||
|         check(_session._slot.library()->C_SignEncryptUpdate | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1604,7 +1608,7 @@ namespace cryptoki { | ||||
|       bool signfinal() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SignFinal | ||||
|         return check(_slot._library->C_SignFinal(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|         return check(_slot.library()->C_SignFinal(_session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_SignFinal")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1615,7 +1619,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_SignRecover | ||||
|         check(_session._slot._library->C_SignRecover | ||||
|         check(_session._slot.library()->C_SignRecover | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1629,7 +1633,7 @@ namespace cryptoki { | ||||
|       bool signupdate() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SignUpdate | ||||
|         return check(_session._slot._library->C_SignUpdate(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_session._slot.library()->C_SignUpdate(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_SignUpdate")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1637,7 +1641,7 @@ namespace cryptoki { | ||||
|       bool verify(std::string data, std::string signature) { | ||||
|         CRYPTOLOG("log"); | ||||
|         //! calls @c C_Verify | ||||
|         return check(_session._slot._library->C_Verify | ||||
|         return check(_session._slot.library()->C_Verify | ||||
|                      (_session._session, | ||||
|                       (unsigned char*)&data[0], data.size(), | ||||
|                       (unsigned char*)&signature[0], signature.size()), | ||||
| @@ -1649,7 +1653,7 @@ namespace cryptoki { | ||||
|       bool verifyfinal() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_VerifyFinal | ||||
|         return check(_session._slot._library->C_VerifyFinal(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_session._slot.library()->C_VerifyFinal(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_VerifyFinal")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1660,7 +1664,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_VerifyRecover | ||||
|         check(_session._slot._library->C_VerifyRecover | ||||
|         check(_session._slot.library()->C_VerifyRecover | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1674,7 +1678,7 @@ namespace cryptoki { | ||||
|       bool verifyupdate() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_VerifyUpdate | ||||
|         return check(_session._slot._library->C_VerifyUpdate(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|         return check(_session._slot.library()->C_VerifyUpdate(_session._session, CK_BYTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_VerifyUpdate")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1685,7 +1689,7 @@ namespace cryptoki { | ||||
|       bool derivekey() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_DeriveKey | ||||
|         return check(_session._slot._library->C_DeriveKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|         return check(_session._slot.library()->C_DeriveKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|                                  CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_DeriveKey")); | ||||
|       } | ||||
| @@ -1694,7 +1698,7 @@ namespace cryptoki { | ||||
|       bool destroy() { | ||||
|         CRYPTOLOG("log"); | ||||
|         //! calls @c C_DestroyObject | ||||
|         return check(_session._slot._library->C_DestroyObject | ||||
|         return check(_session._slot.library()->C_DestroyObject | ||||
|                      (_session._session, _object), | ||||
|                      CRYPTOKI_FN_LOG("C_DestroyObject")); | ||||
|       } | ||||
| @@ -1705,7 +1709,7 @@ namespace cryptoki { | ||||
|       bool digestkey() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_DigestKey | ||||
|         return check(_session._slot._library->C_DigestKey(_session._session, CK_OBJECT_HANDLE), | ||||
|         return check(_session._slot.library()->C_DigestKey(_session._session, CK_OBJECT_HANDLE), | ||||
|                      CRYPTOKI_FN_LOG("C_DigestKey")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1718,7 +1722,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("encryptinit: type="<<type<<"; mech=("<<mech.mechanism | ||||
|                      <<", "<<mech.pParameter<<", "<<mech.ulParameterLen<<')'); | ||||
|         //! calls @c C_EncryptInit | ||||
|         return check(_session._slot._library->C_EncryptInit | ||||
|         return check(_session._slot.library()->C_EncryptInit | ||||
|                      (_session._session, &mech, _object), | ||||
|                      CRYPTOKI_FN_LOG("C_EncryptInit")); | ||||
|       } | ||||
| @@ -1729,13 +1733,13 @@ namespace cryptoki { | ||||
|         CK_ULONG size(0); // two calls, first to get minimum buffer length | ||||
|         CRYPTOLOG("get size"); | ||||
|         //! calls @c C_Encrypt | ||||
|         check(_session._slot._library->C_Encrypt | ||||
|         check(_session._slot.library()->C_Encrypt | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), 0, &size), | ||||
|               CRYPTOKI_FN_LOG("C_Decrypt")); | ||||
|         CRYPTOLOG("maximum size is "<<size<<"Bytes"); | ||||
|         res.resize(size, 0); | ||||
|         check(_session._slot._library->C_Encrypt | ||||
|         check(_session._slot.library()->C_Encrypt | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1749,7 +1753,7 @@ namespace cryptoki { | ||||
|       bool encryptfinal() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_EncryptFinal | ||||
|         return check(_session._slot._library->C_EncryptFinal(_session._session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|         return check(_session._slot.library()->C_EncryptFinal(_session._session, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_EncryptFinal")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -1760,7 +1764,7 @@ namespace cryptoki { | ||||
|         res.resize(in.size()); | ||||
|         CK_ULONG size(res.size()); //! @todo check if size is ok | ||||
|         //! calls @c C_EncryptUpdate | ||||
|         check(_session._slot._library->C_EncryptUpdate | ||||
|         check(_session._slot.library()->C_EncryptUpdate | ||||
|               (_session._session, | ||||
|                (unsigned char*)&in[0], in.size(), | ||||
|                (unsigned char*)&res[0], &size), | ||||
| @@ -1774,7 +1778,7 @@ namespace cryptoki { | ||||
|       bool generatekey() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GenerateKey | ||||
|         return check(_session._slot._library->C_GenerateKey(_session._session, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, | ||||
|         return check(_session._slot.library()->C_GenerateKey(_session._session, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, | ||||
|                                    CK_ULONG, CK_OBJECT_HANDLE_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_GenerateKey")); | ||||
|       } | ||||
| @@ -1786,7 +1790,7 @@ namespace cryptoki { | ||||
|       bool generatekeypair() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GenerateKeyPair | ||||
|         return check(_session._slot._library->C_GenerateKeyPair(_session._session, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, | ||||
|         return check(_session._slot.library()->C_GenerateKeyPair(_session._session, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, | ||||
|                                        CK_ULONG, CK_ATTRIBUTE_PTR, CK_ULONG, | ||||
|                                        CK_OBJECT_HANDLE_PTR, CK_OBJECT_HANDLE_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_GenerateKeyPair")); | ||||
| @@ -1806,7 +1810,7 @@ namespace cryptoki { | ||||
|         Attribute res; | ||||
|         CK_ATTRIBUTE attr((CK_ATTRIBUTE){a, 0, 0}); | ||||
|         //! calls @c C_GetAttributeValue | ||||
|         if (!check(_session._slot._library->C_GetAttributeValue | ||||
|         if (!check(_session._slot.library()->C_GetAttributeValue | ||||
|                    (_session._session, _object, &attr, 1), | ||||
|                    CRYPTOKI_FN_LOG("C_GetAttributeValue")) | ||||
|             || !(long)attr.ulValueLen>0l) | ||||
| @@ -1815,7 +1819,7 @@ namespace cryptoki { | ||||
|         try { | ||||
|           attr.pValue = malloc(attr.ulValueLen); | ||||
|           attr.pValue = memset(attr.pValue, 0, attr.ulValueLen); | ||||
|           if (check(_session._slot._library->C_GetAttributeValue | ||||
|           if (check(_session._slot.library()->C_GetAttributeValue | ||||
|                     (_session._session, _object, &attr, 1), | ||||
|                     CRYPTOKI_FN_LOG("C_GetAttributeValue"))) | ||||
|             /*! @todo There's no @c CKA_WRAP_TEMPLATE in Open | ||||
| @@ -1931,7 +1935,7 @@ namespace cryptoki { | ||||
|           attr = (CK_ATTRIBUTE){*it, 0, 0}; | ||||
|           try { | ||||
|             //! calls @c C_GetAttributeValue | ||||
|             if (_session._slot._library->C_GetAttributeValue | ||||
|             if (_session._slot.library()->C_GetAttributeValue | ||||
|                 (_session._session, _object, &attr, 1) | ||||
|                 == CKR_ATTRIBUTE_TYPE_INVALID | ||||
|                 || _res == CKR_ATTRIBUTE_SENSITIVE) { | ||||
| @@ -1941,7 +1945,7 @@ namespace cryptoki { | ||||
|               if ((long)attr.ulValueLen>0l) { | ||||
|                 attr.pValue = malloc(attr.ulValueLen); | ||||
|                 attr.pValue = memset(attr.pValue, 0, attr.ulValueLen); | ||||
|                 if (check(_session._slot._library->C_GetAttributeValue | ||||
|                 if (check(_session._slot.library()->C_GetAttributeValue | ||||
|                           (_session._session, _object, &attr, 1), | ||||
|                           CRYPTOKI_FN_LOG("C_GetAttributeValue"))) | ||||
|                   /*! @todo There's no @c CKA_WRAP_TEMPLATE in Open | ||||
| @@ -2003,7 +2007,7 @@ namespace cryptoki { | ||||
|       bool getobjectsize() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_GetObjectSize | ||||
|         return check(_session._slot._library->C_GetObjectSize(_session._session, CK_OBJECT_HANDLE, CK_ULONG_PTR), | ||||
|         return check(_session._slot.library()->C_GetObjectSize(_session._session, CK_OBJECT_HANDLE, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_GetObjectSize")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -2014,7 +2018,7 @@ namespace cryptoki { | ||||
|       bool setattributevalue() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SetAttributeValue | ||||
|         return check(_session._slot._library->C_SetAttributeValue(_session._session, CK_OBJECT_HANDLE, | ||||
|         return check(_session._slot.library()->C_SetAttributeValue(_session._session, CK_OBJECT_HANDLE, | ||||
|                                          CK_ATTRIBUTE_PTR, CK_ULONG), | ||||
|                      CRYPTOKI_FN_LOG("C_SetAttributeValue")); | ||||
|       } | ||||
| @@ -2025,7 +2029,7 @@ namespace cryptoki { | ||||
|       bool setoperationstate() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SetOperationState | ||||
|         return check(_session._slot._library->C_SetOperationState(_session._session, CK_BYTE_PTR, CK_ULONG, | ||||
|         return check(_session._slot.library()->C_SetOperationState(_session._session, CK_BYTE_PTR, CK_ULONG, | ||||
|                                          CK_OBJECT_HANDLE, CK_OBJECT_HANDLE), | ||||
|                      CRYPTOKI_FN_LOG("C_SetOperationState")); | ||||
|       } | ||||
| @@ -2039,7 +2043,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("signinit: type="<<type<<"; mech=("<<mech.mechanism | ||||
|                      <<", "<<mech.pParameter<<", "<<mech.ulParameterLen<<')'); | ||||
|         //! calls @c C_SignInit | ||||
|         return check(_session._slot._library->C_SignInit | ||||
|         return check(_session._slot.library()->C_SignInit | ||||
|                      (_session._session, &mech, _object), | ||||
|                      CRYPTOKI_FN_LOG("C_SignInit")); | ||||
|       } | ||||
| @@ -2049,7 +2053,7 @@ namespace cryptoki { | ||||
|       bool signrecoverinit() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_SignRecoverInit | ||||
|         return check(_session._slot._library->C_SignRecoverInit(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE), | ||||
|         return check(_session._slot.library()->C_SignRecoverInit(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE), | ||||
|                      CRYPTOKI_FN_LOG("C_SignRecoverInit")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -2059,7 +2063,7 @@ namespace cryptoki { | ||||
|       bool unwrapkey() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_UnwrapKey | ||||
|         return check(_session._slot._library->C_UnwrapKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|         return check(_session._slot.library()->C_UnwrapKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|                                  CK_BYTE_PTR, CK_ULONG, CK_ATTRIBUTE_PTR, CK_ULONG, | ||||
|                                  CK_OBJECT_HANDLE_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_UnwrapKey")); | ||||
| @@ -2074,7 +2078,7 @@ namespace cryptoki { | ||||
|         CRYPTOLOG("verifyinit: type="<<type<<"; mech=("<<mech.mechanism | ||||
|                      <<", "<<mech.pParameter<<", "<<mech.ulParameterLen<<')'); | ||||
|          //! calls @c C_VerifyInit | ||||
|         return check(_session._slot._library->C_VerifyInit | ||||
|         return check(_session._slot.library()->C_VerifyInit | ||||
|                      (_session._session, &mech, _object), | ||||
|                      CRYPTOKI_FN_LOG("C_VerifyInit")); | ||||
|       } | ||||
| @@ -2084,7 +2088,7 @@ namespace cryptoki { | ||||
|       bool verifyrecoverinit() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_VerifyRecoverInit | ||||
|         return check(_session._slot._library->C_VerifyRecoverInit(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE), | ||||
|         return check(_session._slot.library()->C_VerifyRecoverInit(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE), | ||||
|                      CRYPTOKI_FN_LOG("C_VerifyRecoverInit")); | ||||
|       } | ||||
|           @endcode */ | ||||
| @@ -2095,7 +2099,7 @@ namespace cryptoki { | ||||
|       bool wrapkey() { | ||||
|           CRYPTOLOG("log"); | ||||
|         //! calls @c C_WrapKey | ||||
|         return check(_session._slot._library->C_WrapKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|         return check(_session._slot.library()->C_WrapKey(_session._session, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, | ||||
|                                CK_OBJECT_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR), | ||||
|                      CRYPTOKI_FN_LOG("C_WrapKey")); | ||||
|       } | ||||
|   | ||||
| @@ -32,9 +32,9 @@ | ||||
| #if __GNUC__ >= 2 | ||||
| //! Macro for internal OpenSSL checks. | ||||
| /*! You can define a different implementation in your compile call */ | ||||
| #define OPENSSL_CHECK(X) if (!X) {ERR_load_ENGINE_strings(); std::stringstream ss; for (unsigned int err(0); err=ERR_get_error();) ss<<"Error: "<<ERR_error_string(err, 0)<<"; "; ss<<"Command "<<#X<<" failed in function "<<__PRETTY_FUNCTION__<<" in file "<<__FILE__<<":"<<__LINE__; throw std::runtime_error(ss.str());} | ||||
| #define OPENSSL_CHECK(X) if (!(X)) {ERR_load_ENGINE_strings(); std::stringstream ss; for (unsigned int err(0); err=ERR_get_error();) ss<<"Error: "<<ERR_error_string(err, 0)<<"; "; ss<<"Command "<<#X<<" failed in function "<<__PRETTY_FUNCTION__<<" in file "<<__FILE__<<":"<<__LINE__; throw std::runtime_error(ss.str());} | ||||
| #else | ||||
| #define OPENSSL_CHECK(X) if (!X) {ERR_load_ENGINE_strings(); std::stringstream ss; for (unsigned int err(0); err=ERR_get_error();) ss<<"Error: "<<ERR_error_string(err, 0)<<"; "; ss<<"Command "<<#X<<" failed in file "<<__FILE__<<":"<<__LINE__; throw std::runtime_error(ss.str());} | ||||
| #define OPENSSL_CHECK(X) if (!(X)) {ERR_load_ENGINE_strings(); std::stringstream ss; for (unsigned int err(0); err=ERR_get_error();) ss<<"Error: "<<ERR_error_string(err, 0)<<"; "; ss<<"Command "<<#X<<" failed in file "<<__FILE__<<":"<<__LINE__; throw std::runtime_error(ss.str());} | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user