Changeset 117
- Timestamp:
- 02/11/08 10:16:41 (2 years ago)
- Files:
-
- pykcs11/trunk/PyKCS11/__init__.py (modified) (3 diffs)
- pykcs11/trunk/samples/getinfo.py (modified) (1 diff)
- pykcs11/trunk/src/pkcs11lib.cpp (modified) (1 diff)
- pykcs11/trunk/src/pkcs11lib.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pykcs11/trunk/PyKCS11/__init__.py
r116 r117 49 49 if x[3:] != "_VENDOR_DEFINED": 50 50 eval(x[:3])[eval(x)] = x # => CKM[CKM_RSA_PKCS] = 'CKM_RSA_PKCS' 51 eval(x[:3])[x] = eval(x) # => CKM['CKM_RSA_PKCS'] = CKM_RSA_PKCS 51 52 52 53 class CK_SLOT_INFO: … … 177 178 if self.flags & v: 178 179 r.append(CK_TOKEN_INFO.flags_dict[v]) 180 return r 181 182 class CK_MECHANISM_INFO: 183 """ 184 matches the PKCS#11 CK_MECHANISM_INFO structure 185 186 @ivar ulMinKeySize: minimum size of the key 187 @type ulMinKeySize: integer 188 @ivar ulMaxKeySize: maximum size of the key 189 @type ulMaxKeySize: integer 190 @ivar flags: bit flags specifying mechanism capabilities 191 @type flags: integer 192 """ 193 194 flags_dict = { 195 CKF_HW: "CKF_HW", 196 CKF_ENCRYPT: "CKF_ENCRYPT", 197 CKF_DECRYPT: "CKF_DECRYPT", 198 CKF_DIGEST: "CKF_DIGEST", 199 CKF_SIGN: "CKF_SIGN", 200 CKF_SIGN_RECOVER: "CKF_SIGN_RECOVER", 201 CKF_VERIFY: "CKF_VERIFY", 202 CKF_VERIFY_RECOVER: "CKF_VERIFY_RECOVER", 203 CKF_GENERATE: "CKF_GENERATE", 204 CKF_GENERATE_KEY_PAIR: "CKF_GENERATE_KEY_PAIR", 205 CKF_WRAP: "CKF_WRAP", 206 CKF_UNWRAP: "CKF_UNWRAP", 207 CKF_DERIVE: "CKF_DERIVE", 208 CKF_EXTENSION: "CKF_EXTENSION", 209 } 210 211 def flags2text(self): 212 """ 213 parse the L{self.flags} field and create a list of "CKF_*" strings 214 corresponding to bits set in flags 215 216 @return: a list of strings 217 @rtype: list 218 """ 219 r = [] 220 for v in CK_MECHANISM_INFO.flags_dict.keys(): 221 if self.flags & v: 222 r.append(CK_MECHANISM_INFO.flags_dict[v]) 179 223 return r 180 224 … … 462 506 return m 463 507 508 def getMechanismInfo(self, slot, type): 509 """ 510 C_GetMechanismInfo 511 512 @return: information about a mechanism 513 @rtype: a L{CK_MECHANISM_INFO} object 514 """ 515 info = PyKCS11.LowLevel.CK_MECHANISM_INFO() 516 rv = self.lib.C_GetMechanismInfo(slot, CKM[type], info) 517 if rv != CKR_OK: 518 raise PyKCS11Error(rv) 519 520 i = CK_MECHANISM_INFO() 521 i.ulMinKeySize = info.ulMinKeySize 522 i.ulMaxKeySize = info.ulMaxKeySize 523 i.flags = info.flags 524 525 return i 526 464 527 class Mechanism: 465 528 """Wraps CK_MECHANISM""" pykcs11/trunk/samples/getinfo.py
r115 r117 120 120 for x in m: 121 121 print " " + blue + x + normal 122 i = pkcs11.getMechanismInfo(slots[slot], x) 123 colorize(" ulMinKeySize:", i.ulMinKeySize) 124 colorize(" ulMaxKeySize:", i.ulMaxKeySize) 125 colorize(" flags:", i.flags2text()) 122 126 123 127 if pin_available: pykcs11/trunk/src/pkcs11lib.cpp
r115 r117 971 971 } 972 972 973 CK_RV CPKCS11Lib::C_GetMechanismInfo( 974 unsigned long slotID, 975 unsigned long type, 976 CK_MECHANISM_INFO* pInfo) 977 { 978 CPKCS11LIB_PROLOGUE(C_GetMechanismInfo); 979 980 rv = m_pFunc->C_GetMechanismInfo(slotID, type, pInfo); 981 982 CPKCS11LIB_EPILOGUE; 983 return rv; 984 } 985 973 986 /////////////////////////////////////////////////////////////////////////////// 974 987 pykcs11/trunk/src/pkcs11lib.h
r115 r117 287 287 vector<long> &mechanismList); 288 288 289 CK_RV C_GetMechanismInfo( 290 unsigned long slotID, 291 unsigned long type, 292 CK_MECHANISM_INFO* pInfo); 293 289 294 }; 290 295
