# Non-destructive PKCS#11 test suite (not only for readonly cards) ## What are the dependencies? In addition to the dependencies needed by OpenSC, the test suite is using [`cmocka`](https://cmocka.org/) unit testing framework (`libcmocka-devel` package in Fedora/EPEL). ## How to use? Build OpenSC from source: git clone git@github.com:OpenSC/OpenSC.git cd OpenSC ./bootstrap ./configure make -j4 Plug in the card/reader, change to test directory and run the test: cd src/tests/p11test ./p11test -p 123456 It will run all tests on the first card found in PKCS#11 API with pin `123456` and using just built OpenSC shared library from master. ### I have more slots with different cards. Slot can be selected using `-s` switch on command-line. ./p11test -s 4 Slot numbers can be obtained using from `pkcs11-tool -L` (note that different libraries might have different numbers for the slots). ### I want to test different pkcs11 library You can specify different library or build from different branch on command-line: ./p11test -m /usr/lib64/pkcs11/libcoolkeypk11.so or to debug PKCS#11 calls using `/usr/lib64/pkcs11-spy.so`: export PKCS11SPY="../pkcs11/.libs/opensc-pkcs11.so" ./p11test -m ../pkcs11/.libs/pkcs11-spy.so You can run the test suite also on the soft tokens. The testbench for `softhsm` and `opencryptoki` is available in the script `runtest.sh`. TODO: * Test `CKM_ECDSA_DERIVE` mechanism(s) * Read pin from environment variable? * Keygen write tests (optional) * Reflect cmocka dependency in the configure