import ctypes
import _ctypes

h = _ctypes.dlopen("libcrypto.dll")
try:
    print type(h)
    sha = _ctypes.dlsym(h, "1491")
    init = _ctypes.dlsym(h, "1493")
    update = _ctypes.dlsym(h, "1495")
    final = _ctypes.dlsym(h, "1492")
    print [sha, init, update, final]

    data = "digestible message"
    result = ctypes.create_string_buffer(20)
    _ctypes.call_function(sha, (data, len(data), result))
    print ctypes.sizeof(result), repr(result.raw)
finally:
    _ctypes.dlclose(h)

"""
To do the same with the Python "sha" library:

import sha
result = sha.new("digestible message").digest()
print len(result), repr(result)

"""

