Overview
Comment: | More work on improving the wrapper |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | better-wrapping |
Files: | files | file ages | folders |
SHA1: |
3b7b2eddb484df522b782618348c6907 |
User & Date: | rkeene on 2017-12-28 01:32:36 |
Other Links: | branch diff | manifest | tags |
Context
2018-06-29
| ||
18:58 | More work on improving wrapper Leaf check-in: 3fdad99785 user: rkeene tags: better-wrapping | |
2017-12-28
| ||
01:32 | More work on improving the wrapper check-in: 3b7b2eddb4 user: rkeene tags: better-wrapping | |
01:32 | Updated to support supplying an empty PIN command to be equivelant to unsetting check-in: 9043258dc4 user: rkeene tags: trunk | |
Changes
Modified Makefile.in from [abdaf2d437] to [0b2c29b908].
︙ | |||
46 47 48 49 50 51 52 | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | - + | libcackey_g.a: cackey_g.o rm -f libcackey_g.a $(AR) rc libcackey_g.a cackey_g.o -$(RANLIB) libcackey_g.a libcackey_wrap.@SHOBJEXT@: libcackey_wrap.o |
︙ |
Modified build/libcackey_wrap.c.in from [4c95cbc88b] to [98f3aad3ae].
︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | #define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType (* name) #define CK_CALLBACK_FUNCTION(returnType, name) returnType (* name) #ifndef NULL_PTR # define NULL_PTR 0 #endif #include "./pkcs11/pkcs11.h" #ifndef CACKEY_LIBRARY_FILE #define CACKEY_LIBRARY_FILE "libcackey_g.so" #endif static void *libcackey_wrap_handle = NULL_PTR; static void libcackey_wrap_init(void); static CK_RV libcackey_wrap_createmutex(CK_VOID_PTR_PTR ppMutex) { int (*create_mutex)(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); pthread_mutex_t *pthread_mutex; int pthread_retval; libcackey_wrap_init(); pthread_mutex = malloc(sizeof(*pthread_mutex)); create_mutex = dlsym(libcackey_wrap_handle, "pthread_mutex_init"); pthread_retval = create_mutex(pthread_mutex, NULL); if (pthread_retval != 0) { return(CKR_GENERAL_ERROR); } *ppMutex = pthread_mutex; return(CKR_OK); } #define libcackey_wrap_genericmutexfunc(funcName, pthreadName) \ static CK_RV funcName(CK_VOID_PTR pMutex) { \ int (*func)(pthread_mutex_t *mutex); \ pthread_mutex_t *pthread_mutex; \ int pthread_retval; \ libcackey_wrap_init(); \ pthread_mutex = pMutex; \ func = dlsym(libcackey_wrap_handle, pthreadName); \ pthread_retval = func(pthread_mutex); \ if (pthread_retval != 0) { \ return(CKR_GENERAL_ERROR); \ } \ if (strcmp(pthreadName, "pthread_mutex_destroy") == 0) { \ free(pthread_mutex); \ } \ return(CKR_OK); \ } libcackey_wrap_genericmutexfunc(libcackey_wrap_destroymutex, "pthread_mutex_destroy") libcackey_wrap_genericmutexfunc(libcackey_wrap_lockmutex, "pthread_mutex_lock") libcackey_wrap_genericmutexfunc(libcackey_wrap_unlockmutex, "pthread_mutex_unlock") static void libcackey_wrap_init(void) { Dl_info libinfo; int dladdr_ret; char *library, *libraryDir, *libraryDirLastSlash; if (libcackey_wrap_handle) { return; |
︙ | |||
53 54 55 56 57 58 59 | 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | - + + + + + + + + + + + + + | abort(); return; } *libraryDirLastSlash = '\0'; |
Modified build/make-libcackey_wrap from [833dbdb173] to [f1fa196b14].
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 | 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + | #! /usr/bin/env bash cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 cat libcackey_wrap.c.in functionList=() while IFS='' read -r line; do function="$(echo "${line}" | cut -f 2 -d , | cut -f 1 -d ')' | sed 's@ *@@g')" if [ "${function}" = 'C_LoginMutexArg' ]; then continue fi functionList=("${functionList[@]}" "${function}") done < <(grep '^CK_DEFINE_FUNCTION' ../cackey.c) grep '^CK_DEFINE_FUNCTION' ../cackey.c | while IFS='' read -r line; do function="$(echo "${line}" | cut -f 2 -d , | cut -f 1 -d ')' | sed 's@ *@@g')" if [ "${function}" = 'C_LoginMutexArg' ]; then continue fi args="$(echo "${line}" | cut -f 3 -d '(' | cut -f 1 -d ')' | tr ',' $'\n' | sed 's@^ *@@')" argNames=() while read argType argName; do argNames=("${argNames[@]}" "${argName}") done <<<"${args}" argNamesList='' for argName in "${argNames[@]}"; do argNamesList="${argNamesList}, ${argName}" done argNamesList="$(echo "${argNamesList}" | cut -c 3-)" echo '' echo "${line}" echo $'\t'"CK_RV (*func)($(echo "${args}" | tr $'\n' ',' | sed 's@,*$@@;s@,@, @g'));" case "${function}" in C_Finalize) echo $'\t''CK_RV retval;' ;; C_Initialize) echo $'\t''CK_C_INITIALIZE_ARGS CK_PTR args, localargs;' ;; C_GetFunctionList) echo $'\t''CK_RV retval;' echo $'\t''CK_FUNCTION_LIST_PTR pFunctionList;' ;; esac echo '' echo $'\t''libcackey_wrap_init();' if [ "${function}" = 'C_Initialize' ]; then |