-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
undefined symbol: C_Initialize #2
Comments
I guess you've hit one of a few limitations of the current pkcs11interop implementation (please see section "Supported features" on www.pkcs11interop.net for more info) specifically that unmanaged libraries that export only C_GetFunctionList() function are supported only on MS Windows platform. And unfortunately opensc-pkcs11.so is one of those libraries as you can see in its source code: https://github.com/OpenSC/OpenSC/blob/master/src/pkcs11/opensc-pkcs11.exports This limitation exists because of the marshaling problem (probably bug) in Mono. I am planning to create test case and bug report for Mono next week, but it can take long time till it gets fixed there. So meanwhile you can try to use something like "proxy PKCS#11 library" that exports all PKCS#11 functions directly and put it in front of the opensc-pkcs11.so. Please take a look at my other project pkcs11-logger that implements such library: https://github.com/jariq/pkcs11-logger You should be able to easily create following setup which should work even on linux: Your application <---> pkcs11interop.dll <---> pkcs11-logger.so <---> opensc-pkcs11.so |
Thanks for feedback, I will try. But another question how to you pkcs11-logger know where opensc-pkcs11 save ? |
By default logger tries to load PKCS#11 library provided by OpenSC project which is "opensc-pkcs11.dll" on Windows or "opensc-pkcs11.so" on Linux. But you can use PKCS11_LOGGER_ORIG_LIB environment variable to specify another library. This is the "classic" way to use Pkcs11interop: using (Pkcs11 pkcs11 = new Pkcs11("opensc-pkcs11.so", true)) This is how you use Pkcs11Interop with pkcs11-logger: Environment.SetEnvironmentVariable("PKCS11_LOGGER_ORIG_LIB", "opensc-pkcs11.so"); |
Thanks, jariq ! |
I've found a workaround for this issue and the fix was committed to the master git repository few minutes ago. From now on you don't have to use pkcs11-logger as a proxy library. Latest development version can be downloaded from https://github.com/jariq/Pkcs11Interop/archive/master.zip |
When i run test i receive error: "Unable to get function pointer: opensc-pkcs11.so undefined symbol C_Initialize" .
I'm use Fedora 18 64bit.
The text was updated successfully, but these errors were encountered: