1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
"""
CFFI based implementation of the crypt module
"""
import sys
import cffi
import thread
_lock = thread.allocate_lock()
try: from __pypy__ import builtinify
except ImportError: builtinify = lambda f: f
ffi = cffi.FFI()
ffi.cdef('char *crypt(char *word, char *salt);')
try:
lib = ffi.dlopen('crypt')
except OSError:
raise ImportError('crypt not available')
@builtinify
def crypt(word, salt):
with _lock:
res = lib.crypt(word, salt)
if not res:
return None
return ffi.string(res)
|