summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stefw@redhat.com>2016-11-29 13:30:55 +0100
committerStef Walter <stefw@redhat.com>2016-11-29 13:32:23 +0100
commit561ee23f218c7a68a2ef46525502f978e56fc1bb (patch)
tree8deb8569f109a0e9dea11736f56ad5e47f42dc11
parenta96f354c3068edb6c8ac80ae6d9a6611651145d7 (diff)
MOVED TO: https://github.com/p11-glue/p11-kitHEADmaster
This repository has moved to GitHub to allow further contributions and more flexibility who can merge changes. More details here: https://lists.freedesktop.org/archives/p11-glue/2016-November/000626.html
-rw-r--r--AUTHORS1
-rw-r--r--ChangeLog31
-rw-r--r--HACKING7
-rw-r--r--Makefile.am108
-rw-r--r--NEWS300
-rw-r--r--README4
-rwxr-xr-xautogen.sh37
-rwxr-xr-xautomaint.sh52
-rw-r--r--build/certs/Makefile51
-rw-r--r--build/certs/cacert-ca.derbin1857 -> 0 bytes
-rw-r--r--build/certs/cacert3.derbin1885 -> 0 bytes
-rw-r--r--build/certs/distant-end-date.derbin366 -> 0 bytes
-rw-r--r--build/certs/entrust-invalid.derbin1120 -> 0 bytes
-rw-r--r--build/certs/redhat-newca.derbin948 -> 0 bytes
-rw-r--r--build/certs/self-server.derbin396 -> 0 bytes
-rw-r--r--build/certs/self-signed-with-eku.derbin480 -> 0 bytes
-rw-r--r--build/certs/self-signed-with-ku.derbin478 -> 0 bytes
-rw-r--r--build/certs/testing-ca.derbin970 -> 0 bytes
-rw-r--r--build/certs/testing-server.derbin554 -> 0 bytes
-rw-r--r--build/certs/verisign-v1.derbin576 -> 0 bytes
-rw-r--r--build/certs/with-eku.conf19
-rw-r--r--build/certs/with-ku.conf19
-rw-r--r--build/gtk-doc.make259
-rw-r--r--build/litter/.empty1
-rw-r--r--build/m4/.empty1
-rw-r--r--build/tx-update66
-rw-r--r--common/Makefile.am111
-rw-r--r--common/argv.c115
-rw-r--r--common/argv.h44
-rw-r--r--common/array.c129
-rw-r--r--common/array.h68
-rw-r--r--common/attrs.c903
-rw-r--r--common/attrs.h136
-rw-r--r--common/buffer.c197
-rw-r--r--common/buffer.h93
-rw-r--r--common/compat.c924
-rw-r--r--common/compat.h341
-rw-r--r--common/constants.c708
-rw-r--r--common/constants.h82
-rw-r--r--common/debug.c158
-rw-r--r--common/debug.h145
-rw-r--r--common/dict.c389
-rw-r--r--common/dict.h180
-rw-r--r--common/frob-getauxval.c61
-rw-r--r--common/frob-getenv.c65
-rw-r--r--common/hash.c174
-rw-r--r--common/hash.h47
-rw-r--r--common/lexer.c239
-rw-r--r--common/lexer.h84
-rw-r--r--common/library.c212
-rw-r--r--common/library.h74
-rw-r--r--common/message.c172
-rw-r--r--common/message.h66
-rw-r--r--common/mock.c3975
-rw-r--r--common/mock.h1134
-rw-r--r--common/path.c325
-rw-r--r--common/path.h69
-rw-r--r--common/pkcs11.h1398
-rw-r--r--common/pkcs11i.h505
-rw-r--r--common/pkcs11x.h149
-rw-r--r--common/test-array.c209
-rw-r--r--common/test-attrs.c757
-rw-r--r--common/test-buffer.c199
-rw-r--r--common/test-compat.c145
-rw-r--r--common/test-constants.c102
-rw-r--r--common/test-dict.c522
-rw-r--r--common/test-hash.c106
-rw-r--r--common/test-lexer.c253
-rw-r--r--common/test-message.c65
-rw-r--r--common/test-path.c216
-rw-r--r--common/test-tests.c95
-rw-r--r--common/test-url.c164
-rw-r--r--common/test.c548
-rw-r--r--common/test.h152
-rw-r--r--common/tool.c333
-rw-r--r--common/tool.h65
-rw-r--r--common/url.c133
-rw-r--r--common/url.h60
-rw-r--r--configure.ac539
-rw-r--r--doc/Makefile.am6
-rw-r--r--doc/internal/persist-format.txt59
-rw-r--r--doc/manual/Makefile.am169
-rw-r--r--doc/manual/annotation-glossary.xml67
-rw-r--r--doc/manual/docbook-params.xsl39
-rw-r--r--doc/manual/p11-kit-config.xml98
-rw-r--r--doc/manual/p11-kit-devel.xml323
-rw-r--r--doc/manual/p11-kit-docs.xml45
-rw-r--r--doc/manual/p11-kit-overrides.txt0
-rw-r--r--doc/manual/p11-kit-proxy.xml29
-rw-r--r--doc/manual/p11-kit-sections.txt136
-rw-r--r--doc/manual/p11-kit-sharing.xml110
-rw-r--r--doc/manual/p11-kit-trust.xml128
-rw-r--r--doc/manual/p11-kit.xml131
-rw-r--r--doc/manual/pkcs11.conf.xml281
-rw-r--r--doc/manual/style.css116
-rw-r--r--doc/manual/trust.xml372
-rw-r--r--p11-kit/Makefile.am253
-rw-r--r--p11-kit/conf.c509
-rw-r--r--p11-kit/conf.h75
-rw-r--r--p11-kit/deprecated.h97
-rw-r--r--p11-kit/docs.h38
-rw-r--r--p11-kit/fixtures/package-modules/four.module5
-rw-r--r--p11-kit/fixtures/package-modules/win32/four.module4
-rw-r--r--p11-kit/fixtures/system-modules/one.module5
-rw-r--r--p11-kit/fixtures/system-modules/two-duplicate.module4
-rw-r--r--p11-kit/fixtures/system-modules/two.badname6
-rw-r--r--p11-kit/fixtures/system-modules/win32/one.module4
-rw-r--r--p11-kit/fixtures/system-modules/win32/two-duplicate.module4
-rw-r--r--p11-kit/fixtures/system-modules/win32/two.badname6
-rw-r--r--p11-kit/fixtures/system-pkcs11.conf6
-rw-r--r--p11-kit/fixtures/test-1.conf6
-rw-r--r--p11-kit/fixtures/test-pinfile1
-rw-r--r--p11-kit/fixtures/test-pinfile-large53
-rw-r--r--p11-kit/fixtures/test-system-invalid.conf3
-rw-r--r--p11-kit/fixtures/test-system-merge.conf7
-rw-r--r--p11-kit/fixtures/test-system-none.conf8
-rw-r--r--p11-kit/fixtures/test-system-only.conf8
-rw-r--r--p11-kit/fixtures/test-user-invalid.conf3
-rw-r--r--p11-kit/fixtures/test-user-only.conf4
-rw-r--r--p11-kit/fixtures/test-user.conf3
-rw-r--r--p11-kit/fixtures/user-modules/one.module4
-rw-r--r--p11-kit/fixtures/user-modules/three.module6
-rw-r--r--p11-kit/fixtures/user-modules/win32/one.module2
-rw-r--r--p11-kit/fixtures/user-modules/win32/three.module6
-rw-r--r--p11-kit/frob-setuid.c95
-rw-r--r--p11-kit/iter.c983
-rw-r--r--p11-kit/iter.h117
-rw-r--r--p11-kit/lists.c290
-rw-r--r--p11-kit/log.c2022
-rw-r--r--p11-kit/log.h53
-rw-r--r--p11-kit/messages.c242
-rw-r--r--p11-kit/mock-module-ep.c54
-rw-r--r--p11-kit/mock-module-ep2.c56
-rw-r--r--p11-kit/mock-module-ep3.c68
-rw-r--r--p11-kit/modules.c2704
-rw-r--r--p11-kit/modules.h51
-rw-r--r--p11-kit/p11-kit-1.pc.in22
-rw-r--r--p11-kit/p11-kit.c135
-rw-r--r--p11-kit/p11-kit.h122
-rw-r--r--p11-kit/pin.c704
-rw-r--r--p11-kit/pin.h107
-rw-r--r--p11-kit/pkcs11.conf.example.in9
-rw-r--r--p11-kit/pkcs11.h40
-rw-r--r--p11-kit/print-messages.c137
-rw-r--r--p11-kit/private.h67
-rw-r--r--p11-kit/proxy.c2425
-rw-r--r--p11-kit/proxy.h43
-rw-r--r--p11-kit/remote.c111
-rw-r--r--p11-kit/remote.h56
-rw-r--r--p11-kit/rpc-client.c2104
-rw-r--r--p11-kit/rpc-message.c769
-rw-r--r--p11-kit/rpc-message.h370
-rw-r--r--p11-kit/rpc-server.c2017
-rw-r--r--p11-kit/rpc-transport.c864
-rw-r--r--p11-kit/rpc.h95
-rw-r--r--p11-kit/test-conf.c456
-rw-r--r--p11-kit/test-deprecated.c513
-rw-r--r--p11-kit/test-init.c420
-rw-r--r--p11-kit/test-iter.c1512
-rw-r--r--p11-kit/test-log.c112
-rw-r--r--p11-kit/test-managed.c271
-rw-r--r--p11-kit/test-mock.c1685
-rw-r--r--p11-kit/test-modules.c453
-rw-r--r--p11-kit/test-pin.c313
-rw-r--r--p11-kit/test-progname.c86
-rw-r--r--p11-kit/test-proxy.c296
-rw-r--r--p11-kit/test-rpc.c1061
-rw-r--r--p11-kit/test-transport.c318
-rw-r--r--p11-kit/test-uri.c1512
-rw-r--r--p11-kit/test-util.c59
-rw-r--r--p11-kit/test-virtual.c171
-rw-r--r--p11-kit/uri.c1490
-rw-r--r--p11-kit/uri.h177
-rw-r--r--p11-kit/util.c295
-rw-r--r--p11-kit/virtual.c2975
-rw-r--r--p11-kit/virtual.h68
-rw-r--r--po/LINGUAS71
-rw-r--r--po/Makevars41
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/ar.po342
-rw-r--r--po/as.po342
-rw-r--r--po/az.po342
-rw-r--r--po/bg.po342
-rw-r--r--po/bn_IN.po342
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/ca.po342
-rw-r--r--po/ca@valencia.po342
-rw-r--r--po/cs.po343
-rw-r--r--po/cy.po342
-rw-r--r--po/da.po343
-rw-r--r--po/de.po344
-rw-r--r--po/el.po343
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/en_GB.po343
-rw-r--r--po/eo.po343
-rw-r--r--po/es.po344
-rw-r--r--po/et.po342
-rw-r--r--po/eu.po342
-rw-r--r--po/fa.po342
-rw-r--r--po/fi.po345
-rw-r--r--po/fo.po342
-rw-r--r--po/fr.po344
-rw-r--r--po/ga.po342
-rw-r--r--po/gl.po343
-rw-r--r--po/gu.po342
-rw-r--r--po/he.po342
-rw-r--r--po/hi.po342
-rw-r--r--po/hr.po343
-rw-r--r--po/hu.po344
-rw-r--r--po/ia.po342
-rw-r--r--po/id.po343
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/it.po345
-rw-r--r--po/ja.po343
-rw-r--r--po/ka.po343
-rw-r--r--po/kk.po343
-rw-r--r--po/kn.po342
-rw-r--r--po/ko.po345
-rw-r--r--po/lt.po342
-rw-r--r--po/lv.po343
-rw-r--r--po/ml.po342
-rw-r--r--po/mr.po342
-rw-r--r--po/ms.po342
-rw-r--r--po/nb.po342
-rw-r--r--po/nl.po343
-rw-r--r--po/nn.po342
-rw-r--r--po/oc.po342
-rw-r--r--po/or.po342
-rw-r--r--po/pa.po343
-rw-r--r--po/pl.po343
-rw-r--r--po/pt.po342
-rw-r--r--po/pt_BR.po343
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/ro.po342
-rw-r--r--po/ru.po345
-rw-r--r--po/sk.po344
-rw-r--r--po/sl.po343
-rw-r--r--po/sq.po342
-rw-r--r--po/sr.po343
-rw-r--r--po/sr@latin.po342
-rw-r--r--po/sv.po343
-rw-r--r--po/ta.po342
-rw-r--r--po/te.po342
-rw-r--r--po/th.po342
-rw-r--r--po/tr.po343
-rw-r--r--po/uk.po343
-rw-r--r--po/vi.po342
-rw-r--r--po/wa.po342
-rw-r--r--po/zh_CN.po344
-rw-r--r--po/zh_HK.po342
-rw-r--r--po/zh_TW.po343
-rw-r--r--trust/Makefile.am295
-rw-r--r--trust/anchor.c660
-rw-r--r--trust/anchor.h43
-rw-r--r--trust/asn1.c374
-rw-r--r--trust/asn1.h86
-rw-r--r--trust/base64.c251
-rw-r--r--trust/base64.h59
-rw-r--r--trust/basic.asn12
-rw-r--r--trust/basic.asn.h13
-rw-r--r--trust/builder.c1872
-rw-r--r--trust/builder.h67
-rw-r--r--trust/digest.c632
-rw-r--r--trust/digest.h60
-rw-r--r--trust/enumerate.c743
-rw-r--r--trust/enumerate.h107
-rw-r--r--trust/extract-cer.c116
-rw-r--r--trust/extract-jks.c330
-rw-r--r--trust/extract-openssl.c696
-rw-r--r--trust/extract-pem.c178
-rw-r--r--trust/extract.c322
-rw-r--r--trust/extract.h86
-rw-r--r--trust/fixtures/cacert-ca.derbin1857 -> 0 bytes
-rw-r--r--trust/fixtures/cacert3-distrust-all.pem44
-rw-r--r--trust/fixtures/cacert3-distrusted-all.pem43
-rw-r--r--trust/fixtures/cacert3-not-trusted.pem42
-rw-r--r--trust/fixtures/cacert3-trusted-alias.pem42
-rw-r--r--trust/fixtures/cacert3-trusted-keyid.pem42
-rw-r--r--trust/fixtures/cacert3-trusted-server-alias.pem43
-rw-r--r--trust/fixtures/cacert3-trusted.pem43
-rw-r--r--trust/fixtures/cacert3-twice.pem84
-rw-r--r--trust/fixtures/cacert3.derbin1885 -> 0 bytes
-rw-r--r--trust/fixtures/cacert3.pem42
-rw-r--r--trust/fixtures/distrusted.pem23
-rw-r--r--trust/fixtures/empty-file0
-rw-r--r--trust/fixtures/multiple.pem58
-rw-r--r--trust/fixtures/openssl-trust-no-trust.pem27
-rw-r--r--trust/fixtures/redhat-ca.derbin948 -> 0 bytes
-rw-r--r--trust/fixtures/self-signed-with-eku.derbin480 -> 0 bytes
-rw-r--r--trust/fixtures/self-signed-with-ku.derbin478 -> 0 bytes
-rw-r--r--trust/fixtures/simple-string1
-rw-r--r--trust/fixtures/testing-server.derbin554 -> 0 bytes
-rw-r--r--trust/fixtures/thawte.pem25
-rw-r--r--trust/fixtures/unrecognized-file.txt1
-rw-r--r--trust/fixtures/verisign-v1.derbin576 -> 0 bytes
-rw-r--r--trust/fixtures/verisign-v1.pem15
-rw-r--r--trust/frob-bc.c102
-rw-r--r--trust/frob-cert.c134
-rw-r--r--trust/frob-eku.c103
-rw-r--r--trust/frob-ext.c119
-rw-r--r--trust/frob-ku.c126
-rw-r--r--trust/frob-multi-init.c69
-rw-r--r--trust/frob-nss-trust.c221
-rw-r--r--trust/frob-oid.c102
-rw-r--r--trust/frob-pow.c57
-rw-r--r--trust/frob-token.c64
-rw-r--r--trust/index.c912
-rw-r--r--trust/index.h127
-rw-r--r--trust/input/anchors/cacert3.derbin1885 -> 0 bytes
-rw-r--r--trust/input/anchors/testing-ca.derbin970 -> 0 bytes
-rw-r--r--trust/input/blacklist/self-server.derbin396 -> 0 bytes
-rw-r--r--trust/input/cacert-ca.derbin1857 -> 0 bytes
-rw-r--r--trust/input/distrusted.pem23
-rw-r--r--trust/input/verisign-v1.p11-kit17
-rw-r--r--trust/list.c260
-rw-r--r--trust/list.h43
-rw-r--r--trust/module.c1837
-rw-r--r--trust/module.h42
-rw-r--r--trust/oid.c96
-rw-r--r--trust/oid.h236
-rw-r--r--trust/openssl.asn28
-rw-r--r--trust/openssl.asn.h28
-rw-r--r--trust/p11-kit-trust.module17
-rw-r--r--trust/parser.c762
-rw-r--r--trust/parser.h89
-rw-r--r--trust/pem.c288
-rw-r--r--trust/pem.h58
-rw-r--r--trust/persist.c768
-rw-r--r--trust/persist.h63
-rw-r--r--trust/pkix.asn566
-rw-r--r--trust/pkix.asn.h408
-rw-r--r--trust/save.c593
-rw-r--r--trust/save.h85
-rw-r--r--trust/session.c97
-rw-r--r--trust/session.h66
-rw-r--r--trust/test-asn1.c164
-rw-r--r--trust/test-base64.c204
-rw-r--r--trust/test-builder.c2237
-rw-r--r--trust/test-bundle.c272
-rw-r--r--trust/test-cer.c247
-rw-r--r--trust/test-digest.c143
-rw-r--r--trust/test-enumerate.c538
-rw-r--r--trust/test-extract.in189
-rw-r--r--trust/test-index.c1144
-rw-r--r--trust/test-module.c1218
-rw-r--r--trust/test-oid.c127
-rw-r--r--trust/test-openssl.c662
-rw-r--r--trust/test-parser.c567
-rw-r--r--trust/test-pem.c341
-rw-r--r--trust/test-persist.c635
-rw-r--r--trust/test-save.c595
-rw-r--r--trust/test-token.c793
-rw-r--r--trust/test-trust.c333
-rw-r--r--trust/test-trust.h431
-rw-r--r--trust/test-utf8.c244
-rw-r--r--trust/test-x509.c416
-rw-r--r--trust/token.c909
-rw-r--r--trust/token.h68
-rwxr-xr-xtrust/trust-extract-compat.in32
-rw-r--r--trust/trust.c69
-rw-r--r--trust/types.h54
-rw-r--r--trust/utf8.c329
-rw-r--r--trust/utf8.h53
-rw-r--r--trust/x509.c370
-rw-r--r--trust/x509.h89
367 files changed, 10 insertions, 106672 deletions
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 27270fb..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Stef Walter <stefw@collabora.co.uk>
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 0be3835..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,31 +0,0 @@
-=== ChangeLog is autogenerated ===
-
- This project relys on commit messages to provide change history. Please
- write commit messages in the following format:
-
-=== begin example commit ===
-
- Short explanation of the commit
-
- Longer explanation explaining exactly what's changed, whether any
- external or private interfaces changed, what bugs were fixed (with bug
- tracker reference if applicable) and so forth. Be concise but not too
- brief.
-
-=== end example commit ===
-
- - Always add a brief description of the commit to the _first_ line of
- the commit and terminate by two newlines. This may be the title of
- a fixed bug, copied from Bugzilla.
-
- - First line (the brief description) must only be one sentence and
- should start with a capital letter unless it starts with a
- lowercase symbol or identifier. Don't use a trailing full stop,
- and don't exceed 72 characters.
-
- - The main description (the body) is normal prose and should use
- normal punctuation and capital letters where appropriate.
-
- - When committing code on behalf of others use the --author option,
- e.g. git commit -a --author "Joe Coder <joe@coder.org>" and
- --signoff.
diff --git a/HACKING b/HACKING
index 5fa9570..acb2e65 100644
--- a/HACKING
+++ b/HACKING
@@ -1,4 +1,9 @@
-HACKING p11-kit
+MOVED: The code for p11-kit has moved:
+
+https://github.com/p11-glue/p11-kit
+
+
+HACKING on p11-kit
* Documentation on developing p11-kit:
http://p11-glue.freedesktop.org/doc/p11-kit/devel.html
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index f310068..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,108 +0,0 @@
-
-NULL =
-WEBHOST = anarchy.freedesktop.org
-WEBBASE = /srv/p11-glue.freedesktop.org/www
-
-AM_CPPFLAGS = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/common \
- -DBINDIR=\"$(bindir)\" \
- -DBUILDDIR=\"$(abs_builddir)\" \
- -DDATA_DIR=\"$(datadir)\" \
- -DPRIVATEDIR=\"$(privatedir)\" \
- -DSRCDIR=\"$(abs_srcdir)\" \
- -DSYSCONFDIR=\"$(sysconfdir)\" \
- -DP11_KIT_FUTURE_UNSTABLE_API
-
-bin_PROGRAMS =
-private_PROGRAMS =
-
-CHECK_PROGS =
-
-EXTRA_DIST = HACKING
-
-incdir = $(includedir)/p11-kit-1/p11-kit
-inc_HEADERS =
-
-lib_LTLIBRARIES =
-
-noinst_LTLIBRARIES =
-noinst_PROGRAMS = $(CHECK_PROGS)
-noinst_SCRIPTS =
-
-TESTS = $(CHECK_PROGS)
-
-include common/Makefile.am
-include p11-kit/Makefile.am
-
-if WITH_TRUST_MODULE
-include trust/Makefile.am
-endif
-
-SUBDIRS = . doc po
-
-ACLOCAL_AMFLAGS = -I build/m4
-
-DISTCHECK_CONFIGURE_FLAGS = \
- --enable-doc \
- --disable-coverage \
- --enable-strict \
- CFLAGS='-O2'
-
-
-MEMCHECK_ENV = $(TEST_RUNNER) valgrind --error-exitcode=80 --quiet
-
-LEAKCHECK_ENV = $(TEST_RUNNER) valgrind --error-exitcode=81 --quiet --leak-check=yes
-
-HELLCHECK_ENV = $(TEST_RUNNER) valgrind --error-exitcode=82 --quiet --tool=helgrind
-
-memcheck: all
- make $(AM_MAKEFLAGS) TESTS_ENVIRONMENT="$(MEMCHECK_ENV)" check-TESTS
-
-leakcheck: all
- make $(AM_MAKEFLAGS) TESTS_ENVIRONMENT="$(LEAKCHECK_ENV)" check-TESTS
-
-hellcheck: all
- make $(AM_MAKEFLAGS) TESTS_ENVIRONMENT="$(HELLCHECK_ENV)" check-TESTS
-
-dist-hook:
- @if test -d "$(srcdir)/.git"; \
- then \
- echo Creating ChangeLog && \
- ( cd "$(top_srcdir)" && \
- echo '# Generate automatically. Do not edit.'; echo; \
- $(top_srcdir)/missing --run git log --stat --date=short ) > ChangeLog.tmp \
- && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
- || ( rm -f ChangeLog.tmp ; \
- echo Failed to generate ChangeLog >&2 ); \
- else \
- echo A git clone is required to generate a ChangeLog >&2; \
- fi
-
-if WITH_COVERAGE
-coverage:
- mkdir -p build/coverage
- $(LCOV) --directory . --zerocounters
- $(MAKE) check
- $(LCOV) --directory . --capture --output-file build/coverage.info
- $(GENHTML) --output-directory build/coverage \
- --title "p11-kit $(PACKAGE_VERSION)" \
- build/coverage.info
- @echo "file://$(abs_top_builddir)/build/coverage/index.html"
-
-upload-coverage: coverage
- rsync -Hvax build/coverage/./ $(WEBHOST):$(WEBBASE)/build/coverage/./
-endif
-
-if ENABLE_GTK_DOC
-upload-doc: all
- rsync -Hvax --exclude doc --exclude build \
- doc/manual/html/./ $(WEBHOST):$(WEBBASE)/doc/p11-kit/./
-endif
-
-upload-release: $(DIST_ARCHIVES)
- gpg --detach-sign --local-user 'stef@thewalter.net' $<
- scp $< $<.sig $(WEBHOST):$(WEBBASE)/releases/
-
-transifex:
- cd $(srcdir) && sh build/tx-update
diff --git a/NEWS b/NEWS
deleted file mode 100644
index 0cf48e4..0000000
--- a/NEWS
+++ /dev/null
@@ -1,300 +0,0 @@
-0.23.2 (devel)
- * Fix forking issues with libffi [#90289 ...]
- * Updated translations
- * Build fixes [#90827 #89081 #92434 #92520 #92445 #92551 #92843 #92842 #92807 #93211 ...]
-
-0.23.1 (devel)
- * Use new PKCS#11 URI draft fields for URIs [#86474 #87582]
- * Add pem-directory-hash extract format
- * Build fixes
-
-0.22.1 (stable)
- * Use SubjectKeyIdentifier for CKA_ID when available [#84761]
- * Allow 'BEGIN PuBLIC KEY' PEM blocks in .p11-kit files
- * Bump libtool library version
- * Build fixes [#84665 ...]
-
-0.22.0 (stable)
- * Remove the 'isolated = yes' option due to unclear semantics
- replacement forth coming in later versions.
- * Use secure_getenv() where necessary
- * Run separate binary for 'p11-kit remote' command
-
-0.21.3 (unstable)
- * New public pkcs11x.h header containing extensions [#83495]
- * Export necessary defines to lookup attached extensions [#83495]
- * Use term 'attached extensions' rather than 'stabled extensions'
- * Make proxy module respect 'critical = no' [#83651]
- * Show public-key-info in 'trust list --details'
- * Build fixes [#75674 ...]
-
-0.21.2 (unstable)
- * Don't use invalid keys for looking up stapled extensions [#82328]
- * Better error messages when invalid certificate extensions
- * Fix parsing of some odd OpenSSL TRUSTED CERTIFICATE files
- * Fix some leaks, and memory issues
- * Silence some clang scanner warnings
- * Fix build against older pthread implementations [#82617]
- * Move to a non-recursive Makefile
- * Can now specify which tests to run on command line
-
-0.21.1 (unstable)
- * Add new 'isolate' pkcs11 config option [#80472]
- * Add 'p11-kit remote' command for isolating modules [#54105]
- * Don't complain about C_Finalize after a fork
- * Other minor fixes
-
-0.20.3 (stable)
- * Fix problems reinitializing managed modules after fork
- * Fix bad bookeeping when fail initializing one of the modules
- * Fix case where module would be unloaded while in use [#74919]
- * Remove assertions when module used before initialized [#74919]
- * Fix handling of mmap failure and mapping empty files [#74773]
- * Stable p11_kit_be_quiet() and p11_kit_be_loud() functions
- * Require automake 1.12 or later
- * Build fixes for Windows [#76594 #74149]
-
-0.20.2 (stable)
- * Fix bug where blacklist didn't affect extracted ca-anchors if the anchor
- and blacklist were not in the same trust path (regression) [#73558]
- * Check for race in BasicConstraints stapled extension [#69314]
- * autogen.sh now runs configure as srcdir != builddir by default
- * Build fixes and cleanup
-
-0.20.1 (stable)
- * Extract compat trust data after we've changes
- * Skip compat extraction if running as non-root
- * Better failure messages when removing anchors
- * Build cleanup
-
-0.20.0 (stable)
- * Doc fixes
-
-0.19.4 (unstable)
- * 'trust anchor' now adds/removes certificate anchors
- * 'trust list' lists trust policy stuff
- * 'p11-kit extract' is now 'trust extract'
- * 'p11-kit extract-trust' is now 'trust extract-compat'
- * Workarounds for working on broken zfsonlinux.org [#68525]
- * Add --with-module-config parameter to the configure script [#68122]
- * Add support for removing stored PKCS#11 objects in trust module
- * Various debugging tweaks
-
-0.19.3 (unstable)
- * Fix up problems with automake testing
- * Fix a bunch of memory leaks in newly refactored code
- * Don't use _GNU_SOURCE and the unportability it brings
- * Testing fixes
-
-0.19.2 (unstable)
- * Add basic 'trust anchor' command to store a new anchor
- * Support for writing out trust token objects
- * Port to use CKA_PUBLIC_KEY_INFO and updated trust store spec
- * Add option to use freebl for hashing
- * Implement reloading of token data
- * Fix warnings and possible minor bugs higlighted by code scanners
- * Don't load configs in home directories when running setuid or setgid
- * Support treating ~/.config as $XDG_CONFIG_HOME
- * Use $XDG_DATA_HOME/pkcs11 as default user config directory
- * Use $TMPDIR instead of $TEMP while testing
- * Open files and fds with O_CLOEXEC
- * Abort initialization if a critical module fails to load
- * Don't use thread-unsafe functions: strerror, getpwuid
- * Fix p11_kit_space_strlen() result when empty string
- * Refactoring of where various components live
- * Build fixes
-
-0.19.1 (unstable)
- * Refactor API to be able to handle managed modules
- * Deprecate much of old p11-kit API
- * Implement concept of managed modules
- * Make C_CloseAllSessions function work for multiple callers
- * New dependency on libffi
- * Fix possible threading problems reported by hellgrind
- * Add log-calls option
- * Mark p11_kit_message() as a stable function
- * Use our own unit testing framework
-
-0.18.3 (stable)
- * Fix reinitialization of trust module [#65401]
- * Fix crash in trust module C_Initialize
- * Mac OS fixes [#57714]
-
-0.18.2 (stable)
- * Build fixes [#64378 ...]
-
-0.18.1 (stable)
- * Put the external tools in $libdir/p11-kit
- * Documentation build fixes
-
-0.18.0 (stable)
- * Fix use of trust module with gcr and empathy [#62896]
- * Further tweaks to trust module date parsing
- * Fix unaligned memory reads [#62819]
- * Win32 fixes [#63062, #63046]
- * Debug and logging tweaks [#62874]
- * Other build fixes
-
-0.17.5 (unstable)
- * Don't try to guess at overflowing time values on 32-bit systems [#62825]
- * Test fixes [#927394]
-
-0.17.4 (unstable)
- * Check for duplicate certificates in a token, warn and discard [#62548]
- * Implement a proper index so we have decent load performance
-
-0.17.3 (unstable)
- * Use descriptive labels for the trust module tokens [#62534]
- * Remove the temporary built in distrust objects
- * Make extracted output directories and files read-only [#61898]
- * Don't export unneccessary ABI
- * Build fixes [#62479]
-
-0.17.2 (unstable)
- * Fix build on 32-bit linux
- * Fix several crashers
-
-0.17.1 (unstable)
- * Support a p11-kit specific PKCS#11 attribute persistance format [#62156]
- * Use the SHA1 hash of SPKI as the CKA_ID in the trust module by default [#62329]
- * Refactor a trust builder which builds objects out of parsed data [#62329]
- * Combine trust policy when extracting certificates [#61497]
- * The extract --comment option adds comments to PEM bundles [#62029]
- * A new 'priority' config option for ordering modules [#61978]
- * Make each configured path its own trust module token [#61499]
- * Use --with-trust-paths to configure trust module [#62327]
- * Fix bug decoding some PEM files
- * Better debug output for trust module lookups
- * Work around bug in NSS when doing serial number lookups
- * Work around broken strndup() function in firefox
- * Fix the nickname for the distrusted attribute
- * Build fixes
-
-0.16.4 (stable)
- * Display per command help again [#62153]
- * Don't always print tools debug output [#62152]
-
-0.16.3 (stable)
- * When iterating don't skip tokens without the CKF_TOKEN_INITIALIZED flag
- * Hardcode some distrust records for NSS temporarily
- * Parse global options better in the p11-kit command
- * Better debugging
-
-0.16.2 (stable)
- * Fix regression in 'p11-kit extract --purpose' option [#62009]
- * Documentation updates
- * Build fixes [#62001, ...]
-
-0.16.1 (stable)
- * Don't break when cA field of BasicConstraints is missing [#61975]
- * Documentation fixes and updates
- * p11-kit extract-trust is a placeholder script now
-
-0.16.0 (stable)
- * Update the pkcs11.h header for new mechanisms
- * Fix build and tests on mingw64 (ie: win32)
- * Relicense LGPL code to BSD license
- * Documentation tweaks
- * Pull translations from Transifex [#60792]
- * Build fixes [#61739, #60894, #61740]
-
-0.15.2 (unstable)
- * Add German and Finish translations
- * Better define the libtasn1 dependency
- * Crasher and bug fixes
- * Build fixes
-
-0.15.1 (unstable)
- * Fix some memory leaks
- * Add a location for packages to drop module configs
- * Documentation updates and fixes
- * Add command line tool manual page
- * Remove unused err() function and friends
- * Move more code into common/ directory and refactor
- * Add a system trust policy module
- * Refactor how the p11-kit command line tool works
- * Add p11-kit extract and extract-trust commands
- * Don't complain if we cannot access ~/.pkcs11/pkcs11.conf
- * Refuse to load the p11-kit-proxy.so as a registered module
- * Don't fail initialization if last initialized module fails
-
-0.14
- * Change default for user-config to merge
- * Always URI-encode the 'id' attribute in PKCS#11 URIs
- * Expect a .module extension on module configs
- * Windows compatibility fixes
- * Testing fixes
- * Build fixes
-
-0.13
- * Don't allow reading of PIN files larger than 4096 bytes
- * If a module is not marked as critical then ignore init failure
- * Use preconditions to check for input problems and out of memory
- * Add enable-in and disable-in options to module config
- * Fix the flags in pin.h
- * Use gcc extensions to check varargs during compile
- * Fix crasher when a duplicate module is present
- * Fix broken hashmap behavior
- * Testing fixes
- * Win32 build fixes
- * 'p11-kit -h' now works
- * Documentation fixes
-
-0.12
- * Build fix
-
-0.11
- * Remove automatic reinitialization of PKCS#11 after fork
-
-0.10
- * Build fixes, for windows, gcc 4.6.1
-
-0.9
- * p11-kit can't be used as a static library
- * Fix problems crashing when freeing TLS on windows
- * Add debug output to windows init and uninit of library
- * Build fixes, especially for windows
-
-0.8
- * Rename non-static functions to have a _p11_xxx prefix
- * No concurrent calling of C_Initialize and C_Finalize
- * Print more information in 'p11-kit -l'
- * Initial port to win32
- * Build, testing fixes
-
-0.7
- * Expand p11-kit config variables correctly invarious build scenarios
- * Add test tool to print out error messages
- * Build fix on FreeBSD
-
-0.6
- * Add concept of a default module directory from which modules with
- relative paths are loaded.
- * Renamed pkg-config variables to make it clearer what's what.
-
-0.5
- * Fix crasher in p11_kit_registered_modules()
- * Add 'critical' setting for modules, which defaults to 'no'
- * Fix initialization issues in the proxy module
-
-0.4
- * Fix endless loop if module forks during initialization
- * Update PKCS#11 URI code for new draft of spec
- * Don't fail when duplicate modules are configured
- * Better debug output
- * Add example configuration documentation
- * Support whitespace in PKCS#11 URIs
-
-0.3
- * Rewrite hash table, and simplify licensing.
- * Correct paths for p11-kit config files.
- * Many build fixes and tweaks.
-
-0.2
- * List token labels in 'p11-kit -l'
- * Add API's for handing the pinfile part of URIs
- * Use /etc/pkcs11 by default instead of ${prefix}/etc/pkcs11
- * Bug fixes
-
-0.1
- * Initial release
diff --git a/README b/README
index 5e9943a..42f44f6 100644
--- a/README
+++ b/README
@@ -1,3 +1,7 @@
+MOVED: The code for p11-kit has moved:
+
+https://github.com/p11-glue/p11-kit
+
P11-KIT
Provides a way to load and enumerate PKCS#11 modules. Provides a standard
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 94b54ab..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh -e
-
-set -e
-
-oldpwd=$(pwd)
-topdir=$(dirname $0)
-cd $topdir
-
-# Some boiler plate to get git setup as expected
-if test -d .git; then
- if test -f .git/hooks/pre-commit.sample && \
- test ! -f .git/hooks/pre-commit; then
- cp -pv .git/hooks/pre-commit.sample .git/hooks/pre-commit
- fi
-fi
-
-set -x
-
-gettextize=$(which gettextize || true)
-if test -z "$gettextize"; then
- echo "Couldn't find gettextize" >&2
- exit 1
-fi
-
-# Copied from avahi's autogen.sh to work around gettext braindamage
-rm -f Makefile.am~ configure.ac~
-# Evil, evil, evil, evil hack
-sed 's/read dummy/\#/' $gettextize | sh -s -- --copy --force --no-changelog
-test -f Makefile.am~ && mv Makefile.am~ Makefile.am
-test -f configure.ac~ && mv configure.ac~ configure.ac
-
-autoreconf --force --install --verbose
-if test x"$NOCONFIGURE" = x; then
- cd $oldpwd
- exec $topdir/configure "$@"
-fi
-
diff --git a/automaint.sh b/automaint.sh
deleted file mode 100755
index 8859dcc..0000000
--- a/automaint.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-set -e
-
-NOCONFIGURE=1 ./autogen.sh
-
-ARGS="--enable-strict --enable-debug"
-CROSS="x86_64-w64-mingw32"
-
-configure()
-(
- build=$1
- shift
-
- pwd=$(pwd)
- mkdir -p $build
- cd $build
- echo "Configuring for: $build" >&2
- echo $pwd/configure "$@" >&2
- $pwd/configure "$@"
-)
-
-# Configure the local build. To control which arguments are used create a
-# CONFIG_SITE script as directed in the autoconf documentation:
-# http://www.gnu.org/software/autoconf/manual/autoconf.html#Site-Defaults
-configure ./build --prefix=/usr --enable-doc --enable-coverage $ARGS "$@"
-
-# Configure the cross builds
-for cross in $CROSS; do
- configure ./$cross --prefix=/opt/$cross --host=$cross $ARGS "$@"
-done
-
-# B
-
-(
- echo "CROSS = $CROSS"
-
- for target in all check clean distclean; do
- echo "$target:"
- echo ' $(MAKE) -C ./build' $target
- echo ' @for dir in $(CROSS); do \'
- echo ' $(MAKE) -C ./$$dir' $target '; \'
- echo ' done'
- done
-
- for target in distcheck memcheck leakcheck hellcheck install upload-coverage \
- coverage upload-doc upload-release transifex; do
- echo "$target:"
- echo ' $(MAKE) -C ./build' $target
- done
-
-) > ./makefile
diff --git a/build/certs/Makefile b/build/certs/Makefile
deleted file mode 100644
index 033ecde..0000000
--- a/build/certs/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-
-# Note that nothing here is distributed. It just lives in the git repository
-# We copy everything into its final location, and those test files are
-# distributed in the tarballs
-
-TRUST = ../../trust
-
-prepare-certs:
- cp -v cacert3.der $(TRUST)/input/anchors
- cp -v cacert3.der $(TRUST)/fixtures
- cp -v cacert3.der $(TRUST)/fixtures
- openssl x509 -in cacert3.der -inform DER -out $(TRUST)/fixtures/cacert3.pem
- openssl x509 -in cacert3.der -inform DER -out $(TRUST)/fixtures/cacert3.pem
- cat $(TRUST)/fixtures/cacert3.pem $(TRUST)/fixtures/cacert3.pem > $(TRUST)/fixtures/cacert3-twice.pem
- openssl x509 -in cacert3.der -inform DER -out $(TRUST)/fixtures/cacert3-trusted.pem \
- -addtrust serverAuth -addreject emailProtection \
- -setalias "Custom Label"
- cp $(TRUST)/fixtures/cacert3-trusted.pem $(TRUST)/fixtures/cacert3-trusted-server-alias.pem
- openssl x509 -in cacert3.der -inform DER -out $(TRUST)/fixtures/cacert3-trusted-alias.pem \
- -setalias "Custom Label"
- openssl x509 -in cacert3.der -inform DER -out $(TRUST)/fixtures/cacert3-distrust-all.pem \
- -addreject serverAuth -addreject clientAuth -addreject codeSigning \
- -addreject emailProtection -addreject ipsecEndSystem -addreject ipsecTunnel \
- -addreject ipsecUser -addreject timeStamping
- openssl x509 -in verisign-v1.der -inform DER -out $(TRUST)/fixtures/verisign-v1.pem \
- -setalias "Custom Label"
- cat $(TRUST)/fixtures/cacert3-trusted-server-alias.pem \
- $(TRUST)/fixtures/verisign-v1.pem > $(TRUST)/fixtures/multiple.pem
- cp -v cacert-ca.der $(TRUST)/input
- cp -v cacert-ca.der $(TRUST)/fixtures
- openssl x509 -in redhat-newca.der -inform DER -out $(TRUST)/fixtures/distrusted.pem \
- -addreject clientAuth -setalias "Red Hat Is the CA"
- cp -v $(TRUST)/fixtures/distrusted.pem $(TRUST)/input
- cp -v self-server.der $(TRUST)/input/blacklist
- cp -v self-signed-with-eku.der $(TRUST)/fixtures
- cp -v self-signed-with-ku.der $(TRUST)/fixtures
- cp -v testing-ca.der $(TRUST)/input/anchors
- cp -v testing-server.der $(TRUST)/fixtures
-
-# Rebuild the self-signed certificates. This is almost never necessary and
-# will require other changes in the code, mostly here as documentation
-build-self-signed:
- openssl req -new -x509 -outform DER -out self-signed-with-eku.der \
- -newkey rsa -keyout /dev/null -nodes -subj /CN=self-signed-with-eku.example.com \
- -config with-eku.conf -set_serial 888 -extensions v3_ca
- openssl req -new -x509 -outform DER -out self-signed-with-ku.der \
- -newkey rsa -keyout /dev/null -nodes -subj /CN=self-signed-with-ku.example.com \
- -config with-ku.conf -set_serial 888 -extensions v3_ca
- openssl req -new -x509 -outform DER -out distant-end-date.der \
- -newkey rsa:512 -keyout /dev/null -nodes -subj /CN=far-in-the-future.example.com \
- -config with-ku.conf -set_serial 999 -extensions v3_ca -days 20000
diff --git a/build/certs/cacert-ca.der b/build/certs/cacert-ca.der
deleted file mode 100644
index 719b0ff..0000000
--- a/build/certs/cacert-ca.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/cacert3.der b/build/certs/cacert3.der
deleted file mode 100644
index 56f8c88..0000000
--- a/build/certs/cacert3.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/distant-end-date.der b/build/certs/distant-end-date.der
deleted file mode 100644
index 1b3fd47..0000000
--- a/build/certs/distant-end-date.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/entrust-invalid.der b/build/certs/entrust-invalid.der
deleted file mode 100644
index 7be5c18..0000000
--- a/build/certs/entrust-invalid.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/redhat-newca.der b/build/certs/redhat-newca.der
deleted file mode 100644
index affae24..0000000
--- a/build/certs/redhat-newca.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/self-server.der b/build/certs/self-server.der
deleted file mode 100644
index 68fe9af..0000000
--- a/build/certs/self-server.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/self-signed-with-eku.der b/build/certs/self-signed-with-eku.der
deleted file mode 100644
index 33e0760..0000000
--- a/build/certs/self-signed-with-eku.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/self-signed-with-ku.der b/build/certs/self-signed-with-ku.der
deleted file mode 100644
index 51bb227..0000000
--- a/build/certs/self-signed-with-ku.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/testing-ca.der b/build/certs/testing-ca.der
deleted file mode 100644
index d3f70ea..0000000
--- a/build/certs/testing-ca.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/testing-server.der b/build/certs/testing-server.der
deleted file mode 100644
index cf2de65..0000000
--- a/build/certs/testing-server.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/verisign-v1.der b/build/certs/verisign-v1.der
deleted file mode 100644
index bcd5ebb..0000000
--- a/build/certs/verisign-v1.der
+++ /dev/null
Binary files differ
diff --git a/build/certs/with-eku.conf b/build/certs/with-eku.conf
deleted file mode 100644
index 8eab21d..0000000
--- a/build/certs/with-eku.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Use with the following command
-# $ openssl req -new -x509 -outform DER -out self-signed-with-ku.pem \
-# -newkey rsa -keyout self-signed-with-ku.key -nodes \
-# -config with-ku.conf -set_serial 888 -extensions v3_ca
-#
-
-[ req ]
-default_bits = 1024
-distinguished_name = req_distinguished_name
-x509_extensions = v3_ca
-dirstring_type = nobmp
-
-[ req_distinguished_name ]
-commonName = Common Name
-commonName_max = 64
-
-[ v3_ca ]
-keyUsage=keyCertSign,digitalSignature \ No newline at end of file
diff --git a/build/certs/with-ku.conf b/build/certs/with-ku.conf
deleted file mode 100644
index aa0acc1..0000000
--- a/build/certs/with-ku.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Use with the following command
-# $ openssl req -new -x509 -outform DER -out self-signed-with-eku.pem \
-# -newkey rsa -keyout self-signed-with-eku.key -nodes \
-# -config with-eku.conf -set_serial 888 -extensions v3_ca
-#
-
-[ req ]
-default_bits = 1024
-distinguished_name = req_distinguished_name
-x509_extensions = v3_ca
-dirstring_type = nobmp
-
-[ req_distinguished_name ]
-commonName = Common Name
-commonName_max = 64
-
-[ v3_ca ]
-extendedKeyUsage=clientAuth,emailProtection,1.2.3.4 \ No newline at end of file
diff --git a/build/gtk-doc.make b/build/gtk-doc.make
deleted file mode 100644
index 4709268..0000000
--- a/build/gtk-doc.make
+++ /dev/null
@@ -1,259 +0,0 @@
-# -*- mode: makefile -*-
-
-####################################
-# Everything below here is generic #
-####################################
-
-if GTK_DOC_USE_LIBTOOL
-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-GTKDOC_RUN = $(LIBTOOL) --mode=execute
-else
-GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-GTKDOC_RUN =
-endif
-
-# We set GPATH here; this gives us semantics for GNU make
-# which are more like other make's VPATH, when it comes to
-# whether a source that is a target of one rule is then
-# searched for in VPATH/GPATH.
-#
-GPATH = $(srcdir)
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-SETUP_FILES = \
- $(content_files) \
- $(DOC_MAIN_SGML_FILE) \
- $(DOC_MODULE)-sections.txt \
- $(DOC_MODULE)-overrides.txt \
- style.css
-
-EXTRA_DIST = \
- $(HTML_IMAGES) \
- $(SETUP_FILES)
-
-DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \
- html-build.stamp pdf-build.stamp \
- sgml.stamp html.stamp pdf.stamp
-
-SCANOBJ_FILES = \
- $(DOC_MODULE).args \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).interfaces \
- $(DOC_MODULE).prerequisites \
- $(DOC_MODULE).signals
-
-REPORT_FILES = \
- $(DOC_MODULE)-undocumented.txt \
- $(DOC_MODULE)-undeclared.txt \
- $(DOC_MODULE)-unused.txt
-
-CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
-
-if ENABLE_GTK_DOC
-if GTK_DOC_BUILD_HTML
-HTML_BUILD_STAMP=html-build.stamp
-else
-HTML_BUILD_STAMP=
-endif
-if GTK_DOC_BUILD_PDF
-PDF_BUILD_STAMP=pdf-build.stamp
-else
-PDF_BUILD_STAMP=
-endif
-
-all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-else
-all-local:
-endif
-
-docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-
-$(REPORT_FILES): sgml-build.stamp
-
-#### setup ####
-
-setup-build.stamp:
- -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
- echo ' DOC Preparing build'; \
- files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
- if test "x$$files" != "x" ; then \
- for file in $$files ; do \
- test -f $(abs_srcdir)/$$file && \
- cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
- done; \
- fi; \
- fi
- @touch setup-build.stamp
-
-
-#### scan ####
-
-scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
- @echo ' DOC Scanning header files'
- @_source_dir='' ; \
- for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
- @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
- echo " DOC Introspecting gobjects"; \
- scanobj_options=""; \
- gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- scanobj_options="--verbose"; \
- fi; \
- fi; \
- CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
- gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
- else \
- for i in $(SCANOBJ_FILES) ; do \
- test -f $$i || touch $$i ; \
- done \
- fi
- @touch scan-build.stamp
-
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
- @true
-
-#### xml ####
-
-sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
- @echo ' DOC Building XML'
- @_source_dir='' ; \
- for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
- @touch sgml-build.stamp
-
-sgml.stamp: sgml-build.stamp
- @true
-
-#### html ####
-
-html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(srcdir)/style.css
- @echo ' DOC Building HTML'
- @rm -rf html
- @mkdir html
- @mkhtml_options=""; \
- gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- mkhtml_options="$$mkhtml_options --verbose"; \
- fi; \
- fi; \
- gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
- if test "$(?)" = "0"; then \
- mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
- fi; \
- cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
- -@test "x$(HTML_IMAGES)" = "x" || \
- for file in $(HTML_IMAGES) ; do \
- if test -f $(abs_srcdir)/$$file ; then \
- cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
- fi; \
- if test -f $(abs_builddir)/$$file ; then \
- cp $(abs_builddir)/$$file $(abs_builddir)/html; \
- fi; \
- done;
- @echo ' DOC Fixing cross-references'
- @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- @mv $(builddir)/html/style.css $(builddir)/html/gtk-doc.css
- @cp $(srcdir)/style.css $(builddir)/html/style.css
- @touch html-build.stamp
-
-#### pdf ####
-
-pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- @echo ' DOC Building PDF'
- @rm -f $(DOC_MODULE).pdf
- @mkpdf_options=""; \
- gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- mkpdf_options="$$mkpdf_options --verbose"; \
- fi; \
- fi; \
- if test "x$(HTML_IMAGES)" != "x"; then \
- for img in $(HTML_IMAGES); do \
- part=`dirname $$img`; \
- echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
- if test $$? != 0; then \
- mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
- fi; \
- done; \
- fi; \
- gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
- @touch pdf-build.stamp
-
-##############
-
-clean-local:
- @rm -f *~ *.bak
- @rm -rf .libs
-
-distclean-local:
- @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
- $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
- @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
- rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
- fi
-
-maintainer-clean-local: clean
- @rm -rf xml html
-
-install-data-local:
- @installfiles=`echo $(builddir)/html/*`; \
- if test "$$installfiles" = '$(builddir)/html/*'; \
- then echo 1>&2 'Nothing to install' ; \
- else \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- $(mkinstalldirs) $${installdir} ; \
- for i in $$installfiles; do \
- echo ' $(INSTALL_DATA) '$$i ; \
- $(INSTALL_DATA) $$i $${installdir}; \
- done; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
- $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
- fi; \
- $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
- fi
-
-uninstall-local:
- @if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- rm -rf $${installdir}
-
-#
-# Require gtk-doc when making dist
-#
-if ENABLE_GTK_DOC
-dist-check-gtkdoc:
-else
-dist-check-gtkdoc:
- @echo "*** gtk-doc must be installed and --enable-doc in order to make dist"
- @false
-endif
-
-dist-hook: dist-check-gtkdoc dist-hook-local
- @mkdir $(distdir)/html
- @cp ./html/* $(distdir)/html
- @-cp ./$(DOC_MODULE).pdf $(distdir)/
- @-cp ./$(DOC_MODULE).types $(distdir)/
- @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
- @cd $(distdir) && rm -f $(DISTCLEANFILES)
- @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
-
-.PHONY : dist-hook-local docs
diff --git a/build/litter/.empty b/build/litter/.empty
deleted file mode 100644
index be533a1..0000000
--- a/build/litter/.empty
+++ /dev/null
@@ -1 +0,0 @@
-Stub file to track in git
diff --git a/build/m4/.empty b/build/m4/.empty
deleted file mode 100644
index be533a1..0000000
--- a/build/m4/.empty
+++ /dev/null
@@ -1 +0,0 @@
-Stub file to track in git
diff --git a/build/tx-update b/build/tx-update
deleted file mode 100644
index 5d61335..0000000
--- a/build/tx-update
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-
-set -euf
-
-TX_PROJECT="p11-kit"
-TX_HOST="https://www.transifex.com"
-TX_RESOURCE="$TX_PROJECT.master"
-
-fail()
-{
- echo "tx-update: $@" >&2
- exit 2
-}
-
-tx_langs()
-(
- cd .tx/$TX_RESOURCE
- ls | sed 's/_translation//'
-)
-
-lingua_langs()
-{
- cat po/LINGUAS | while read lang extra; do
- case $lang in \
- \#*) ;;
- en) ;;
- *) echo -n "$lang "
- esac
- done
-}
-
-if [ ! -d po ]; then
- fail "run this script in the top level project directory"
-fi
-
-if [ ! -d .tx ]; then
- tx init --host=$TX_HOST
- tx set --source -r $TX_RESOURCE -l en po/$TX_PROJECT.pot
-fi
-
-# Push source to server
-tx push -s
-
-# Pull from the server
-tx pull -a
-
-pull_again="no"
-
-# Update LINGUAS
-for lang in $(tx_langs); do
- if ! grep -qw $lang po/LINGUAS; then
- echo $lang >> po/LINGUAS
- pull_again="yes"
- fi
-done
-
-# Setup associations
-for lang in $(lingua_langs); do
- tx set -r $TX_RESOURCE -l $lang po/$lang.po
- pull_again="yes"
-done
-
-# Pull and get all translations
-if [ "$pull_again" = "yes" ]; then
- tx pull
-fi
diff --git a/common/Makefile.am b/common/Makefile.am
deleted file mode 100644
index b053ec0..0000000
--- a/common/Makefile.am
+++ /dev/null
@@ -1,111 +0,0 @@
-
-inc_HEADERS += \
- common/pkcs11.h \
- common/pkcs11x.h \
- $(NULL)
-
-noinst_LTLIBRARIES += \
- libp11-common.la \
- libp11-library.la \
- libp11-test.la \
- libp11-tool.la \
- $(NULL)
-
-libp11_common_la_SOURCES = \
- common/argv.c common/argv.h \
- common/attrs.c common/attrs.h \
- common/array.c common/array.h \
- common/buffer.c common/buffer.h \
- common/compat.c common/compat.h \
- common/constants.c common/constants.h \
- common/debug.c common/debug.h \
- common/dict.c common/dict.h \
- common/hash.c common/hash.h \
- common/lexer.c common/lexer.h \
- common/message.c common/message.h \
- common/path.c common/path.h \
- common/pkcs11.h common/pkcs11x.h common/pkcs11i.h \
- common/url.c common/url.h \
- $(NULL)
-
-libp11_library_la_SOURCES = \
- common/library.c common/library.h \
- $(NULL)
-
-libp11_test_la_SOURCES = \
- common/mock.c common/mock.h \
- common/test.c common/test.h \
- $(NULL)
-
-libp11_tool_la_SOURCES = \
- common/tool.c common/tool.h \
- $(NULL)
-
-# Tests ----------------------------------------------------------------
-
-common_LIBS = \
- libp11-test.la \
- libp11-common.la \
- $(NULL)
-
-CHECK_PROGS += \
- test-tests \
- test-compat \
- test-hash \
- test-dict \
- test-array \
- test-constants \
- test-attrs \
- test-buffer \
- test-url \
- test-path \
- test-lexer \
- test-message \
- $(NULL)
-
-test_array_SOURCES = common/test-array.c
-test_array_LDADD = $(common_LIBS)
-
-test_attrs_SOURCES = common/test-attrs.c
-test_attrs_LDADD = $(common_LIBS)
-
-test_buffer_SOURCES = common/test-buffer.c
-test_buffer_LDADD = $(common_LIBS)
-
-test_compat_SOURCES = common/test-compat.c
-test_compat_LDADD = $(common_LIBS)
-
-test_constants_SOURCES = common/test-constants.c
-test_constants_LDADD = $(common_LIBS)
-
-test_dict_SOURCES = common/test-dict.c
-test_dict_LDADD = $(common_LIBS)
-
-test_hash_SOURCES = common/test-hash.c
-test_hash_LDADD = $(common_LIBS)
-
-test_lexer_SOURCES = common/test-lexer.c
-test_lexer_LDADD = $(common_LIBS)
-
-test_message_SOURCES = common/test-message.c
-test_message_LDADD = $(common_LIBS)
-
-test_path_SOURCES = common/test-path.c
-test_path_LDADD = $(common_LIBS)
-
-test_tests_SOURCES = common/test-tests.c
-test_tests_LDADD = $(common_LIBS)
-
-test_url_SOURCES = common/test-url.c
-test_url_LDADD = $(common_LIBS)
-
-noinst_PROGRAMS += \
- frob-getauxval \
- frob-getenv \
- $(NULL)
-
-frob_getauxval_SOURCES = common/frob-getauxval.c
-frob_getauxval_LDADD = $(common_LIBS)
-
-frob_getenv_SOURCES = common/frob-getenv.c
-frob_getenv_LDADD = $(common_LIBS)
diff --git a/common/argv.c b/common/argv.c
deleted file mode 100644
index 6d91bfa..0000000
--- a/common/argv.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#include "config.h"
-
-#include "argv.h"
-#include "debug.h"
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-bool
-p11_argv_parse (const char *string,
- void (*sink) (char *, void *),
- void *argument)
-{
- char quote = '\0';
- char *src, *dup, *at, *arg;
- bool ret = true;
-
- return_val_if_fail (string != NULL, false);
- return_val_if_fail (sink != NULL, false);
-
- src = dup = strdup (string);
- return_val_if_fail (dup != NULL, false);
-
- arg = at = src;
- for (src = dup; *src; src++) {
-
- /* Matching quote */
- if (quote == *src) {
- quote = '\0';
-
- /* Inside of quotes */
- } else if (quote != '\0') {
- if (*src == '\\') {
- *at++ = *src++;
- if (!*src) {
- ret = false;
- goto done;
- }
- if (*src != quote)
- *at++ = '\\';
- }
- *at++ = *src;
-
- /* Space, not inside of quotes */
- } else if (isspace (*src)) {
- *at = 0;
- sink (arg, argument);
- arg = at;
-
- /* Other character outside of quotes */
- } else {
- switch (*src) {
- case '\'':
- case '"':
- quote = *src;
- break;
- case '\\':
- *at++ = *src++;
- if (!*src) {
- ret = false;
- goto done;
- }
- /* fall through */
- default:
- *at++ = *src;
- break;
- }
- }
- }
-
-
- if (at != arg) {
- *at = 0;
- sink (arg, argument);
- }
-
-done:
- free (dup);
- return ret;
-}
diff --git a/common/argv.h b/common/argv.h
deleted file mode 100644
index 8f95490..0000000
--- a/common/argv.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef P11_ARGV_H_
-#define P11_ARGV_H_
-
-#include "compat.h"
-
-bool p11_argv_parse (const char *string,
- void (*sink) (char *, void *),
- void *argument);
-
-#endif /* P11_ARGV_H_ */
diff --git a/common/array.c b/common/array.c
deleted file mode 100644
index 185ea2f..0000000
--- a/common/array.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- */
-
-#include "config.h"
-
-#include "array.h"
-#include "debug.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-static bool
-maybe_expand_array (p11_array *array,
- unsigned int length)
-{
- unsigned int new_allocated;
- void **new_memory;
-
- if (length <= array->allocated)
- return true;
-
-
- new_allocated = array->allocated * 2;
- if (new_allocated == 0)
- new_allocated = 16;
- if (new_allocated < length)
- new_allocated = length;
-
- new_memory = realloc (array->elem, new_allocated * sizeof (void*));
- return_val_if_fail (new_memory != NULL, false);
-
- array->elem = new_memory;
- array->allocated = new_allocated;
- return true;
-}
-
-p11_array *
-p11_array_new (p11_destroyer destroyer)
-{
- p11_array *array;
-
- array = calloc (1, sizeof (p11_array));
- if (array == NULL)
- return NULL;
-
- if (!maybe_expand_array (array, 2)) {
- p11_array_free (array);
- return NULL;
- }
-
- array->destroyer = destroyer;
- return array;
-}
-
-void
-p11_array_free (p11_array *array)
-{
- if (array == NULL)
- return;
-
- p11_array_clear (array);
- free (array->elem);
- free (array);
-}
-
-bool
-p11_array_push (p11_array *array,
- void *value)
-{
- if (!maybe_expand_array (array, array->num + 1))
- return_val_if_reached (false);
-
- array->elem[array->num] = value;
- array->num++;
- return true;
-}
-
-void
-p11_array_remove (p11_array *array,
- unsigned int index)
-{
- if (array->destroyer)
- (array->destroyer) (array->elem[index]);
- memmove (array->elem + index, array->elem + index + 1,
- (array->num - (index + 1)) * sizeof (void*));
- array->num--;
-}
-
-void
-p11_array_clear (p11_array *array)
-{
- unsigned int i;
-
- if (array->destroyer) {
- for (i = 0; i < array->num; i++)
- (array->destroyer) (array->elem[i]);
- }
-
- array->num = 0;
-}
diff --git a/common/array.h b/common/array.h
deleted file mode 100644
index 94be29c..0000000
--- a/common/array.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Waler <stefw@collabora.co.uk>
- */
-
-#ifndef __P11_ARRAY_H__
-#define __P11_ARRAY_H__
-
-#include "compat.h"
-
-#ifndef P11_DESTROYER_DEFINED
-#define P11_DESTROYER_DEFINED
-
-typedef void (*p11_destroyer) (void *data);
-
-#endif
-
-typedef struct _p11_array {
- void **elem;
- unsigned int num;
-
- /* private */
- unsigned int allocated;
- p11_destroyer destroyer;
-} p11_array;
-
-p11_array * p11_array_new (p11_destroyer destroyer);
-
-void p11_array_free (p11_array *array);
-
-bool p11_array_push (p11_array *array,
- void *value);
-
-void p11_array_remove (p11_array *array,
- unsigned int index);
-
-void p11_array_clear (p11_array *array);
-
-#endif /* __P11_ARRAY_H__ */
diff --git a/common/attrs.c b/common/attrs.c
deleted file mode 100644
index 5a138a8..0000000
--- a/common/attrs.c
+++ /dev/null
@@ -1,903 +0,0 @@
-/*
- * Copyright (C) 2012, Redhat Inc.
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-
-#include "attrs.h"
-#include "buffer.h"
-#include "compat.h"
-#include "constants.h"
-#include "debug.h"
-#include "hash.h"
-#include "pkcs11.h"
-#include "pkcs11i.h"
-#include "pkcs11x.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define ELEMS(x) (sizeof (x) / sizeof (x[0]))
-
-bool
-p11_attrs_terminator (const CK_ATTRIBUTE *attrs)
-{
- return (attrs == NULL || attrs->type == CKA_INVALID);
-}
-
-CK_ULONG
-p11_attrs_count (const CK_ATTRIBUTE *attrs)
-{
- CK_ULONG count;
-
- if (attrs == NULL)
- return 0UL;
-
- for (count = 0; !p11_attrs_terminator (attrs); count++, attrs++);
-
- return count;
-}
-
-void
-p11_attrs_free (void *attrs)
-{
- CK_ATTRIBUTE *ats = attrs;
- int i;
-
- if (!attrs)
- return;
-
- for (i = 0; !p11_attrs_terminator (ats + i); i++)
- free (ats[i].pValue);
- free (ats);
-}
-
-static CK_ATTRIBUTE *
-attrs_build (CK_ATTRIBUTE *attrs,
- CK_ULONG count_to_add,
- bool take_values,
- bool override,
- CK_ATTRIBUTE * (*generator) (void *),
- void *state)
-{
- CK_ATTRIBUTE *attr;
- CK_ATTRIBUTE *add;
- CK_ULONG current;
- CK_ULONG at;
- CK_ULONG j;
- CK_ULONG i;
-
- /* How many attributes we already have */
- current = p11_attrs_count (attrs);
-
- /* Reallocate for how many we need */
- attrs = realloc (attrs, (current + count_to_add + 1) * sizeof (CK_ATTRIBUTE));
- return_val_if_fail (attrs != NULL, NULL);
-
- at = current;
- for (i = 0; i < count_to_add; i++) {
- add = (generator) (state);
-
- /* Skip with invalid type */
- if (!add || add->type == CKA_INVALID)
- continue;
-
- attr = NULL;
-
- /* Do we have this attribute? */
- for (j = 0; attr == NULL && j < current; j++) {
- if (attrs[j].type == add->type) {
- attr = attrs + j;
- break;
- }
- }
-
- /* The attribute doesn't exist */
- if (attr == NULL) {
- attr = attrs + at;
- at++;
-
- /* The attribute exists and we're not overriding */
- } else if (!override) {
- if (take_values)
- free (add->pValue);
- continue;
-
- /* The attribute exitss, and we're overriding */
- } else {
- free (attr->pValue);
- }
-
- memcpy (attr, add, sizeof (CK_ATTRIBUTE));
- if (!take_values && attr->pValue != NULL) {
- if (attr->ulValueLen == 0)
- attr->pValue = malloc (1);
- else
- attr->pValue = memdup (attr->pValue, attr->ulValueLen);
- return_val_if_fail (attr->pValue != NULL, NULL);
- }
- }
-
- /* Mark this as the end */
- (attrs + at)->type = CKA_INVALID;
- assert (p11_attrs_terminator (attrs + at));
- return attrs;
-}
-
-static CK_ATTRIBUTE *
-vararg_generator (void *state)
-{
- va_list *va = state;
- return va_arg (*va, CK_ATTRIBUTE *);
-}
-
-CK_ATTRIBUTE *
-p11_attrs_build (CK_ATTRIBUTE *attrs,
- ...)
-{
- CK_ULONG count;
- va_list va;
-
- count = 0UL;
- va_start (va, attrs);
- while (va_arg (va, CK_ATTRIBUTE *))
- count++;
- va_end (va);
-
- va_start (va, attrs);
- attrs = attrs_build (attrs, count, false, true,
- vararg_generator, &va);
- va_end (va);
-
- return attrs;
-}
-
-static CK_ATTRIBUTE *
-template_generator (void *state)
-{
- CK_ATTRIBUTE **template = state;
- return (*template)++;
-}
-
-CK_ATTRIBUTE *
-p11_attrs_buildn (CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *add,
- CK_ULONG count)
-{
- return attrs_build (attrs, count, false, true,
- template_generator, &add);
-}
-
-CK_ATTRIBUTE *
-p11_attrs_take (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_VOID_PTR value,
- CK_ULONG length)
-{
- CK_ATTRIBUTE attr = { type, value, length };
- CK_ATTRIBUTE *add = &attr;
- return attrs_build (attrs, 1, true, true,
- template_generator, &add);
-}
-
-CK_ATTRIBUTE *
-p11_attrs_merge (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE *merge,
- bool replace)
-{
- CK_ATTRIBUTE *ptr;
- CK_ULONG count;
-
- if (attrs == NULL)
- return merge;
-
- ptr = merge;
- count = p11_attrs_count (merge);
-
- attrs = attrs_build (attrs, count, true, replace,
- template_generator, &ptr);
-
- /*
- * Since we're supposed to own the merge attributes,
- * free the container array.
- */
- free (merge);
-
- return attrs;
-}
-
-CK_ATTRIBUTE *
-p11_attrs_dup (const CK_ATTRIBUTE *attrs)
-{
- CK_ULONG count;
-
- count = p11_attrs_count (attrs);
- return p11_attrs_buildn (NULL, attrs, count);
-}
-
-CK_ATTRIBUTE *
-p11_attrs_find (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type)
-{
- CK_ULONG i;
-
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].type == type)
- return attrs + i;
- }
-
- return NULL;
-}
-
-CK_ATTRIBUTE *
-p11_attrs_findn (CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type)
-{
- CK_ULONG i;
-
- for (i = 0; i < count; i++) {
- if (attrs[i].type == type)
- return attrs + i;
- }
-
- return NULL;
-}
-
-bool
-p11_attrs_find_bool (const CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value)
-{
- CK_ULONG i;
-
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].type == type &&
- attrs[i].ulValueLen == sizeof (CK_BBOOL) &&
- attrs[i].pValue != NULL) {
- *value = *((CK_BBOOL *)attrs[i].pValue);
- return true;
- }
- }
-
- return false;
-}
-
-bool
-p11_attrs_findn_bool (const CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value)
-{
- CK_ULONG i;
-
- for (i = 0; i < count; i++) {
- if (attrs[i].type == type &&
- attrs[i].ulValueLen == sizeof (CK_BBOOL) &&
- attrs[i].pValue != NULL) {
- *value = *((CK_BBOOL *)attrs[i].pValue);
- return true;
- }
- }
-
- return false;
-}
-
-bool
-p11_attrs_find_ulong (const CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value)
-{
- CK_ULONG i;
-
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].type == type &&
- attrs[i].ulValueLen == sizeof (CK_ULONG) &&
- attrs[i].pValue != NULL) {
- *value = *((CK_ULONG *)attrs[i].pValue);
- return true;
- }
- }
-
- return false;
-}
-
-bool
-p11_attrs_findn_ulong (const CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value)
-{
- CK_ULONG i;
-
- for (i = 0; i < count; i++) {
- if (attrs[i].type == type &&
- attrs[i].ulValueLen == sizeof (CK_ULONG) &&
- attrs[i].pValue != NULL) {
- *value = *((CK_ULONG *)attrs[i].pValue);
- return true;
- }
- }
-
- return false;
-}
-
-void *
-p11_attrs_find_value (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- size_t *length)
-{
- CK_ULONG i;
-
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].type == type &&
- attrs[i].ulValueLen != 0 &&
- attrs[i].ulValueLen != (CK_ULONG)-1 &&
- attrs[i].pValue != NULL) {
- if (length)
- *length = attrs[i].ulValueLen;
- return attrs[i].pValue;
- }
- }
-
- return NULL;
-}
-
-CK_ATTRIBUTE *
-p11_attrs_find_valid (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type)
-{
- CK_ULONG i;
-
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].type == type &&
- attrs[i].pValue != NULL &&
- attrs[i].ulValueLen != 0 &&
- attrs[i].ulValueLen != (CK_ULONG)-1)
- return attrs + i;
- }
-
- return NULL;
-}
-
-bool
-p11_attrs_remove (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type)
-{
- CK_ULONG count;
- CK_ULONG i;
-
- count = p11_attrs_count (attrs);
- for (i = 0; i < count; i++) {
- if (attrs[i].type == type)
- break;
- }
-
- if (i == count)
- return false;
-
- if (attrs[i].pValue)
- free (attrs[i].pValue);
-
- memmove (attrs + i, attrs + i + 1, (count - (i + 1)) * sizeof (CK_ATTRIBUTE));
- attrs[count - 1].type = CKA_INVALID;
- return true;
-}
-
-void
-p11_attrs_purge (CK_ATTRIBUTE *attrs)
-{
- int in, out;
-
- for (in = 0, out = 0; !p11_attrs_terminator (attrs + in); in++) {
- if (attrs[in].ulValueLen == (CK_ULONG)-1) {
- free (attrs[in].pValue);
- attrs[in].pValue = NULL;
- attrs[in].ulValueLen = 0;
- } else {
- if (in != out)
- memcpy (attrs + out, attrs + in, sizeof (CK_ATTRIBUTE));
- out++;
- }
- }
-
- attrs[out].type = CKA_INVALID;
- assert (p11_attrs_terminator (attrs + out));
-
-}
-
-bool
-p11_attrs_match (const CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *match)
-{
- CK_ATTRIBUTE *attr;
-
- for (; !p11_attrs_terminator (match); match++) {
- attr = p11_attrs_find ((CK_ATTRIBUTE *)attrs, match->type);
- if (!attr)
- return false;
- if (!p11_attr_equal (attr, match))
- return false;
- }
-
- return true;
-}
-
-bool
-p11_attrs_matchn (const CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *match,
- CK_ULONG count)
-{
- CK_ATTRIBUTE *attr;
- CK_ULONG i;
-
- for (i = 0; i < count; i++) {
- attr = p11_attrs_find ((CK_ATTRIBUTE *)attrs, match[i].type);
- if (!attr)
- return false;
- if (!p11_attr_equal (attr, match + i))
- return false;
- }
-
- return true;
-
-}
-
-
-bool
-p11_attr_match_value (const CK_ATTRIBUTE *attr,
- const void *value,
- ssize_t length)
-{
- if (length < 0)
- length = strlen (value);
- return (attr != NULL &&
- attr->ulValueLen == length &&
- (attr->pValue == value ||
- (attr->pValue && value &&
- memcmp (attr->pValue, value, attr->ulValueLen) == 0)));
-}
-
-bool
-p11_attr_equal (const void *v1,
- const void *v2)
-{
- const CK_ATTRIBUTE *one = v1;
- const CK_ATTRIBUTE *two = v2;
-
- return (one == two ||
- (one && two && one->type == two->type &&
- p11_attr_match_value (one, two->pValue, two->ulValueLen)));
-}
-
-unsigned int
-p11_attr_hash (const void *data)
-{
- const CK_ATTRIBUTE *attr = data;
- uint32_t hash = 0;
-
- if (attr != NULL) {
- p11_hash_murmur3 (&hash,
- &attr->type, sizeof (attr->type),
- attr->pValue, (size_t)attr->ulValueLen,
- NULL);
- }
-
- return hash;
-}
-
-static void
-buffer_append_printf (p11_buffer *buffer,
- const char *format,
- ...) GNUC_PRINTF(2, 3);
-
-static void
-buffer_append_printf (p11_buffer *buffer,
- const char *format,
- ...)
-{
- char *string;
- va_list va;
-
- va_start (va, format);
- if (vasprintf (&string, format, va) < 0)
- return_if_reached ();
- va_end (va);
-
- p11_buffer_add (buffer, string, -1);
- free (string);
-}
-
-static bool
-attribute_is_ulong_of_type (const CK_ATTRIBUTE *attr,
- CK_ULONG type)
-{
- if (attr->type != type)
- return false;
- if (attr->ulValueLen != sizeof (CK_ULONG))
- return false;
- if (!attr->pValue)
- return false;
- return true;
-}
-
-static bool
-attribute_is_trust_value (const CK_ATTRIBUTE *attr)
-{
- switch (attr->type) {
- case CKA_TRUST_DIGITAL_SIGNATURE:
- case CKA_TRUST_NON_REPUDIATION:
- case CKA_TRUST_KEY_ENCIPHERMENT:
- case CKA_TRUST_DATA_ENCIPHERMENT:
- case CKA_TRUST_KEY_AGREEMENT:
- case CKA_TRUST_KEY_CERT_SIGN:
- case CKA_TRUST_CRL_SIGN:
- case CKA_TRUST_SERVER_AUTH:
- case CKA_TRUST_CLIENT_AUTH:
- case CKA_TRUST_CODE_SIGNING:
- case CKA_TRUST_EMAIL_PROTECTION:
- case CKA_TRUST_IPSEC_END_SYSTEM:
- case CKA_TRUST_IPSEC_TUNNEL:
- case CKA_TRUST_IPSEC_USER:
- case CKA_TRUST_TIME_STAMPING:
- break;
- default:
- return false;
- }
-
- return attribute_is_ulong_of_type (attr, attr->type);
-}
-
-static bool
-attribute_is_sensitive (const CK_ATTRIBUTE *attr,
- CK_OBJECT_CLASS klass)
-{
- /*
- * Don't print any just attribute, since they may contain
- * sensitive data
- */
-
- switch (attr->type) {
- #define X(x) case x: return false;
- X (CKA_CLASS)
- X (CKA_TOKEN)
- X (CKA_PRIVATE)
- X (CKA_LABEL)
- X (CKA_APPLICATION)
- X (CKA_OBJECT_ID)
- X (CKA_CERTIFICATE_TYPE)
- X (CKA_ISSUER)
- X (CKA_SERIAL_NUMBER)
- X (CKA_AC_ISSUER)
- X (CKA_OWNER)
- X (CKA_ATTR_TYPES)
- X (CKA_TRUSTED)
- X (CKA_CERTIFICATE_CATEGORY)
- X (CKA_JAVA_MIDP_SECURITY_DOMAIN)
- X (CKA_URL)
- X (CKA_HASH_OF_SUBJECT_PUBLIC_KEY)
- X (CKA_HASH_OF_ISSUER_PUBLIC_KEY)
- X (CKA_CHECK_VALUE)
- X (CKA_KEY_TYPE)
- X (CKA_SUBJECT)
- X (CKA_ID)
- X (CKA_SENSITIVE)
- X (CKA_ENCRYPT)
- X (CKA_DECRYPT)
- X (CKA_WRAP)
- X (CKA_UNWRAP)
- X (CKA_SIGN)
- X (CKA_SIGN_RECOVER)
- X (CKA_VERIFY)
- X (CKA_VERIFY_RECOVER)
- X (CKA_DERIVE)
- X (CKA_START_DATE)
- X (CKA_END_DATE)
- X (CKA_MODULUS_BITS)
- X (CKA_PRIME_BITS)
- /* X (CKA_SUBPRIME_BITS) */
- /* X (CKA_SUB_PRIME_BITS) */
- X (CKA_VALUE_BITS)
- X (CKA_VALUE_LEN)
- X (CKA_EXTRACTABLE)
- X (CKA_LOCAL)
- X (CKA_NEVER_EXTRACTABLE)
- X (CKA_ALWAYS_SENSITIVE)
- X (CKA_KEY_GEN_MECHANISM)
- X (CKA_MODIFIABLE)
- X (CKA_SECONDARY_AUTH)
- X (CKA_AUTH_PIN_FLAGS)
- X (CKA_ALWAYS_AUTHENTICATE)
- X (CKA_WRAP_WITH_TRUSTED)
- X (CKA_WRAP_TEMPLATE)
- X (CKA_UNWRAP_TEMPLATE)
- X (CKA_HW_FEATURE_TYPE)
- X (CKA_RESET_ON_INIT)
- X (CKA_HAS_RESET)
- X (CKA_PIXEL_X)
- X (CKA_PIXEL_Y)
- X (CKA_RESOLUTION)
- X (CKA_CHAR_ROWS)
- X (CKA_CHAR_COLUMNS)
- X (CKA_COLOR)
- X (CKA_BITS_PER_PIXEL)
- X (CKA_CHAR_SETS)
- X (CKA_ENCODING_METHODS)
- X (CKA_MIME_TYPES)
- X (CKA_MECHANISM_TYPE)
- X (CKA_REQUIRED_CMS_ATTRIBUTES)
- X (CKA_DEFAULT_CMS_ATTRIBUTES)
- X (CKA_SUPPORTED_CMS_ATTRIBUTES)
- X (CKA_ALLOWED_MECHANISMS)
- X (CKA_X_ASSERTION_TYPE)
- X (CKA_X_CERTIFICATE_VALUE)
- X (CKA_X_PURPOSE)
- X (CKA_X_PEER)
- X (CKA_X_DISTRUSTED)
- X (CKA_X_CRITICAL)
- X (CKA_PUBLIC_KEY_INFO)
- X (CKA_NSS_URL)
- X (CKA_NSS_EMAIL)
- X (CKA_NSS_SMIME_INFO)
- X (CKA_NSS_SMIME_TIMESTAMP)
- X (CKA_NSS_PKCS8_SALT)
- X (CKA_NSS_PASSWORD_CHECK)
- X (CKA_NSS_EXPIRES)
- X (CKA_NSS_KRL)
- X (CKA_NSS_PQG_COUNTER)
- X (CKA_NSS_PQG_SEED)
- X (CKA_NSS_PQG_H)
- X (CKA_NSS_PQG_SEED_BITS)
- X (CKA_NSS_MODULE_SPEC)
- X (CKA_TRUST_DIGITAL_SIGNATURE)
- X (CKA_TRUST_NON_REPUDIATION)
- X (CKA_TRUST_KEY_ENCIPHERMENT)
- X (CKA_TRUST_DATA_ENCIPHERMENT)
- X (CKA_TRUST_KEY_AGREEMENT)
- X (CKA_TRUST_KEY_CERT_SIGN)
- X (CKA_TRUST_CRL_SIGN)
- X (CKA_TRUST_SERVER_AUTH)
- X (CKA_TRUST_CLIENT_AUTH)
- X (CKA_TRUST_CODE_SIGNING)
- X (CKA_TRUST_EMAIL_PROTECTION)
- X (CKA_TRUST_IPSEC_END_SYSTEM)
- X (CKA_TRUST_IPSEC_TUNNEL)
- X (CKA_TRUST_IPSEC_USER)
- X (CKA_TRUST_TIME_STAMPING)
- X (CKA_TRUST_STEP_UP_APPROVED)
- X (CKA_CERT_SHA1_HASH)
- X (CKA_CERT_MD5_HASH)
- case CKA_VALUE:
- return (klass != CKO_CERTIFICATE &&
- klass != CKO_X_CERTIFICATE_EXTENSION);
- #undef X
- }
-
- return true;
-}
-
-static void
-format_class (p11_buffer *buffer,
- CK_OBJECT_CLASS klass)
-{
- const char *string = p11_constant_name (p11_constant_classes, klass);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "0x%08lX", klass);
-}
-
-static void
-format_assertion_type (p11_buffer *buffer,
- CK_X_ASSERTION_TYPE type)
-{
- const char *string = p11_constant_name (p11_constant_asserts, type);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "0x%08lX", type);
-}
-
-static void
-format_key_type (p11_buffer *buffer,
- CK_KEY_TYPE type)
-{
- const char *string = p11_constant_name (p11_constant_keys, type);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "0x%08lX", type);
-}
-
-static void
-format_certificate_type (p11_buffer *buffer,
- CK_CERTIFICATE_TYPE type)
-{
- const char *string = p11_constant_name (p11_constant_certs, type);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "0x%08lX", type);
-}
-
-static void
-format_trust_value (p11_buffer *buffer,
- CK_TRUST trust)
-{
- const char *string = p11_constant_name (p11_constant_trusts, trust);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "0x%08lX", trust);
-}
-
-static void
-format_certificate_category (p11_buffer *buffer,
- CK_ULONG category)
-{
- const char *string = p11_constant_name (p11_constant_categories, category);
- if (string != NULL)
- buffer_append_printf (buffer, "%lu (%s)", category, string);
- else
- buffer_append_printf (buffer, "%lu", category);
-}
-
-static void
-format_attribute_type (p11_buffer *buffer,
- CK_ULONG type)
-{
- const char *string = p11_constant_name (p11_constant_types, type);
- if (string != NULL)
- p11_buffer_add (buffer, string, -1);
- else
- buffer_append_printf (buffer, "CKA_0x%08lX", type);
-}
-
-static void
-format_some_bytes (p11_buffer *buffer,
- void *bytes,
- CK_ULONG length)
-{
- unsigned char ch;
- const unsigned char *data = bytes;
- CK_ULONG i;
-
- if (bytes == NULL) {
- p11_buffer_add (buffer, "NULL", -1);
- return;
- }
-
- p11_buffer_add (buffer, "\"", 1);
- for (i = 0; i < length && i < 128; i++) {
- ch = data[i];
- if (ch == '\t')
- p11_buffer_add (buffer, "\\t", -1);
- else if (ch == '\n')
- p11_buffer_add (buffer, "\\n", -1);
- else if (ch == '\r')
- p11_buffer_add (buffer, "\\r", -1);
- else if (ch >= 32 && ch < 127)
- p11_buffer_add (buffer, &ch, 1);
- else
- buffer_append_printf (buffer, "\\x%02x", ch);
- }
-
- if (i < length)
- buffer_append_printf (buffer, "...");
- p11_buffer_add (buffer, "\"", 1);
-}
-
-void
-p11_attr_format (p11_buffer *buffer,
- const CK_ATTRIBUTE *attr,
- CK_OBJECT_CLASS klass)
-{
- p11_buffer_add (buffer, "{ ", -1);
- format_attribute_type (buffer, attr->type);
- p11_buffer_add (buffer, " = ", -1);
- if (attr->ulValueLen == CKA_INVALID) {
- buffer_append_printf (buffer, "(-1) INVALID");
- } else if (attribute_is_ulong_of_type (attr, CKA_CLASS)) {
- format_class (buffer, *((CK_OBJECT_CLASS *)attr->pValue));
- } else if (attribute_is_ulong_of_type (attr, CKA_X_ASSERTION_TYPE)) {
- format_assertion_type (buffer, *((CK_X_ASSERTION_TYPE *)attr->pValue));
- } else if (attribute_is_ulong_of_type (attr, CKA_CERTIFICATE_TYPE)) {
- format_certificate_type (buffer, *((CK_CERTIFICATE_TYPE *)attr->pValue));
- } else if (attribute_is_ulong_of_type (attr, CKA_CERTIFICATE_CATEGORY)) {
- format_certificate_category (buffer, *((CK_ULONG *)attr->pValue));
- } else if (attribute_is_ulong_of_type (attr, CKA_KEY_TYPE)) {
- format_key_type (buffer, *((CK_KEY_TYPE *)attr->pValue));
- } else if (attribute_is_trust_value (attr)) {
- format_trust_value (buffer, *((CK_TRUST *)attr->pValue));
- } else if (attribute_is_sensitive (attr, klass)) {
- buffer_append_printf (buffer, "(%lu) NOT-PRINTED", attr->ulValueLen);
- } else {
- buffer_append_printf (buffer, "(%lu) ", attr->ulValueLen);
- format_some_bytes (buffer, attr->pValue, attr->ulValueLen);
- }
- p11_buffer_add (buffer, " }", -1);
-}
-
-void
-p11_attrs_format (p11_buffer *buffer,
- const CK_ATTRIBUTE *attrs,
- int count)
-{
- CK_BBOOL first = CK_TRUE;
- CK_OBJECT_CLASS klass;
- int i;
-
- if (count < 0)
- count = p11_attrs_count (attrs);
-
- if (!p11_attrs_findn_ulong (attrs, CKA_CLASS, count, &klass))
- klass = CKA_INVALID;
-
- buffer_append_printf (buffer, "(%d) [", count);
- for (i = 0; i < count; i++) {
- if (first)
- p11_buffer_add (buffer, " ", 1);
- else
- p11_buffer_add (buffer, ", ", 2);
- first = CK_FALSE;
- p11_attr_format (buffer, attrs + i, klass);
- }
- p11_buffer_add (buffer, " ]", -1);
-}
-
-char *
-p11_attrs_to_string (const CK_ATTRIBUTE *attrs,
- int count)
-{
- p11_buffer buffer;
- if (!p11_buffer_init_null (&buffer, 128))
- return_val_if_reached (NULL);
- p11_attrs_format (&buffer, attrs, count);
- return p11_buffer_steal (&buffer, NULL);
-}
-
-char *
-p11_attr_to_string (const CK_ATTRIBUTE *attr,
- CK_OBJECT_CLASS klass)
-{
- p11_buffer buffer;
- if (!p11_buffer_init_null (&buffer, 32))
- return_val_if_reached (NULL);
- p11_attr_format (&buffer, attr, klass);
- return p11_buffer_steal (&buffer, NULL);
-}
diff --git a/common/attrs.h b/common/attrs.h
deleted file mode 100644
index 2780013..0000000
--- a/common/attrs.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2012, Redhat Inc.
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#ifndef P11_ATTRS_H_
-#define P11_ATTRS_H_
-
-#include "buffer.h"
-#include "compat.h"
-#include "pkcs11.h"
-
-#define CKA_INVALID ((CK_ULONG)-1)
-
-CK_ATTRIBUTE * p11_attrs_dup (const CK_ATTRIBUTE *attrs);
-
-CK_ATTRIBUTE * p11_attrs_build (CK_ATTRIBUTE *attrs,
- ...);
-
-CK_ATTRIBUTE * p11_attrs_buildn (CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *add,
- CK_ULONG count);
-
-CK_ATTRIBUTE * p11_attrs_take (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_VOID_PTR value,
- CK_ULONG length);
-
-CK_ATTRIBUTE * p11_attrs_merge (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE *merge,
- bool replace);
-
-void p11_attrs_purge (CK_ATTRIBUTE *attrs);
-
-bool p11_attrs_terminator (const CK_ATTRIBUTE *attrs);
-
-CK_ULONG p11_attrs_count (const CK_ATTRIBUTE *attrs);
-
-void p11_attrs_free (void *attrs);
-
-CK_ATTRIBUTE * p11_attrs_find (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type);
-
-CK_ATTRIBUTE * p11_attrs_findn (CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type);
-
-bool p11_attrs_find_bool (const CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value);
-
-bool p11_attrs_findn_bool (const CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value);
-
-bool p11_attrs_find_ulong (const CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value);
-
-bool p11_attrs_findn_ulong (const CK_ATTRIBUTE *attrs,
- CK_ULONG count,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value);
-
-void * p11_attrs_find_value (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type,
- size_t *length);
-
-CK_ATTRIBUTE * p11_attrs_find_valid (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type);
-
-bool p11_attrs_remove (CK_ATTRIBUTE *attrs,
- CK_ATTRIBUTE_TYPE type);
-
-bool p11_attrs_match (const CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *match);
-
-bool p11_attrs_matchn (const CK_ATTRIBUTE *attrs,
- const CK_ATTRIBUTE *match,
- CK_ULONG count);
-
-char * p11_attrs_to_string (const CK_ATTRIBUTE *attrs,
- int count);
-
-void p11_attrs_format (p11_buffer *buffer,
- const CK_ATTRIBUTE *attrs,
- int count);
-
-char * p11_attr_to_string (const CK_ATTRIBUTE *attr,
- CK_OBJECT_CLASS klass);
-
-void p11_attr_format (p11_buffer *buffer,
- const CK_ATTRIBUTE *attr,
- CK_OBJECT_CLASS klass);
-
-bool p11_attr_equal (const void *one,
- const void *two);
-
-unsigned int p11_attr_hash (const void *data);
-
-bool p11_attr_match_value (const CK_ATTRIBUTE *attr,
- const void *value,
- ssize_t length);
-
-#endif /* P11_ATTRS_H_ */
diff --git a/common/buffer.c b/common/buffer.c
deleted file mode 100644
index f2e2cb8..0000000
--- a/common/buffer.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2007, 2012 Stefan Walter
- * Copyright (C) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stef@thewalter.net>
- */
-
-#include "config.h"
-
-#include "buffer.h"
-#include "debug.h"
-
-#include <assert.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-
-static bool
-buffer_realloc (p11_buffer *buffer,
- size_t size)
-{
- void *data;
-
- /* Memory owned elsewhere can't be reallocated */
- return_val_if_fail (buffer->frealloc != NULL, false);
-
- /* Reallocate built in buffer using allocator */
- data = (buffer->frealloc) (buffer->data, size);
- if (!data && size > 0) {
- p11_buffer_fail (buffer);
- return_val_if_reached (false);
- }
-
- buffer->data = data;
- buffer->size = size;
- return true;
-}
-
-bool
-p11_buffer_init (p11_buffer *buffer,
- size_t reserve)
-{
- p11_buffer_init_full (buffer, NULL, 0, 0, realloc, free);
- return buffer_realloc (buffer, reserve);
-}
-
-bool
-p11_buffer_init_null (p11_buffer *buffer,
- size_t reserve)
-{
- p11_buffer_init_full (buffer, NULL, 0, P11_BUFFER_NULL, realloc, free);
- return buffer_realloc (buffer, reserve);
-}
-
-void
-p11_buffer_init_full (p11_buffer *buffer,
- void *data,
- size_t len,
- int flags,
- void * (* frealloc) (void *, size_t),
- void (* ffree) (void *))
-{
- memset (buffer, 0, sizeof (*buffer));
-
- buffer->data = data;
- buffer->len = len;
- buffer->size = len;
- buffer->flags = flags;
- buffer->frealloc = frealloc;
- buffer->ffree = ffree;
-
- return_if_fail (!(flags & P11_BUFFER_FAILED));
-}
-
-void
-p11_buffer_uninit (p11_buffer *buffer)
-{
- return_if_fail (buffer != NULL);
-
- if (buffer->ffree && buffer->data)
- (buffer->ffree) (buffer->data);
- memset (buffer, 0, sizeof (*buffer));
-}
-
-void *
-p11_buffer_steal (p11_buffer *buffer,
- size_t *length)
-{
- void *data;
-
- return_val_if_fail (p11_buffer_ok (buffer), NULL);
-
- if (length)
- *length = buffer->len;
- data = buffer->data;
-
- buffer->data = NULL;
- buffer->size = 0;
- buffer->len = 0;
- return data;
-}
-
-bool
-p11_buffer_reset (p11_buffer *buffer,
- size_t reserve)
-{
- buffer->flags &= ~P11_BUFFER_FAILED;
- buffer->len = 0;
-
- if (reserve < buffer->size)
- return true;
- return buffer_realloc (buffer, reserve);
-}
-
-void *
-p11_buffer_append (p11_buffer *buffer,
- size_t length)
-{
- unsigned char *data;
- size_t terminator;
- size_t newlen;
- size_t reserve;
-
- return_val_if_fail (p11_buffer_ok (buffer), NULL);
-
- terminator = (buffer->flags & P11_BUFFER_NULL) ? 1 : 0;
-
- /* Check for unlikely and unrecoverable integer overflow */
- return_val_if_fail (SIZE_MAX - (terminator + length) > buffer->len, NULL);
-
- reserve = terminator + length + buffer->len;
-
- if (reserve > buffer->size) {
-
- /* Calculate a new length, minimize number of buffer allocations */
- return_val_if_fail (buffer->size < SIZE_MAX / 2, NULL);
- newlen = buffer->size * 2;
- if (!newlen)
- newlen = 16;
- if (reserve > newlen)
- newlen = reserve;
-
- if (!buffer_realloc (buffer, newlen))
- return_val_if_reached (NULL);
- }
-
- data = buffer->data;
- data += buffer->len;
- buffer->len += length;
- if (terminator)
- data[length] = '\0';
- return data;
-}
-
-void
-p11_buffer_add (p11_buffer *buffer,
- const void *data,
- ssize_t length)
-{
- void *at;
-
- if (length < 0)
- length = strlen (data);
-
- at = p11_buffer_append (buffer, length);
- return_if_fail (at != NULL);
- memcpy (at, data, length);
-}
diff --git a/common/buffer.h b/common/buffer.h
deleted file mode 100644
index 6a61083..0000000
--- a/common/buffer.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2007, 2012 Stefan Walter
- * Copyright (C) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stef@thewalter.net>
- */
-
-#ifndef P11_BUFFER_H_
-#define P11_BUFFER_H_
-
-#include "compat.h"
-
-enum {
- P11_BUFFER_FAILED = 1 << 0,
- P11_BUFFER_NULL = 1 << 1,
-};
-
-typedef struct {
- void *data;
- size_t len;
-
- int flags;
- size_t size;
- void * (* frealloc) (void *, size_t);
- void (* ffree) (void *);
-} p11_buffer;
-
-bool p11_buffer_init (p11_buffer *buffer,
- size_t size);
-
-bool p11_buffer_init_null (p11_buffer *buffer,
- size_t size);
-
-void p11_buffer_init_full (p11_buffer *buffer,
- void *data,
- size_t len,
- int flags,
- void * (* frealloc) (void *, size_t),
- void (* ffree) (void *));
-
-void p11_buffer_uninit (p11_buffer *buffer);
-
-void * p11_buffer_steal (p11_buffer *buffer,
- size_t *length);
-
-bool p11_buffer_reset (p11_buffer *buffer,
- size_t size);
-
-void * p11_buffer_append (p11_buffer *buffer,
- size_t length);
-
-void p11_buffer_add (p11_buffer *buffer,
- const void *data,
- ssize_t length);
-
-#define p11_buffer_fail(buf) \
- ((buf)->flags |= P11_BUFFER_FAILED)
-
-#define p11_buffer_ok(buf) \
- (((buf)->flags & P11_BUFFER_FAILED) ? false : true)
-
-#define p11_buffer_failed(buf) \
- (((buf)->flags & P11_BUFFER_FAILED) ? true : false)
-
-#endif /* BUFFER_H */
diff --git a/common/compat.c b/common/compat.c
deleted file mode 100644
index de5b99b..0000000
--- a/common/compat.c
+++ /dev/null
@@ -1,924 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-
-/*
- * This is needed to expose pthread_mutexattr_settype and PTHREAD_MUTEX_DEFAULT
- * on older pthreads implementations
- */
-#define _XOPEN_SOURCE 700
-
-#include "compat.h"
-
-#include <assert.h>
-#include <dirent.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*-
- * Portions of this file are covered by the following copyright:
- *
- * Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 1990, 1993
- * Copyright (c) 1987, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef HAVE_GETPROGNAME
-
-#ifdef OS_UNIX
-
-#include <unistd.h>
-
-#if defined (HAVE_PROGRAM_INVOCATION_SHORT_NAME) && !HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-extern char *program_invocation_short_name;
-#endif
-
-#if defined (HAVE___PROGNAME) && !HAVE_DECL___PROGNAME
-extern char *__progname;
-#endif
-
-const char *
-getprogname (void)
-{
- const char *name;
-
-#if defined (HAVE_GETEXECNAME)
- const char *p;
- name = getexecname();
- p = strrchr (name ? name : "", '/');
- if (p != NULL)
- name = p + 1;
-#elif defined (HAVE_PROGRAM_INVOCATION_SHORT_NAME)
- name = program_invocation_short_name;
-#elif defined (HAVE___PROGNAME)
- name = __progname;
-#else
- #error No way to retrieve short program name
-#endif
-
- return name;
-}
-
-#else /* OS_WIN32 */
-
-extern char **__argv;
-static char prognamebuf[256];
-
-const char *
-getprogname (void)
-{
- const char *name;
- const char *p, *p2;
- size_t length;
-
- name = __argv[0];
- if (name == NULL)
- return NULL;
-
- p = strrchr (name, '\\');
- p2 = strrchr (name, '/');
- if (p2 > p)
- p = p2;
- if (p != NULL)
- name = p + 1;
-
- length = sizeof (prognamebuf) - 1;
- strncpy (prognamebuf, name, length);
- prognamebuf[length] = 0;
- length = strlen (prognamebuf);
- if (length > 4 && _stricmp (prognamebuf + (length - 4), ".exe") == 0)
- prognamebuf[length - 4] = '\0';
-
- return prognamebuf;
-}
-
-#endif /* OS_WIN32 */
-
-#endif /* HAVE_GETPROGNAME */
-
-#ifdef OS_UNIX
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-void
-p11_mutex_init (p11_mutex_t *mutex)
-{
- pthread_mutexattr_t attr;
- int ret;
-
- pthread_mutexattr_init (&attr);
- pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_DEFAULT);
- ret = pthread_mutex_init (mutex, &attr);
- assert (ret == 0);
- pthread_mutexattr_destroy (&attr);
-}
-
-char *
-p11_dl_error (void)
-{
- const char *msg = dlerror ();
- return msg ? strdup (msg) : NULL;
-}
-
-struct _p11_mmap {
- int fd;
- void *data;
- size_t size;
-};
-
-p11_mmap *
-p11_mmap_open (const char *path,
- struct stat *sb,
- void **data,
- size_t *size)
-{
- struct stat stb;
- p11_mmap *map;
-
- map = calloc (1, sizeof (p11_mmap));
- if (map == NULL)
- return NULL;
-
- map->fd = open (path, O_RDONLY | O_CLOEXEC);
- if (map->fd == -1) {
- free (map);
- return NULL;
- }
-
- if (sb == NULL) {
- sb = &stb;
- if (fstat (map->fd, &stb) < 0) {
- close (map->fd);
- free (map);
- return NULL;
- }
- }
-
- /* Workaround for broken ZFS on Linux */
- if (S_ISDIR (sb->st_mode)) {
- errno = EISDIR;
- close (map->fd);
- free (map);
- return NULL;
- }
-
- if (sb->st_size == 0) {
- *data = "";
- *size = 0;
- return map;
- }
-
- map->size = sb->st_size;
- map->data = mmap (NULL, map->size, PROT_READ, MAP_PRIVATE, map->fd, 0);
- if (map->data == MAP_FAILED) {
- close (map->fd);
- free (map);
- return NULL;
- }
-
- *data = map->data;
- *size = map->size;
- return map;
-}
-
-void
-p11_mmap_close (p11_mmap *map)
-{
- if (map->size)
- munmap (map->data, map->size);
- close (map->fd);
- free (map);
-}
-
-#endif /* OS_UNIX */
-
-#ifdef OS_WIN32
-
-char *
-p11_dl_error (void)
-{
- DWORD code = GetLastError();
- LPVOID msg_buf;
-
- FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, code,
- MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPSTR)&msg_buf, 0, NULL);
-
- return msg_buf;
-}
-
-void
-p11_dl_close (void *dl)
-{
- FreeLibrary (dl);
-}
-
-int
-p11_thread_create (p11_thread_t *thread,
- p11_thread_routine routine,
- void *arg)
-{
- assert (thread);
-
- *thread = CreateThread (NULL, 0,
- (LPTHREAD_START_ROUTINE)routine,
- arg, 0, NULL);
-
- if (*thread == NULL)
- return GetLastError ();
-
- return 0;
-}
-
-int
-p11_thread_join (p11_thread_t thread)
-{
- DWORD res;
-
- res = WaitForSingleObject (thread, INFINITE);
- if (res == WAIT_FAILED)
- return GetLastError ();
-
- CloseHandle (thread);
- return 0;
-}
-
-struct _p11_mmap {
- HANDLE file;
- HANDLE mapping;
- void *data;
-};
-
-p11_mmap *
-p11_mmap_open (const char *path,
- struct stat *sb,
- void **data,
- size_t *size)
-{
- HANDLE mapping;
- LARGE_INTEGER large;
- DWORD errn;
- p11_mmap *map;
-
- map = calloc (1, sizeof (p11_mmap));
- if (map == NULL) {
- errno = ENOMEM;
- return NULL;
- }
-
- map->file = CreateFile (path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL);
- if (map->file == INVALID_HANDLE_VALUE) {
- errn = GetLastError ();
- free (map);
- SetLastError (errn);
- if (errn == ERROR_PATH_NOT_FOUND || errn == ERROR_FILE_NOT_FOUND)
- errno = ENOENT;
- else if (errn == ERROR_ACCESS_DENIED)
- errno = EPERM;
- return NULL;
- }
-
- if (sb == NULL) {
- if (!GetFileSizeEx (map->file, &large)) {
- errn = GetLastError ();
- CloseHandle (map->file);
- free (map);
- SetLastError (errn);
- if (errn == ERROR_ACCESS_DENIED)
- errno = EPERM;
- return NULL;
- }
- } else {
- large.QuadPart = sb->st_size;
- }
-
- mapping = CreateFileMapping (map->file, NULL, PAGE_READONLY, 0, 0, NULL);
- if (!mapping) {
- errn = GetLastError ();
- CloseHandle (map->file);
- free (map);
- SetLastError (errn);
- if (errn == ERROR_ACCESS_DENIED)
- errno = EPERM;
- return NULL;
- }
-
- map->data = MapViewOfFile (mapping, FILE_MAP_READ, 0, 0, large.QuadPart);
- CloseHandle (mapping);
-
- if (map->data == NULL) {
- errn = GetLastError ();
- CloseHandle (map->file);
- free (map);
- SetLastError (errn);
- if (errn == ERROR_ACCESS_DENIED)
- errno = EPERM;
- return NULL;
- }
-
- *data = map->data;
- *size = large.QuadPart;
- return map;
-}
-
-void
-p11_mmap_close (p11_mmap *map)
-{
- UnmapViewOfFile (map->data);
- CloseHandle (map->file);
- free (map);
-}
-
-#endif /* OS_WIN32 */
-
-#ifndef HAVE_STRNSTR
-#include <string.h>
-
-/*
- * Find the first occurrence of find in s, where the search is limited to the
- * first slen characters of s.
- */
-char *
-strnstr (const char *s,
- const char *find,
- size_t slen)
-{
- char c, sc;
- size_t len;
-
- if ((c = *find++) != '\0') {
- len = strlen (find);
- do {
- do {
- if (slen-- < 1 || (sc = *s++) == '\0')
- return (NULL);
- } while (sc != c);
- if (len > slen)
- return (NULL);
- } while (strncmp(s, find, len) != 0);
- s--;
- }
- return ((char *)s);
-}
-
-#endif /* HAVE_STRNSTR */
-
-#ifndef HAVE_MEMDUP
-
-void *
-memdup (const void *data,
- size_t length)
-{
- void *dup;
-
- if (!data)
- return NULL;
-
- dup = malloc (length);
- if (dup != NULL)
- memcpy (dup, data, length);
-
- return dup;
-}
-
-#endif /* HAVE_MEMDUP */
-
-/*
- * WORKAROUND: So in lots of released builds of firefox a completely broken strndup()
- * is present. It does not NULL terminate its string output. It is unconditionally
- * defined, and overrides the libc strndup() function on platforms where it
- * exists as a function. For this reason we (for now) unconditionally define
- * strndup().
- */
-
-#if 1 /* #ifndef HAVE_STRNDUP */
-
-/*
- * HAVE_STRNDUP may be undefined if strndup() isn't working. So it may be
- * present, and yet strndup may still be a defined header macro.
- */
-#ifdef strndup
-#undef strndup
-#endif
-
-char *
-strndup (const char *data,
- size_t length);
-
-char *
-strndup (const char *data,
- size_t length)
-{
- char *ret;
-
- ret = malloc (length + 1);
- if (ret != NULL) {
- strncpy (ret, data, length);
- ret[length] = 0;
- }
-
- return ret;
-}
-
-#endif /* HAVE_STRNDUP */
-
-#ifndef HAVE_STRCONCAT
-
-#include <stdarg.h>
-
-char *
-strconcat (const char *first,
- ...)
-{
- size_t length = 0;
- const char *arg;
- char *result, *at;
- va_list va;
-
- va_start (va, first);
-
- for (arg = first; arg; arg = va_arg (va, const char*))
- length += strlen (arg);
-
- va_end (va);
-
- at = result = malloc (length + 1);
- if (result == NULL)
- return NULL;
-
- va_start (va, first);
-
- for (arg = first; arg; arg = va_arg (va, const char*)) {
- length = strlen (arg);
- memcpy (at, arg, length);
- at += length;
- }
-
- va_end (va);
-
- *at = 0;
- return result;
-}
-
-#endif /* HAVE_STRCONCAT */
-
-#ifndef HAVE_VASPRINTF
-#include <stdio.h>
-
-int vasprintf(char **strp, const char *fmt, va_list ap);
-
-int
-vasprintf (char **strp,
- const char *fmt,
- va_list ap)
-{
- char *buf = NULL;
- char *nbuf;
- int guess = 128;
- int length = 0;
- int ret;
-
- if (fmt == NULL) {
- errno = EINVAL;
- return -1;
- }
-
- for (;;) {
- nbuf = realloc (buf, guess);
- if (!nbuf) {
- free (buf);
- return -1;
- }
-
- buf = nbuf;
- length = guess;
-
- ret = vsnprintf (buf, length, fmt, ap);
-
- if (ret < 0)
- guess *= 2;
-
- else if (ret >= length)
- guess = ret + 1;
-
- else
- break;
- }
-
- *strp = buf;
- return ret;
-}
-
-#endif /* HAVE_VASPRINTF */
-
-#ifndef HAVE_ASPRINTF
-
-int asprintf(char **strp, const char *fmt, ...);
-
-int
-asprintf (char **strp,
- const char *fmt,
- ...)
-{
- va_list va;
- int ret;
-
- va_start (va, fmt);
- ret = vasprintf (strp, fmt, va);
- va_end (va);
-
- return ret;
-}
-
-#endif /* HAVE_ASPRINTF */
-
-#ifndef HAVE_GMTIME_R
-
-struct tm *
-gmtime_r (const time_t *timep,
- struct tm *result)
-{
-#ifdef OS_WIN32
- /*
- * On win32 gmtime() returns thread local storage, so we can
- * just copy it out into the buffer without worrying about races.
- */
- struct tm *tg;
- tg = gmtime (timep);
- if (!tg)
- return NULL;
- memcpy (result, tg, sizeof (struct tm));
- return result;
-#else
- #error Need either gmtime_r() function on Unix
-#endif
-}
-
-#endif /* HAVE_GMTIME_R */
-
-#if !defined(HAVE_MKDTEMP) || !defined(HAVE_MKSTEMP)
-#include <sys/stat.h>
-#include <fcntl.h>
-
-static int
-_gettemp (char *path,
- int *doopen,
- int domkdir,
- int slen)
-{
- static const char padchar[] =
- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- static const int maxpathlen = 1024;
-
- char *start, *trv, *suffp, *carryp;
- char *pad;
- struct stat sbuf;
- int rval;
- int rnd;
- char carrybuf[maxpathlen];
-
- if ((doopen != NULL && domkdir) || slen < 0) {
- errno = EINVAL;
- return (0);
- }
-
- for (trv = path; *trv != '\0'; ++trv)
- ;
- if (trv - path >= maxpathlen) {
- errno = ENAMETOOLONG;
- return (0);
- }
- trv -= slen;
- suffp = trv;
- --trv;
- if (trv < path || NULL != strchr (suffp, '/')) {
- errno = EINVAL;
- return (0);
- }
-
- /* Fill space with random characters */
- while (trv >= path && *trv == 'X') {
- rnd = rand () % sizeof (padchar) - 1;
- *trv-- = padchar[rnd];
- }
- start = trv + 1;
-
- /* save first combination of random characters */
- memcpy (carrybuf, start, suffp - start);
-
- /*
- * check the target directory.
- */
- if (doopen != NULL || domkdir) {
- for (; trv > path; --trv) {
- if (*trv == '/') {
- *trv = '\0';
- rval = stat(path, &sbuf);
- *trv = '/';
- if (rval != 0)
- return (0);
- if (!S_ISDIR(sbuf.st_mode)) {
- errno = ENOTDIR;
- return (0);
- }
- break;
- }
- }
- }
-
- for (;;) {
- if (doopen) {
- if ((*doopen = open (path, O_BINARY | O_CREAT | O_EXCL | O_RDWR | O_CLOEXEC, 0600)) >= 0)
- return (1);
- if (errno != EEXIST)
- return (0);
- } else if (domkdir) {
-#ifdef OS_UNIX
- if (mkdir (path, 0700) == 0)
-#else
- if (mkdir (path) == 0)
-#endif
- return (1);
- if (errno != EEXIST)
- return (0);
-#ifdef OS_UNIX
- } else if (lstat (path, &sbuf))
-#else
- } else if (stat (path, &sbuf))
-#endif
- return (errno == ENOENT);
-
- /* If we have a collision, cycle through the space of filenames */
- for (trv = start, carryp = carrybuf;;) {
- /* have we tried all possible permutations? */
- if (trv == suffp)
- return (0); /* yes - exit with EEXIST */
- pad = strchr(padchar, *trv);
- if (pad == NULL) {
- /* this should never happen */
- errno = EIO;
- return (0);
- }
- /* increment character */
- *trv = (*++pad == '\0') ? padchar[0] : *pad;
- /* carry to next position? */
- if (*trv == *carryp) {
- /* increment position and loop */
- ++trv;
- ++carryp;
- } else {
- /* try with new name */
- break;
- }
- }
- }
-
- /*NOTREACHED*/
-}
-
-#endif /* !HAVE_MKDTEMP || !HAVE_MKSTEMP */
-
-#ifndef HAVE_MKSTEMP
-
-int
-mkstemp (char *template)
-{
- int fd;
-
- return (_gettemp (template, &fd, 0, 0) ? fd : -1);
-}
-
-#endif /* HAVE_MKSTEMP */
-
-#ifndef HAVE_MKDTEMP
-
-char *
-mkdtemp (char *template)
-{
- return (_gettemp (template, (int *)NULL, 1, 0) ? template : (char *)NULL);
-}
-
-#endif /* HAVE_MKDTEMP */
-
-#ifndef HAVE_GETAUXVAL
-
-unsigned long
-getauxval (unsigned long type)
-{
- static unsigned long secure = 0UL;
- static bool check_secure_initialized = false;
-
- /*
- * This is the only one our stand-in impl supports and is
- * also the only type we define in compat.h header
- */
- assert (type == AT_SECURE);
-
- if (!check_secure_initialized) {
-#if defined(HAVE___LIBC_ENABLE_SECURE)
- extern int __libc_enable_secure;
- secure = __libc_enable_secure;
-
-#elif defined(HAVE_ISSETUGID)
- secure = issetugid ();
-
-#elif defined(OS_UNIX)
- uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
- gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
-
-#ifdef HAVE_GETRESUID
- if (getresuid (&ruid, &euid, &suid) != 0 ||
- getresgid (&rgid, &egid, &sgid) != 0)
-#endif /* HAVE_GETRESUID */
- {
- suid = ruid = getuid ();
- sgid = rgid = getgid ();
- euid = geteuid ();
- egid = getegid ();
- }
-
- secure = (ruid != euid || ruid != suid ||
- rgid != egid || rgid != sgid);
-#endif /* OS_UNIX */
- check_secure_initialized = true;
- }
-
- return secure;
-}
-
-#endif /* HAVE_GETAUXVAL */
-
-char *
-secure_getenv (const char *name)
-{
- if (getauxval (AT_SECURE))
- return NULL;
- return getenv (name);
-}
-
-#ifndef HAVE_STRERROR_R
-
-int
-strerror_r (int errnum,
- char *buf,
- size_t buflen)
-{
-#ifdef OS_WIN32
-#if _WIN32_WINNT < 0x502 /* WinXP or older */
- int n = sys_nerr;
- const char *p;
- if (errnum < 0 || errnum >= n)
- p = sys_errlist[n];
- else
- p = sys_errlist[errnum];
- if (buf == NULL || buflen == 0)
- return EINVAL;
- strncpy(buf, p, buflen);
- buf[buflen-1] = 0;
- return 0;
-#else /* Server 2003 or newer */
- return strerror_s (buf, buflen, errnum);
-#endif /*_WIN32_WINNT*/
-
-#else
- #error no strerror_r implementation
-#endif
-}
-
-#endif /* HAVE_STRERROR_R */
-
-#ifdef OS_UNIX
-
-#include <unistd.h>
-
-#ifndef HAVE_FDWALK
-
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-
-int
-fdwalk (int (* cb) (void *data, int fd),
- void *data)
-{
- struct dirent *de;
- char *end;
- DIR *dir;
- int open_max;
- long num;
- int res = 0;
- int fd;
-
-#ifdef HAVE_SYS_RESOURCE_H
- struct rlimit rl;
-#endif
-
- dir = opendir ("/proc/self/fd");
- if (dir != NULL) {
- while ((de = readdir (dir)) != NULL) {
- end = NULL;
- num = (int) strtol (de->d_name, &end, 10);
-
- /* didn't parse or is the opendir() fd */
- if (!end || *end != '\0' ||
- (int)num == dirfd (dir))
- continue;
-
- fd = num;
-
- /* call the callback */
- res = cb (data, fd);
- if (res != 0)
- break;
- }
-
- closedir (dir);
- return res;
- }
-
- /* No /proc, brute force */
-#ifdef HAVE_SYS_RESOURCE_H
- if (getrlimit (RLIMIT_NOFILE, &rl) == 0 && rl.rlim_max != RLIM_INFINITY)
- open_max = rl.rlim_max;
- else
-#endif
- open_max = sysconf (_SC_OPEN_MAX);
-
- for (fd = 0; fd < open_max; fd++) {
- res = cb (data, fd);
- if (res != 0)
- break;
- }
-
- return res;
-}
-
-#endif /* HAVE_FDWALK */
-
-#endif /* OS_UNIX */
diff --git a/common/compat.h b/common/compat.h
deleted file mode 100644
index acbccf9..0000000
--- a/common/compat.h
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#ifndef __COMPAT_H__
-#define __COMPAT_H__
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef _GNU_SOURCE
-#error Make the crap stop. _GNU_SOURCE is completely unportable and breaks all sorts of behavior
-#endif
-
-#if !defined(__cplusplus) && (__GNUC__ > 2)
-#define GNUC_PRINTF(x, y) __attribute__((__format__(__printf__, x, y)))
-#else
-#define GNUC_PRINTF(x, y)
-#endif
-
-#if __GNUC__ >= 4
-#define GNUC_NULL_TERMINATED __attribute__((__sentinel__))
-#else
-#define GNUC_NULL_TERMINATED
-#endif
-
-/* For detecting clang features */
-#ifndef __has_feature
-#define __has_feature(x) 0
-#endif
-
-#ifndef CLANG_ANALYZER_NORETURN
-#if __has_feature(attribute_analyzer_noreturn)
-#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
-#else
-#define CLANG_ANALYZER_NORETURN
-#endif
-#endif
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-#ifndef O_CLOEXEC
-#define O_CLOEXEC 0
-#endif
-
-#ifndef HAVE_GETPROGNAME
-const char * getprogname (void);
-#endif
-
-#ifndef HAVE_MKSTEMP
-
-int mkstemp (char *template);
-
-#endif /* HAVE_MKSTEMP */
-
-#ifndef HAVE_MKDTEMP
-
-char * mkdtemp (char *template);
-
-#endif /* HAVE_MKDTEMP */
-
-char * strdup_path_mangle (const char *template);
-
-/* -----------------------------------------------------------------------------
- * WIN32
- */
-
-#ifdef OS_WIN32
-
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x500
-#endif
-
-#ifndef _WIN32_IE
-#define _WIN32_IE 0x500
-#endif
-
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-
-#include <io.h>
-
-/* Oh ... my ... god */
-#undef CreateMutex
-
-typedef CRITICAL_SECTION p11_mutex_t;
-
-typedef HANDLE p11_thread_t;
-
-typedef DWORD p11_thread_id_t;
-
-#define p11_mutex_init(m) \
- (InitializeCriticalSection (m))
-#define p11_mutex_lock(m) \
- (EnterCriticalSection (m))
-#define p11_mutex_unlock(m) \
- (LeaveCriticalSection (m))
-#define p11_mutex_uninit(m) \
- (DeleteCriticalSection (m))
-
-typedef void * (*p11_thread_routine) (void *arg);
-
-int p11_thread_create (p11_thread_t *thread, p11_thread_routine, void *arg);
-
-int p11_thread_join (p11_thread_t thread);
-
-/* Returns a thread_id_t */
-#define p11_thread_id_self() \
- (GetCurrentThreadId ())
-
-typedef HMODULE dl_module_t;
-
-#define p11_dl_open(f) \
- (LoadLibrary (f))
-#define p11_dl_symbol(d, s) \
- ((void *)GetProcAddress ((d), (s)))
-
-char * p11_dl_error (void);
-
-void p11_dl_close (void * dl);
-
-#define p11_sleep_ms(ms) \
- (Sleep (ms))
-
-typedef struct _p11_mmap p11_mmap;
-
-p11_mmap * p11_mmap_open (const char *path,
- struct stat *sb,
- void **data,
- size_t *size);
-
-void p11_mmap_close (p11_mmap *map);
-
-#ifndef HAVE_SETENV
-#define setenv(n, v, z) _putenv_s(n, v)
-#endif /* HAVE_SETENV */
-
-#endif /* OS_WIN32 */
-
-/* ----------------------------------------------------------------------------
- * UNIX
- */
-
-#ifdef OS_UNIX
-
-#include <pthread.h>
-#include <dlfcn.h>
-#include <time.h>
-#include <unistd.h>
-
-typedef pthread_mutex_t p11_mutex_t;
-
-void p11_mutex_init (p11_mutex_t *mutex);
-
-#define p11_mutex_lock(m) \
- (pthread_mutex_lock (m))
-#define p11_mutex_unlock(m) \
- (pthread_mutex_unlock (m))
-#define p11_mutex_uninit(m) \
- (pthread_mutex_destroy(m))
-
-typedef pthread_t p11_thread_t;
-
-typedef pthread_t p11_thread_id_t;
-
-typedef void * (*p11_thread_routine) (void *arg);
-
-#define p11_thread_create(t, r, a) \
- (pthread_create ((t), NULL, (r), (a)))
-#define p11_thread_join(t) \
- (pthread_join ((t), NULL))
-#define p11_thread_id_self(m) \
- (pthread_self ())
-
-typedef void * dl_module_t;
-
-#define p11_dl_open(f) \
- (dlopen ((f), RTLD_LOCAL | RTLD_NOW))
-#define p11_dl_close \
- dlclose
-#define p11_dl_symbol(d, s) \
- (dlsym ((d), (s)))
-
-char * p11_dl_error (void);
-
-#define p11_sleep_ms(ms) \
- do { int _ms = (ms); \
- struct timespec _ts = { _ms / 1000, (_ms % 1000) * 1000 * 1000 }; \
- nanosleep (&_ts, NULL); \
- } while(0)
-
-typedef struct _p11_mmap p11_mmap;
-
-p11_mmap * p11_mmap_open (const char *path,
- struct stat *sb,
- void **data,
- size_t *size);
-
-void p11_mmap_close (p11_mmap *map);
-
-#endif /* OS_UNIX */
-
-/* ----------------------------------------------------------------------------
- * MORE COMPAT
- */
-
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif /* HAVE_ERRNO_H */
-
-#ifndef HAVE_STRNSTR
-
-char * strnstr (const char *s,
- const char *find,
- size_t slen);
-
-#endif /* HAVE_STRNSTR */
-
-#ifndef HAVE_MEMDUP
-
-void * memdup (const void *data,
- size_t length);
-
-#endif /* HAVE_MEMDUP */
-
-#ifndef HAVE_STRNDUP
-
-char * strndup (const char *data,
- size_t length);
-
-#endif /* HAVE_STRDUP */
-
-#ifdef HAVE_STDBOOL_H
-#include <stdbool.h>
-#else
-typedef enum { false, true } bool;
-#endif
-
-#ifndef HAVE_STRCONCAT
-
-char * strconcat (const char *first,
- ...) GNUC_NULL_TERMINATED;
-
-#endif /* HAVE_STRCONCAT */
-
-#if defined HAVE_DECL_ASPRINTF && !HAVE_DECL_ASPRINTF
-
-int asprintf (char **strp,
- const char *fmt,
- ...);
-
-#endif /* HAVE_ASPRINTF */
-
-#if defined HAVE_DECL_VASPRINTF && !HAVE_DECL_VASPRINTF
-#include <stdarg.h>
-
-int vasprintf (char **strp,
- const char *fmt,
- va_list ap);
-
-#endif /* HAVE_DECL_VASPRINTF */
-
-#ifndef HAVE_GMTIME_R
-#include <time.h>
-
-struct tm * gmtime_r (const time_t *timep,
- struct tm *result);
-
-#endif /* HAVE_GMTIME_R */
-
-#ifndef HAVE_TIMEGM
-#include <time.h>
-
-time_t timegm (struct tm *tm);
-
-#endif /* HAVE_TIMEGM */
-
-#ifdef HAVE_GETAUXVAL
-
-#include <sys/auxv.h>
-
-#else /* !HAVE_GETAUXVAL */
-
-unsigned long getauxval (unsigned long type);
-
-#define AT_SECURE 23
-
-#endif /* !HAVE_GETAUXVAL */
-
-char * secure_getenv (const char *name);
-
-#ifndef HAVE_STRERROR_R
-
-int strerror_r (int errnum,
- char *buf,
- size_t buflen);
-
-#endif /* HAVE_STRERROR_R */
-
-#ifndef HAVE_FDWALK
-
-int fdwalk (int (* cb) (void *data, int fd),
- void *data);
-
-#endif
-
-#endif /* __COMPAT_H__ */
diff --git a/common/constants.c b/common/constants.c
deleted file mode 100644
index f4aa66b..0000000
--- a/common/constants.c
+++ /dev/null
@@ -1,708 +0,0 @@
-/*
- * Copyright (C) 2013, Redhat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#include "config.h"
-
-#include "attrs.h"
-#include "constants.h"
-#include "debug.h"
-#include "pkcs11.h"
-#include "pkcs11i.h"
-#include "pkcs11x.h"
-
-#include <stdlib.h>
-
-#define ELEMS(x) (sizeof (x) / sizeof (x[0]))
-
-/*
- * These are in numeric order of their type for easy lookup
- * After changing something make sure to run the test-attrs
- * test to verify everything is in order.
- */
-
-#define CT(x, n) { x, #x, { n } },
-#define CT2(x, n, n2) { x, #x, { n, n2 } },
-
-const p11_constant p11_constant_types[] = {
- CT (CKA_CLASS, "class")
- CT (CKA_TOKEN, "token")
- CT (CKA_PRIVATE, "private")
- CT (CKA_LABEL, "label")
- CT (CKA_APPLICATION, "application")
- CT (CKA_VALUE, "value")
- CT (CKA_OBJECT_ID, "object-id")
- CT (CKA_CERTIFICATE_TYPE, "certificate-type")
- CT (CKA_ISSUER, "issuer")
- CT (CKA_SERIAL_NUMBER, "serial-number")
- CT (CKA_AC_ISSUER, "ac-issuer")
- CT (CKA_OWNER, "owner")
- CT (CKA_ATTR_TYPES, "attr-types")
- CT (CKA_TRUSTED, "trusted")
- CT (CKA_CERTIFICATE_CATEGORY, "certificate-category")
- CT (CKA_JAVA_MIDP_SECURITY_DOMAIN, "java-midp-security-domain")
- CT (CKA_URL, "url")
- CT (CKA_HASH_OF_SUBJECT_PUBLIC_KEY, "hash-of-subject-public-key")
- CT (CKA_HASH_OF_ISSUER_PUBLIC_KEY, "hash-of-issuer-public-key")
- CT (CKA_CHECK_VALUE, "check-value")
- CT (CKA_KEY_TYPE, "key-type")
- CT (CKA_SUBJECT, "subject")
- CT (CKA_ID, "id")
- CT (CKA_SENSITIVE, "sensitive")
- CT (CKA_ENCRYPT, "encrypt")
- CT (CKA_DECRYPT, "decrypt")
- CT (CKA_WRAP, "wrap")
- CT (CKA_UNWRAP, "unwrap")
- CT (CKA_SIGN, "sign")
- CT (CKA_SIGN_RECOVER, "sign-recover")
- CT (CKA_VERIFY, "verify")
- CT (CKA_VERIFY_RECOVER, "recover")
- CT (CKA_DERIVE, "derive")
- CT (CKA_START_DATE, "start-date")
- CT (CKA_END_DATE, "end-date")
- CT (CKA_MODULUS, "modulus")
- CT (CKA_MODULUS_BITS, "modulus-bits")
- CT (CKA_PUBLIC_EXPONENT, "public-exponent")
- CT (CKA_PRIVATE_EXPONENT, "private-exponent")
- CT (CKA_PRIME_1, "prime-1")
- CT (CKA_PRIME_2, "prime-2")
- CT (CKA_EXPONENT_1, "exponent-1")
- CT (CKA_EXPONENT_2, "exponent-2")
- CT (CKA_COEFFICIENT, "coefficient")
- CT2 (CKA_PUBLIC_KEY_INFO, "public-key-info", "x-public-key-info")
- CT (CKA_PRIME, "prime")
- CT (CKA_SUBPRIME, "subprime")
- CT (CKA_BASE, "base")
- CT (CKA_PRIME_BITS, "prime-bits")
- /* CT (CKA_SUBPRIME_BITS) */
- CT (CKA_SUB_PRIME_BITS, "subprime-bits")
- CT (CKA_VALUE_BITS, "value-bits")
- CT (CKA_VALUE_LEN, "value-len")
- CT (CKA_EXTRACTABLE, "extractable")
- CT (CKA_LOCAL, "local")
- CT (CKA_NEVER_EXTRACTABLE, "never-extractable")
- CT (CKA_ALWAYS_SENSITIVE, "always-sensitive")
- CT (CKA_KEY_GEN_MECHANISM, "key-gen-mechanism")
- CT (CKA_MODIFIABLE, "modifiable")
- CT (CKA_ECDSA_PARAMS, "ecdsa-params")
- /* CT (CKA_EC_PARAMS) */
- CT (CKA_EC_POINT, "ec-point")
- CT (CKA_SECONDARY_AUTH, "secondary-auth")
- CT (CKA_AUTH_PIN_FLAGS, "auth-pin-flags")
- CT (CKA_ALWAYS_AUTHENTICATE, "always-authenticate")
- CT (CKA_WRAP_WITH_TRUSTED, "wrap-with-trusted")
- CT (CKA_HW_FEATURE_TYPE, "hw-feature-type")
- CT (CKA_RESET_ON_INIT, "reset-on-init")
- CT (CKA_HAS_RESET, "has-reset")
- CT (CKA_PIXEL_X, "pixel-x")
- CT (CKA_PIXEL_Y, "pixel-y")
- CT (CKA_RESOLUTION, "resolution")
- CT (CKA_CHAR_ROWS, "char-rows")
- CT (CKA_CHAR_COLUMNS, "char-columns")
- CT (CKA_COLOR, "color")
- CT (CKA_BITS_PER_PIXEL, "bits-per-pixel")
- CT (CKA_CHAR_SETS, "char-sets")
- CT (CKA_ENCODING_METHODS, "encoding-methods")
- CT (CKA_MIME_TYPES, "mime-types")
- CT (CKA_MECHANISM_TYPE, "mechanism-type")
- CT (CKA_REQUIRED_CMS_ATTRIBUTES, "required-cms-attributes")
- CT (CKA_DEFAULT_CMS_ATTRIBUTES, "default-cms-attributes")
- CT (CKA_SUPPORTED_CMS_ATTRIBUTES, "supported-cms-attributes")
- CT (CKA_WRAP_TEMPLATE, "wrap-template")
- CT (CKA_UNWRAP_TEMPLATE, "unwrap-template")
- CT (CKA_ALLOWED_MECHANISMS, "allowed-mechanisms")
- CT (CKA_NSS_URL, "nss-url")
- CT (CKA_NSS_EMAIL, "nss-email")
- CT (CKA_NSS_SMIME_INFO, "nss-smime-constant")
- CT (CKA_NSS_SMIME_TIMESTAMP, "nss-smime-timestamp")
- CT (CKA_NSS_PKCS8_SALT, "nss-pkcs8-salt")
- CT (CKA_NSS_PASSWORD_CHECK, "nss-password-check")
- CT (CKA_NSS_EXPIRES, "nss-expires")
- CT (CKA_NSS_KRL, "nss-krl")
- CT (CKA_NSS_PQG_COUNTER, "nss-pqg-counter")
- CT (CKA_NSS_PQG_SEED, "nss-pqg-seed")
- CT (CKA_NSS_PQG_H, "nss-pqg-h")
- CT (CKA_NSS_PQG_SEED_BITS, "nss-pqg-seed-bits")
- CT (CKA_NSS_MODULE_SPEC, "nss-module-spec")
- CT (CKA_TRUST_DIGITAL_SIGNATURE, "trust-digital-signature")
- CT (CKA_TRUST_NON_REPUDIATION, "trust-non-repudiation")
- CT (CKA_TRUST_KEY_ENCIPHERMENT, "trust-key-encipherment")
- CT (CKA_TRUST_DATA_ENCIPHERMENT, "trust-data-encipherment")
- CT (CKA_TRUST_KEY_AGREEMENT, "trust-key-agreement")
- CT (CKA_TRUST_KEY_CERT_SIGN, "trust-key-cert-sign")
- CT (CKA_TRUST_CRL_SIGN, "trust-crl-sign")
- CT (CKA_TRUST_SERVER_AUTH, "trust-server-auth")
- CT (CKA_TRUST_CLIENT_AUTH, "trust-client-auth")
- CT (CKA_TRUST_CODE_SIGNING, "trust-code-signing")
- CT (CKA_TRUST_EMAIL_PROTECTION, "trust-email-protection")
- CT (CKA_TRUST_IPSEC_END_SYSTEM, "trust-ipsec-end-system")
- CT (CKA_TRUST_IPSEC_TUNNEL, "trust-ipsec-tunnel")
- CT (CKA_TRUST_IPSEC_USER, "trust-ipsec-user")
- CT (CKA_TRUST_TIME_STAMPING, "trust-time-stamping")
- CT (CKA_TRUST_STEP_UP_APPROVED, "trust-step-up-approved")
- CT (CKA_CERT_SHA1_HASH, "cert-sha1-hash")
- CT (CKA_CERT_MD5_HASH, "cert-md5-hash")
- CT (CKA_X_ASSERTION_TYPE, "x-assertion-type")
- CT (CKA_X_CERTIFICATE_VALUE, "x-cetrificate-value")
- CT (CKA_X_PURPOSE, "x-purpose")
- CT (CKA_X_PEER, "x-peer")
- CT (CKA_X_DISTRUSTED, "x-distrusted")
- CT (CKA_X_CRITICAL, "x-critical")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_classes[] = {
- CT (CKO_DATA, "data")
- CT (CKO_CERTIFICATE, "certificate")
- CT (CKO_PUBLIC_KEY, "public-key")
- CT (CKO_PRIVATE_KEY, "private-key")
- CT (CKO_SECRET_KEY, "secret-key")
- CT (CKO_HW_FEATURE, "hw-feature")
- CT (CKO_DOMAIN_PARAMETERS, "domain-parameters")
- CT (CKO_MECHANISM, "mechanism")
- CT (CKO_NSS_CRL, "nss-crl")
- CT (CKO_NSS_SMIME, "nss-smime")
- CT (CKO_NSS_TRUST, "nss-trust")
- CT (CKO_NSS_BUILTIN_ROOT_LIST, "nss-builtin-root-list")
- CT (CKO_NSS_NEWSLOT, "nss-newslot")
- CT (CKO_NSS_DELSLOT, "nss-delslot")
- CT (CKO_X_TRUST_ASSERTION, "x-trust-assertion")
- CT (CKO_X_CERTIFICATE_EXTENSION, "x-certificate-extension")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_trusts[] = {
- CT (CKT_NSS_TRUSTED, "nss-trusted")
- CT (CKT_NSS_TRUSTED_DELEGATOR, "nss-trusted-delegator")
- CT (CKT_NSS_MUST_VERIFY_TRUST, "nss-must-verify-trust")
- CT (CKT_NSS_TRUST_UNKNOWN, "nss-trust-unknown")
- CT (CKT_NSS_NOT_TRUSTED, "nss-not-trusted")
- CT (CKT_NSS_VALID_DELEGATOR, "nss-valid-delegator")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_certs[] = {
- CT (CKC_X_509, "x-509")
- CT (CKC_X_509_ATTR_CERT, "x-509-attr-cert")
- CT (CKC_WTLS, "wtls")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_keys[] = {
- CT (CKK_RSA, "rsa")
- CT (CKK_DSA, "dsa")
- CT (CKK_DH, "dh")
- /* CT (CKK_ECDSA) */
- CT (CKK_EC, "ec")
- CT (CKK_X9_42_DH, "x9-42-dh")
- CT (CKK_KEA, "kea")
- CT (CKK_GENERIC_SECRET, "generic-secret")
- CT (CKK_RC2, "rc2")
- CT (CKK_RC4, "rc4")
- CT (CKK_DES, "des")
- CT (CKK_DES2, "des2")
- CT (CKK_DES3, "des3")
- CT (CKK_CAST, "cast")
- CT (CKK_CAST3, "cast3")
- CT (CKK_CAST128, "cast128")
- CT (CKK_RC5, "rc5")
- CT (CKK_IDEA, "idea")
- CT (CKK_SKIPJACK, "skipjack")
- CT (CKK_BATON, "baton")
- CT (CKK_JUNIPER, "juniper")
- CT (CKK_CDMF, "cdmf")
- CT (CKK_AES, "aes")
- CT (CKK_BLOWFISH, "blowfish")
- CT (CKK_TWOFISH, "twofish")
- CT (CKK_NSS_PKCS8, "nss-pkcs8")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_asserts[] = {
- CT (CKT_X_DISTRUSTED_CERTIFICATE, "x-distrusted-certificate")
- CT (CKT_X_PINNED_CERTIFICATE, "x-pinned-certificate")
- CT (CKT_X_ANCHORED_CERTIFICATE, "x-anchored-certificate")
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_categories[] = {
- { 0, "unspecified", { "unspecified" } },
- { 1, "token-user", { "token-user" } },
- { 2, "authority", { "authority" } },
- { 3, "other-entry", { "other-entry" } },
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_users[] = {
- CT (CKU_SO, NULL)
- CT (CKU_USER, NULL)
- CT (CKU_CONTEXT_SPECIFIC, NULL)
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_states[] = {
- CT (CKS_RO_PUBLIC_SESSION, NULL)
- CT (CKS_RO_USER_FUNCTIONS, NULL)
- CT (CKS_RW_PUBLIC_SESSION, NULL)
- CT (CKS_RW_USER_FUNCTIONS, NULL)
- CT (CKS_RW_SO_FUNCTIONS, NULL)
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_returns[] = {
- CT (CKR_OK, NULL)
- CT (CKR_CANCEL, NULL)
- CT (CKR_HOST_MEMORY, NULL)
- CT (CKR_SLOT_ID_INVALID, NULL)
- CT (CKR_GENERAL_ERROR, NULL)
- CT (CKR_FUNCTION_FAILED, NULL)
- CT (CKR_ARGUMENTS_BAD, NULL)
- CT (CKR_NO_EVENT, NULL)
- CT (CKR_NEED_TO_CREATE_THREADS, NULL)
- CT (CKR_CANT_LOCK, NULL)
- CT (CKR_ATTRIBUTE_READ_ONLY, NULL)
- CT (CKR_ATTRIBUTE_SENSITIVE, NULL)
- CT (CKR_ATTRIBUTE_TYPE_INVALID, NULL)
- CT (CKR_ATTRIBUTE_VALUE_INVALID, NULL)
- CT (CKR_DATA_INVALID, NULL)
- CT (CKR_DATA_LEN_RANGE, NULL)
- CT (CKR_DEVICE_ERROR, NULL)
- CT (CKR_DEVICE_MEMORY, NULL)
- CT (CKR_DEVICE_REMOVED, NULL)
- CT (CKR_ENCRYPTED_DATA_INVALID, NULL)
- CT (CKR_ENCRYPTED_DATA_LEN_RANGE, NULL)
- CT (CKR_FUNCTION_CANCELED, NULL)
- CT (CKR_FUNCTION_NOT_PARALLEL, NULL)
- CT (CKR_FUNCTION_NOT_SUPPORTED, NULL)
- CT (CKR_KEY_HANDLE_INVALID, NULL)
- CT (CKR_KEY_SIZE_RANGE, NULL)
- CT (CKR_KEY_TYPE_INCONSISTENT, NULL)
- CT (CKR_KEY_NOT_NEEDED, NULL)
- CT (CKR_KEY_CHANGED, NULL)
- CT (CKR_KEY_NEEDED, NULL)
- CT (CKR_KEY_INDIGESTIBLE, NULL)
- CT (CKR_KEY_FUNCTION_NOT_PERMITTED, NULL)
- CT (CKR_KEY_NOT_WRAPPABLE, NULL)
- CT (CKR_KEY_UNEXTRACTABLE, NULL)
- CT (CKR_MECHANISM_INVALID, NULL)
- CT (CKR_MECHANISM_PARAM_INVALID, NULL)
- CT (CKR_OBJECT_HANDLE_INVALID, NULL)
- CT (CKR_OPERATION_ACTIVE, NULL)
- CT (CKR_OPERATION_NOT_INITIALIZED, NULL)
- CT (CKR_PIN_INCORRECT, NULL)
- CT (CKR_PIN_INVALID, NULL)
- CT (CKR_PIN_LEN_RANGE, NULL)
- CT (CKR_PIN_EXPIRED, NULL)
- CT (CKR_PIN_LOCKED, NULL)
- CT (CKR_SESSION_CLOSED, NULL)
- CT (CKR_SESSION_COUNT, NULL)
- CT (CKR_SESSION_HANDLE_INVALID, NULL)
- CT (CKR_SESSION_PARALLEL_NOT_SUPPORTED, NULL)
- CT (CKR_SESSION_READ_ONLY, NULL)
- CT (CKR_SESSION_EXISTS, NULL)
- CT (CKR_SESSION_READ_ONLY_EXISTS, NULL)
- CT (CKR_SESSION_READ_WRITE_SO_EXISTS, NULL)
- CT (CKR_SIGNATURE_INVALID, NULL)
- CT (CKR_SIGNATURE_LEN_RANGE, NULL)
- CT (CKR_TEMPLATE_INCOMPLETE, NULL)
- CT (CKR_TEMPLATE_INCONSISTENT, NULL)
- CT (CKR_TOKEN_NOT_PRESENT, NULL)
- CT (CKR_TOKEN_NOT_RECOGNIZED, NULL)
- CT (CKR_TOKEN_WRITE_PROTECTED, NULL)
- CT (CKR_UNWRAPPING_KEY_HANDLE_INVALID, NULL)
- CT (CKR_UNWRAPPING_KEY_SIZE_RANGE, NULL)
- CT (CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT, NULL)
- CT (CKR_USER_ALREADY_LOGGED_IN, NULL)
- CT (CKR_USER_NOT_LOGGED_IN, NULL)
- CT (CKR_USER_PIN_NOT_INITIALIZED, NULL)
- CT (CKR_USER_TYPE_INVALID, NULL)
- CT (CKR_USER_ANOTHER_ALREADY_LOGGED_IN, NULL)
- CT (CKR_USER_TOO_MANY_TYPES, NULL)
- CT (CKR_WRAPPED_KEY_INVALID, NULL)
- CT (CKR_WRAPPED_KEY_LEN_RANGE, NULL)
- CT (CKR_WRAPPING_KEY_HANDLE_INVALID, NULL)
- CT (CKR_WRAPPING_KEY_SIZE_RANGE, NULL)
- CT (CKR_WRAPPING_KEY_TYPE_INCONSISTENT, NULL)
- CT (CKR_RANDOM_SEED_NOT_SUPPORTED, NULL)
- CT (CKR_RANDOM_NO_RNG, NULL)
- CT (CKR_DOMAIN_PARAMS_INVALID, NULL)
- CT (CKR_BUFFER_TOO_SMALL, NULL)
- CT (CKR_SAVED_STATE_INVALID, NULL)
- CT (CKR_INFORMATION_SENSITIVE, NULL)
- CT (CKR_STATE_UNSAVEABLE, NULL)
- CT (CKR_CRYPTOKI_NOT_INITIALIZED, NULL)
- CT (CKR_CRYPTOKI_ALREADY_INITIALIZED, NULL)
- CT (CKR_MUTEX_BAD, NULL)
- CT (CKR_MUTEX_NOT_LOCKED, NULL)
- CT (CKR_FUNCTION_REJECTED, NULL)
- { CKA_INVALID },
-};
-
-const p11_constant p11_constant_mechanisms[] = {
- CT (CKM_RSA_PKCS_KEY_PAIR_GEN, "rsa-pkcs-key-pair-gen")
- CT (CKM_RSA_PKCS, "rsa-pkcs")
- CT (CKM_RSA_9796, "rsa-9796")
- CT (CKM_RSA_X_509, "rsa-x-509")
- CT (CKM_MD2_RSA_PKCS, "md2-rsa-pkcs")
- CT (CKM_MD5_RSA_PKCS, "md5-rsa-pkcs")
- CT (CKM_SHA1_RSA_PKCS, "sha1-rsa-pkcs")
- CT (CKM_RIPEMD128_RSA_PKCS, "ripemd128-rsa-pkcs")
- CT (CKM_RIPEMD160_RSA_PKCS, "ripemd160-rsa-pkcs")
- CT (CKM_RSA_PKCS_OAEP, "rsa-pkcs-oaep")
- CT (CKM_RSA_X9_31_KEY_PAIR_GEN, "rsa-x9-31-key-pair-gen")
- CT (CKM_RSA_X9_31, "rsa-x9-31")
- CT (CKM_SHA1_RSA_X9_31, "sha1-rsa-x9-31")
- CT (CKM_RSA_PKCS_PSS, "rsa-pkcs-pss")
- CT (CKM_SHA1_RSA_PKCS_PSS, "sha1-rsa-pkcs-pss")
- CT (CKM_DSA_KEY_PAIR_GEN, "dsa-key-pair-gen")
- CT (CKM_DSA, NULL) /* "dsa" */
- CT (CKM_DSA_SHA1, "dsa-sha1")
- CT (CKM_DH_PKCS_KEY_PAIR_GEN, "dh-pkcs-key-pair-gen")
- CT (CKM_DH_PKCS_DERIVE, "dh-pkcs-derive")
- CT (CKM_X9_42_DH_KEY_PAIR_GEN, "x9-42-dh-key-pair-gen")
- CT (CKM_X9_42_DH_DERIVE, "x9-42-dh-derive")
- CT (CKM_X9_42_DH_HYBRID_DERIVE, "x9-42-dh-hybrid-derive")
- CT (CKM_X9_42_MQV_DERIVE, "x9-42-mqv-derive")
- CT (CKM_SHA256_RSA_PKCS, "sha256-rsa-pkcs")
- CT (CKM_SHA384_RSA_PKCS, "sha384-rsa-pkcs")
- CT (CKM_SHA512_RSA_PKCS, "sha512-rsa-pkcs")
- CT (CKM_SHA256_RSA_PKCS_PSS, "sha256-rsa-pkcs-pss")
- CT (CKM_SHA384_RSA_PKCS_PSS, "sha384-rsa-pkcs-pss")
- CT (CKM_SHA512_RSA_PKCS_PSS, "sha512-rsa-pkcs-pss")
- CT (CKM_RC2_KEY_GEN, "rc2-key-gen")
- CT (CKM_RC2_ECB, "rc2-ecb")
- CT (CKM_RC2_CBC, "rc2-cbc")
- CT (CKM_RC2_MAC, "rc2-mac")
- CT (CKM_RC2_MAC_GENERAL, "rc2-mac-general")
- CT (CKM_RC2_CBC_PAD, "rc2-cbc-pad")
- CT (CKM_RC4_KEY_GEN, "rc4-key-gen")
- CT (CKM_RC4, NULL) /* "rc4" */
- CT (CKM_DES_KEY_GEN, "des-key-gen")
- CT (CKM_DES_ECB, "des-ecb")
- CT (CKM_DES_CBC, "des-cbc")
- CT (CKM_DES_MAC, "des-mac")
- CT (CKM_DES_MAC_GENERAL, "des-mac-general")
- CT (CKM_DES_CBC_PAD, "des-cbc-pad")
- CT (CKM_DES2_KEY_GEN, "des2-key-gen")
- CT (CKM_DES3_KEY_GEN, "des3-key-gen")
- CT (CKM_DES3_ECB, "des3-ecb")
- CT (CKM_DES3_CBC, "des3-cbc")
- CT (CKM_DES3_MAC, "des3-mac")
- CT (CKM_DES3_MAC_GENERAL, "des3-mac-general")
- CT (CKM_DES3_CBC_PAD, "des3-cbc-pad")
- CT (CKM_CDMF_KEY_GEN, "cdmf-key-gen")
- CT (CKM_CDMF_ECB, "cdmf-ecb")
- CT (CKM_CDMF_CBC, "cdmf-cbc")
- CT (CKM_CDMF_MAC, "cdmf-mac")
- CT (CKM_CDMF_MAC_GENERAL, "cdmf-mac-general")
- CT (CKM_CDMF_CBC_PAD, "cdmf-cbc-pad")
- CT (CKM_DES_OFB64, "des-ofb64")
- CT (CKM_DES_OFB8, "des-ofb8")
- CT (CKM_DES_CFB64, "des-cfb64")
- CT (CKM_DES_CFB8, "des-cfb8")
- CT (CKM_MD2, "md2")
- CT (CKM_MD2_HMAC, "md2-hmac")
- CT (CKM_MD2_HMAC_GENERAL, "md2-hmac-general")
- CT (CKM_MD5, "md5")
- CT (CKM_MD5_HMAC, "md5-hmac")
- CT (CKM_MD5_HMAC_GENERAL, "md5-hmac-general")
- CT (CKM_SHA_1, "sha-1")
- CT (CKM_SHA_1_HMAC, "sha-1-hmac")
- CT (CKM_SHA_1_HMAC_GENERAL, "sha-1-hmac-general")
- CT (CKM_RIPEMD128, "ripemd128")
- CT (CKM_RIPEMD128_HMAC, "ripemd128-hmac")
- CT (CKM_RIPEMD128_HMAC_GENERAL, "ripemd128-hmac-general")
- CT (CKM_RIPEMD160, "ripemd160")
- CT (CKM_RIPEMD160_HMAC, "ripemd160-hmac")
- CT (CKM_RIPEMD160_HMAC_GENERAL, "ripemd160-hmac-general")
- CT (CKM_SHA256, "sha256")
- CT (CKM_SHA256_HMAC, "sha256-hmac")
- CT (CKM_SHA256_HMAC_GENERAL, "sha256-hmac-general")
- CT (CKM_SHA384, "sha384")
- CT (CKM_SHA384_HMAC, "sha384-hmac")
- CT (CKM_SHA384_HMAC_GENERAL, "sha384-hmac-general")
- CT (CKM_SHA512, "sha512")
- CT (CKM_SHA512_HMAC, "sha512-hmac")
- CT (CKM_SHA512_HMAC_GENERAL, "sha512-hmac-general")
- CT (CKM_CAST_KEY_GEN, "cast-key-gen")
- CT (CKM_CAST_ECB, "cast-ecb")
- CT (CKM_CAST_CBC, "cast-cbc")
- CT (CKM_CAST_MAC, "cast-mac")
- CT (CKM_CAST_MAC_GENERAL, "cast-mac-general")
- CT (CKM_CAST_CBC_PAD, "cast-cbc-pad")
- CT (CKM_CAST3_KEY_GEN, "cast3-key-gen")
- CT (CKM_CAST3_ECB, "cast3-ecb")
- CT (CKM_CAST3_CBC, "cast3-cbc")
- CT (CKM_CAST3_MAC, "cast3-mac")
- CT (CKM_CAST3_MAC_GENERAL, "cast3-mac-general")
- CT (CKM_CAST3_CBC_PAD, "cast3-cbc-pad")
- CT (CKM_CAST5_KEY_GEN, "cast5-key-gen")
- /* CT (CKM_CAST128_KEY_GEN) */
- CT (CKM_CAST5_ECB, "cast5-ecb")
- /* CT (CKM_CAST128_ECB) */
- CT (CKM_CAST5_CBC, "cast5-cbc")
- /* CT (CKM_CAST128_CBC) */
- CT (CKM_CAST5_MAC, "cast5-mac")
- /* CT (CKM_CAST128_MAC) */
- CT (CKM_CAST5_MAC_GENERAL, "cast5-mac-general")
- /* CT (CKM_CAST128_MAC_GENERAL) */
- CT (CKM_CAST5_CBC_PAD, "cast5-cbc-pad")
- /* CT (CKM_CAST128_CBC_PAD) */
- CT (CKM_RC5_KEY_GEN, "rc5-key-gen")
- CT (CKM_RC5_ECB, "rc5-ecb")
- CT (CKM_RC5_CBC, "rc5-cbc")
- CT (CKM_RC5_MAC, "rc5-mac")
- CT (CKM_RC5_MAC_GENERAL, "rc5-mac-general")
- CT (CKM_RC5_CBC_PAD, "rc5-cbc-pad")
- CT (CKM_IDEA_KEY_GEN, "idea-key-gen")
- CT (CKM_IDEA_ECB, "idea-ecb")
- CT (CKM_IDEA_CBC, "idea-cbc")
- CT (CKM_IDEA_MAC, "idea-mac")
- CT (CKM_IDEA_MAC_GENERAL, "idea-mac-general")
- CT (CKM_IDEA_CBC_PAD, "idea-cbc-pad")
- CT (CKM_GENERIC_SECRET_KEY_GEN, "generic-secret-key-gen")
- CT (CKM_CONCATENATE_BASE_AND_KEY, "concatenate-base-and-key")
- CT (CKM_CONCATENATE_BASE_AND_DATA, "concatenate-base-and-data")
- CT (CKM_CONCATENATE_DATA_AND_BASE, "concatenate-data-and-base")
- CT (CKM_XOR_BASE_AND_DATA, "xor-base-and-data")
- CT (CKM_EXTRACT_KEY_FROM_KEY, "extract-key-from-key")
- CT (CKM_SSL3_PRE_MASTER_KEY_GEN, "ssl3-pre-master-key-gen")
- CT (CKM_SSL3_MASTER_KEY_DERIVE, "ssl3-master-key-derive")
- CT (CKM_SSL3_KEY_AND_MAC_DERIVE, "ssl3-key-and-mac-derive")
- CT (CKM_SSL3_MASTER_KEY_DERIVE_DH, "ssl3-master-key-derive-dh")
- CT (CKM_TLS_PRE_MASTER_KEY_GEN, "tls-pre-master-key-gen")
- CT (CKM_TLS_MASTER_KEY_DERIVE, "tls-master-key-derive")
- CT (CKM_TLS_KEY_AND_MAC_DERIVE, "tls-key-and-mac-derive")
- CT (CKM_TLS_MASTER_KEY_DERIVE_DH, "tls-master-key-derive-dh")
- /* CT (CKM_TLS_PRF) */
- CT (CKM_SSL3_MD5_MAC, "ssl3-md5-mac")
- CT (CKM_SSL3_SHA1_MAC, "ssl3-sha1-mac")
- CT (CKM_MD5_KEY_DERIVATION, "md5-key-derivation")
- CT (CKM_MD2_KEY_DERIVATION, "md2-key-derivation")
- CT (CKM_SHA1_KEY_DERIVATION, "sha1-key-derivation")
- CT (CKM_SHA256_KEY_DERIVATION, "sha256-key-derivation")
- CT (CKM_SHA384_KEY_DERIVATION, "sha384-key-derivation")
- CT (CKM_SHA512_KEY_DERIVATION, "sha512-key-derivation")
- CT (CKM_PBE_MD2_DES_CBC, "pbe-md2-des-cbc")
- CT (CKM_PBE_MD5_DES_CBC, "pbe-md5-des-cbc")
- CT (CKM_PBE_MD5_CAST_CBC, "pbe-md5-cast-cbc")
- CT (CKM_PBE_MD5_CAST3_CBC, "pbe-md5-cast3-cbc")
- CT (CKM_PBE_MD5_CAST5_CBC, "pbe-md5-cast5-cbc")
- /* CT (CKM_PBE_MD5_CAST128_CBC) */
- CT (CKM_PBE_SHA1_CAST5_CBC, "pbe-sha1-cast5-cbc")
- /* CT (CKM_PBE_SHA1_CAST128_CBC) */
- CT (CKM_PBE_SHA1_RC4_128, "pbe-sha1-rc4-128")
- CT (CKM_PBE_SHA1_RC4_40, "pbe-sha1-rc4-40")
- CT (CKM_PBE_SHA1_DES3_EDE_CBC, "pbe-sha1-des3-ede-cbc")
- CT (CKM_PBE_SHA1_DES2_EDE_CBC, "pbe-sha1-des2-ede-cbc")
- CT (CKM_PBE_SHA1_RC2_128_CBC, "pbe-sha1-rc2-128-cbc")
- CT (CKM_PBE_SHA1_RC2_40_CBC, "pbe-sha1-rc2-40-cbc")
- CT (CKM_PKCS5_PBKD2, "pkcs5-pbkd2")
- CT (CKM_PBA_SHA1_WITH_SHA1_HMAC, "pba-sha1-with-sha1-hmac")
- CT (CKM_WTLS_PRE_MASTER_KEY_GEN, "wtls-pre-master-key-gen")
- CT (CKM_WTLS_MASTER_KEY_DERIVE, "wtls-master-key-derive")
- CT (CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC, "wtls-master-key-derive-dh-ecc")
- CT (CKM_WTLS_PRF, "wtls-prf")
- CT (CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE, "wtls-server-key-and-mac-derive")
- CT (CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE, "wtls-client-key-and-mac-derive")
- CT (CKM_KEY_WRAP_LYNKS, "key-wrap-lynks")
- CT (CKM_KEY_WRAP_SET_OAEP, "key-wrap-set-oaep")
- CT (CKM_CMS_SIG, "cms-sig")
- CT (CKM_SKIPJACK_KEY_GEN, "skipjack-key-gen")
- CT (CKM_SKIPJACK_ECB64, "skipjack-ecb64")
- CT (CKM_SKIPJACK_CBC64, "skipjack-cbc64")
- CT (CKM_SKIPJACK_OFB64, "skipjack-ofb64")
- CT (CKM_SKIPJACK_CFB64, "skipjack-cfb64")
- CT (CKM_SKIPJACK_CFB32, "skipjack-cfb32")
- CT (CKM_SKIPJACK_CFB16, "skipjack-cfb16")
- CT (CKM_SKIPJACK_CFB8, "skipjack-cfb8")
- CT (CKM_SKIPJACK_WRAP, "skipjack-wrap")
- CT (CKM_SKIPJACK_PRIVATE_WRAP, "skipjack-private-wrap")
- CT (CKM_SKIPJACK_RELAYX, "skipjack-relayx")
- CT (CKM_KEA_KEY_PAIR_GEN, "kea-key-pair-gen")
- CT (CKM_KEA_KEY_DERIVE, "kea-key-derive")
- CT (CKM_FORTEZZA_TIMESTAMP, "fortezza-timestamp")
- CT (CKM_BATON_KEY_GEN, "baton-key-gen")
- CT (CKM_BATON_ECB128, "baton-ecb128")
- CT (CKM_BATON_ECB96, "baton-ecb96")
- CT (CKM_BATON_CBC128, "baton-cbc128")
- CT (CKM_BATON_COUNTER, "baton-counter")
- CT (CKM_BATON_SHUFFLE, "baton-shuffle")
- CT (CKM_BATON_WRAP, "baton-wrap")
- CT (CKM_ECDSA_KEY_PAIR_GEN, "ecdsa-key-pair-gen")
- /* CT (CKM_EC_KEY_PAIR_GEN) */
- CT (CKM_ECDSA, "ecdsa")
- CT (CKM_ECDSA_SHA1, "ecdsa-sha1")
- CT (CKM_ECDH1_DERIVE, "ecdh1-derive")
- CT (CKM_ECDH1_COFACTOR_DERIVE, "ecdh1-cofactor-derive")
- CT (CKM_ECMQV_DERIVE, "ecmqv-derive")
- CT (CKM_JUNIPER_KEY_GEN, "juniper-key-gen")
- CT (CKM_JUNIPER_ECB128, "juniper-ecb128")
- CT (CKM_JUNIPER_CBC128, "juniper-cbc128")
- CT (CKM_JUNIPER_COUNTER, "juniper-counter")
- CT (CKM_JUNIPER_SHUFFLE, "juniper-shuffle")
- CT (CKM_JUNIPER_WRAP, "juniper-wrap")
- CT (CKM_FASTHASH, "fasthash")
- CT (CKM_AES_KEY_GEN, "aes-key-gen")
- CT (CKM_AES_ECB, "aes-ecb")
- CT (CKM_AES_CBC, "aes-cbc")
- CT (CKM_AES_MAC, "aes-mac")
- CT (CKM_AES_MAC_GENERAL, "aes-mac-general")
- CT (CKM_AES_CBC_PAD, "aes-cbc-pad")
- CT (CKM_BLOWFISH_KEY_GEN, "blowfish-key-gen")
- CT (CKM_BLOWFISH_CBC, "blowfish-cbc")
- CT (CKM_TWOFISH_KEY_GEN, "twofish-key-gen")
- CT (CKM_TWOFISH_CBC, "twofish-cbc")
- CT (CKM_DES_ECB_ENCRYPT_DATA, "des-ecb-encrypt-data")
- CT (CKM_DES_CBC_ENCRYPT_DATA, "des-cbc-encrypt-data")
- CT (CKM_DES3_ECB_ENCRYPT_DATA, "des3-ecb-encrypt-data")
- CT (CKM_DES3_CBC_ENCRYPT_DATA, "des3-cbc-encrypt-data")
- CT (CKM_AES_ECB_ENCRYPT_DATA, "aes-ecb-encrypt-data")
- CT (CKM_AES_CBC_ENCRYPT_DATA, "aes-cbc-encrypt-data")
- CT (CKM_DSA_PARAMETER_GEN, "dsa-parameter-gen")
- CT (CKM_DH_PKCS_PARAMETER_GEN, "dh-pkcs-parameter-gen")
- CT (CKM_X9_42_DH_PARAMETER_GEN, "x9-42-dh-parameter-gen")
- { CKA_INVALID },
-};
-
-#undef CT
-
-struct {
- const p11_constant *table;
- int length;
-} tables[] = {
- { p11_constant_types, ELEMS (p11_constant_types) - 1 },
- { p11_constant_classes, ELEMS (p11_constant_classes) - 1 },
- { p11_constant_trusts, ELEMS (p11_constant_trusts) - 1 },
- { p11_constant_certs, ELEMS (p11_constant_certs) - 1 },
- { p11_constant_keys, ELEMS (p11_constant_keys) - 1 },
- { p11_constant_asserts, ELEMS (p11_constant_asserts) - 1 },
- { p11_constant_categories, ELEMS (p11_constant_categories) - 1 },
- { p11_constant_mechanisms, ELEMS (p11_constant_mechanisms) - 1 },
- { p11_constant_states, ELEMS (p11_constant_states) - 1 },
- { p11_constant_users, ELEMS (p11_constant_users) - 1 },
- { p11_constant_returns, ELEMS (p11_constant_returns) - 1 },
-};
-
-static int
-compar_attr_info (const void *one,
- const void *two)
-{
- const p11_constant *a1 = one;
- const p11_constant *a2 = two;
- if (a1->value == a2->value)
- return 0;
- if (a1->value < a2->value)
- return -1;
- return 1;
-}
-
-static const p11_constant *
-lookup_info (const p11_constant *table,
- CK_ATTRIBUTE_TYPE type)
-{
- p11_constant match = { type, NULL, { NULL } };
- int length = -1;
- int i;
-
- for (i = 0; i < ELEMS (tables); i++) {
- if (table == tables[i].table) {
- length = tables[i].length;
- break;
- }
- }
-
- return_val_if_fail (length != -1, NULL);
- return bsearch (&match, table, length, sizeof (p11_constant), compar_attr_info);
-
-}
-const char *
-p11_constant_name (const p11_constant *constants,
- CK_ULONG type)
-{
- const p11_constant *constant = lookup_info (constants, type);
- return constant ? constant->name : NULL;
-}
-
-const char *
-p11_constant_nick (const p11_constant *constants,
- CK_ULONG type)
-{
- const p11_constant *constant = lookup_info (constants, type);
- return constant ? constant->nicks[0] : NULL;
-}
-
-p11_dict *
-p11_constant_reverse (bool nick)
-{
- const p11_constant *table;
- p11_dict *lookups;
- int length = -1;
- int i, j, k;
-
- lookups = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, NULL, NULL);
- return_val_if_fail (lookups != NULL, NULL);
-
- for (i = 0; i < ELEMS (tables); i++) {
- table = tables[i].table;
- length = tables[i].length;
-
- for (j = 0; j < length; j++) {
- if (nick) {
- for (k = 0; table[j].nicks[k] != NULL; k++) {
- if (!p11_dict_set (lookups, (void *)table[j].nicks[k],
- (void *)&table[j].value))
- return_val_if_reached (NULL);
- }
- } else {
- if (!p11_dict_set (lookups, (void *)table[j].name, (void *)&table[j].value))
- return_val_if_reached (NULL);
- }
- }
- }
-
- return lookups;
-}
-
-CK_ULONG
-p11_constant_resolve (p11_dict *reversed,
- const char *string)
-{
- CK_ULONG *ptr;
-
- return_val_if_fail (reversed != NULL, CKA_INVALID);
- return_val_if_fail (string != NULL, CKA_INVALID);
-
- ptr = p11_dict_get (reversed, string);
- return ptr ? *ptr : CKA_INVALID;
-}
diff --git a/common/constants.h b/common/constants.h
deleted file mode 100644
index 1526373..0000000
--- a/common/constants.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2012, Redhat Inc.
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#ifndef P11_CONSTANTS_H_
-#define P11_CONSTANTS_H_
-
-#include "compat.h"
-#include "dict.h"
-#include "pkcs11.h"
-
-typedef struct {
- CK_ULONG value;
- const char *name;
- const char *nicks[4];
-} p11_constant;
-
-const char * p11_constant_name (const p11_constant *constants,
- CK_ULONG value);
-
-const char * p11_constant_nick (const p11_constant *constants,
- CK_ULONG type);
-
-p11_dict * p11_constant_reverse (bool nick);
-
-CK_ULONG p11_constant_resolve (p11_dict *table,
- const char *string);
-
-extern const p11_constant p11_constant_types[];
-
-extern const p11_constant p11_constant_classes[];
-
-extern const p11_constant p11_constant_trusts[];
-
-extern const p11_constant p11_constant_certs[];
-
-extern const p11_constant p11_constant_keys[];
-
-extern const p11_constant p11_constant_asserts[];
-
-extern const p11_constant p11_constant_categories[];
-
-extern const p11_constant p11_constant_mechanisms[];
-
-extern const p11_constant p11_constant_states[];
-
-extern const p11_constant p11_constant_users[];
-
-extern const p11_constant p11_constant_returns[];
-
-#endif /* P11_CONSTANTS_H_ */
diff --git a/common/debug.c b/common/debug.c
deleted file mode 100644
index 47933fa..0000000
--- a/common/debug.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stef@memberwebs.com>
- */
-
-#include "config.h"
-
-#include "compat.h"
-#include "debug.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-struct DebugKey {
- const char *name;
- int value;
-};
-
-static struct DebugKey debug_keys[] = {
- { "lib", P11_DEBUG_LIB },
- { "conf", P11_DEBUG_CONF },
- { "uri", P11_DEBUG_URI },
- { "proxy", P11_DEBUG_PROXY },
- { "trust", P11_DEBUG_TRUST },
- { "tool", P11_DEBUG_TOOL },
- { "rpc", P11_DEBUG_RPC },
- { 0, }
-};
-
-static bool debug_inited = false;
-static bool debug_strict = false;
-
-/* global variable exported in debug.h */
-int p11_debug_current_flags = ~0;
-
-static int
-parse_environ_flags (void)
-{
- const char *env;
- int result = 0;
- const char *p;
- const char *q;
- int i;
-
- env = secure_getenv ("P11_KIT_STRICT");
- if (env && env[0] != '\0')
- debug_strict = true;
-
- env = getenv ("P11_KIT_DEBUG");
- if (!env)
- return 0;
-
- if (strcmp (env, "all") == 0) {
- for (i = 0; debug_keys[i].name; i++)
- result |= debug_keys[i].value;
-
- } else if (strcmp (env, "help") == 0) {
- fprintf (stderr, "Supported debug values:");
- for (i = 0; debug_keys[i].name; i++)
- fprintf (stderr, " %s", debug_keys[i].name);
- fprintf (stderr, "\n");
-
- } else {
- p = env;
- while (*p) {
- q = strpbrk (p, ":;, \t");
- if (!q)
- q = p + strlen (p);
-
- for (i = 0; debug_keys[i].name; i++) {
- if (q - p == strlen (debug_keys[i].name) &&
- strncmp (debug_keys[i].name, p, q - p) == 0)
- result |= debug_keys[i].value;
- }
-
- p = q;
- if (*p)
- p++;
- }
- }
-
- return result;
-}
-
-void
-p11_debug_init (void)
-{
- p11_debug_current_flags = parse_environ_flags ();
- debug_inited = true;
-}
-
-void
-p11_debug_message (int flag,
- const char *format, ...)
-{
- va_list args;
-
- if (flag & p11_debug_current_flags) {
- fprintf (stderr, "(p11-kit:%d) ", getpid());
- va_start (args, format);
- vfprintf (stderr, format, args);
- va_end (args);
- fprintf (stderr, "\n");
- }
-}
-
-void
-p11_debug_precond (const char *format,
- ...)
-{
- va_list va;
-
- va_start (va, format);
- vfprintf (stderr, format, va);
- va_end (va);
-
-#ifdef __COVERITY__
- fprintf (stderr, "ignoring P11_KIT_STRICT under coverity: %d", (int)debug_strict);
-#else
- if (debug_strict)
-#endif
- abort ();
-}
diff --git a/common/debug.h b/common/debug.h
deleted file mode 100644
index 6106f19..0000000
--- a/common/debug.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#ifndef P11_DEBUG_H
-#define P11_DEBUG_H
-
-#include "compat.h"
-
-/* Please keep this enum in sync with keys in debug.c */
-enum {
- P11_DEBUG_LIB = 1 << 1,
- P11_DEBUG_CONF = 1 << 2,
- P11_DEBUG_URI = 1 << 3,
- P11_DEBUG_PROXY = 1 << 4,
- P11_DEBUG_TRUST = 1 << 5,
- P11_DEBUG_TOOL = 1 << 6,
- P11_DEBUG_RPC = 1 << 7,
-};
-
-extern int p11_debug_current_flags;
-
-void p11_debug_init (void);
-
-void p11_debug_message (int flag,
- const char *format,
- ...) GNUC_PRINTF (2, 3);
-
-void p11_debug_precond (const char *format,
- ...) GNUC_PRINTF (1, 2)
- CLANG_ANALYZER_NORETURN;
-
-#ifndef assert_not_reached
-#define assert_not_reached() \
- (assert (false && "this code should not be reached"))
-#endif
-
-#define return_val_if_fail(x, v) \
- do { if (!(x)) { \
- p11_debug_precond ("p11-kit: '%s' not true at %s\n", #x, __func__); \
- return v; \
- } } while (false)
-
-#define return_if_fail(x) \
- do { if (!(x)) { \
- p11_debug_precond ("p11-kit: '%s' not true at %s\n", #x, __func__); \
- return; \
- } } while (false)
-
-#define return_if_reached() \
- do { \
- p11_debug_precond ("p11-kit: shouldn't be reached at %s\n", __func__); \
- return; \
- } while (false)
-
-#define return_val_if_reached(v) \
- do { \
- p11_debug_precond ("p11-kit: shouldn't be reached at %s\n", __func__); \
- return v; \
- } while (false)
-
-#define warn_if_reached(v) \
- do { \
- p11_debug_precond ("p11-kit: shouldn't be reached at %s\n", __func__); \
- } while (false)
-
-#define warn_if_fail(x) \
- do { if (!(x)) { \
- p11_debug_precond ("p11-kit: '%s' not true at %s\n", #x, __func__); \
- } } while (false)
-
-#endif /* DEBUG_H */
-
-/* -----------------------------------------------------------------------------
- * Below this point is outside the DEBUG_H guard - so it can take effect
- * more than once. So you can do:
- *
- * #define P11_DEBUG_FLAG P11_DEBUG_ONE_THING
- * #include "debug.h"
- * ...
- * p11_debug ("if we're debugging one thing");
- * ...
- * #undef P11_DEBUG_FLAG
- * #define P11_DEBUG_FLAG DEBUG_OTHER_THING
- * #include "debug.h"
- * ...
- * p11_debug ("if we're debugging the other thing");
- * ...
- */
-
-#ifdef P11_DEBUG_FLAG
-#ifdef WITH_DEBUG
-
-#undef p11_debug
-#define p11_debug(format, ...) do { \
- if (P11_DEBUG_FLAG & p11_debug_current_flags) \
- p11_debug_message (P11_DEBUG_FLAG, "%s: " format, __PRETTY_FUNCTION__, ##__VA_ARGS__); \
- } while (0)
-
-#undef p11_debugging
-#define p11_debugging \
- (P11_DEBUG_FLAG & p11_debug_current_flags)
-
-#else /* !defined (WITH_DEBUG) */
-
-#undef p11_debug
-#define p11_debug(format, ...) \
- do {} while (false)
-
-#undef p11_debugging
-#define p11_debugging (0)
-
-#endif /* !defined (WITH_DEBUG) */
-
-#endif /* defined (P11_DEBUG_FLAG) */
diff --git a/common/dict.c b/common/dict.c
deleted file mode 100644
index b7ab00d..0000000
--- a/common/dict.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Copyright (c) 2004 Stefan Walter
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- */
-
-#include "config.h"
-
-#include "debug.h"
-#include "dict.h"
-#include "hash.h"
-
-#include <sys/types.h>
-
-#include <assert.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-struct _p11_dict {
- p11_dict_hasher hash_func;
- p11_dict_equals equal_func;
- p11_destroyer key_destroy_func;
- p11_destroyer value_destroy_func;
-
- struct _p11_dictbucket **buckets;
- unsigned int num_items;
- unsigned int num_buckets;
-};
-
-typedef struct _p11_dictbucket {
- void *key;
- unsigned int hashed;
- void *value;
- struct _p11_dictbucket *next;
-} dictbucket;
-
-static dictbucket *
-next_entry (p11_dictiter *iter)
-{
- dictbucket *bucket = iter->next;
- while (!bucket) {
- if (iter->index >= iter->dict->num_buckets)
- return NULL;
- bucket = iter->dict->buckets[iter->index++];
- }
- iter->next = bucket->next;
- return bucket;
-}
-
-
-bool
-p11_dict_next (p11_dictiter *iter,
- void **key,
- void **value)
-{
- dictbucket *bucket = next_entry (iter);
- if (bucket == NULL)
- return false;
- if (key)
- *key = bucket->key;
- if (value)
- *value = bucket->value;
- return true;
-}
-
-void
-p11_dict_iterate (p11_dict *dict,
- p11_dictiter *iter)
-{
- iter->dict = dict;
- iter->index = 0;
- iter->next = NULL;
-}
-
-static dictbucket **
-lookup_or_create_bucket (p11_dict *dict,
- const void *key,
- bool create)
-{
- dictbucket **bucketp;
- unsigned int hash;
-
- /* Perform the hashing */
- hash = dict->hash_func (key);
-
- /* scan linked list */
- for (bucketp = &dict->buckets[hash % dict->num_buckets];
- *bucketp != NULL; bucketp = &(*bucketp)->next) {
- if((*bucketp)->hashed == hash && dict->equal_func ((*bucketp)->key, key))
- break;
- }
-
- if ((*bucketp) != NULL || !create)
- return bucketp;
-
- /* add a new entry for non-NULL val */
- (*bucketp) = calloc (sizeof (dictbucket), 1);
-
- if (*bucketp != NULL) {
- (*bucketp)->key = (void*)key;
- (*bucketp)->hashed = hash;
- dict->num_items++;
- }
-
- return bucketp;
-}
-
-void *
-p11_dict_get (p11_dict *dict,
- const void *key)
-{
- dictbucket **bucketp;
-
- bucketp = lookup_or_create_bucket (dict, key, false);
- if (bucketp && *bucketp)
- return (void*)((*bucketp)->value);
- else
- return NULL;
-}
-
-bool
-p11_dict_set (p11_dict *dict,
- void *key,
- void *val)
-{
- dictbucket **bucketp;
- p11_dictiter iter;
- dictbucket *bucket;
- dictbucket **new_buckets;
- unsigned int num_buckets;
-
- bucketp = lookup_or_create_bucket (dict, key, true);
- if(bucketp && *bucketp) {
-
- /* Destroy the previous key */
- if ((*bucketp)->key && (*bucketp)->key != key && dict->key_destroy_func)
- dict->key_destroy_func ((*bucketp)->key);
-
- /* Destroy the previous value */
- if ((*bucketp)->value && (*bucketp)->value != val && dict->value_destroy_func)
- dict->value_destroy_func ((*bucketp)->value);
-
- /* replace entry */
- (*bucketp)->key = key;
- (*bucketp)->value = val;
-
- /* check that the collision rate isn't too high */
- if (dict->num_items > dict->num_buckets) {
- num_buckets = dict->num_buckets * 2 + 1;
- new_buckets = (dictbucket **)calloc (sizeof (dictbucket *), num_buckets);
-
- /* Ignore failures, maybe we can expand later */
- if(new_buckets) {
- p11_dict_iterate (dict, &iter);
- while ((bucket = next_entry (&iter)) != NULL) {
- unsigned int i = bucket->hashed % num_buckets;
- bucket->next = new_buckets[i];
- new_buckets[i] = bucket;
- }
-
- free (dict->buckets);
- dict->buckets = new_buckets;
- dict->num_buckets = num_buckets;
- }
- }
-
- return true;
- }
-
- return_val_if_reached (false);
-}
-
-bool
-p11_dict_steal (p11_dict *dict,
- const void *key,
- void **stolen_key,
- void **stolen_value)
-{
- dictbucket **bucketp;
-
- bucketp = lookup_or_create_bucket (dict, key, false);
- if (bucketp && *bucketp) {
- dictbucket *old = *bucketp;
- *bucketp = (*bucketp)->next;
- --dict->num_items;
- if (stolen_key)
- *stolen_key = old->key;
- if (stolen_value)
- *stolen_value = old->value;
- free (old);
- return true;
- }
-
- return false;
-
-}
-
-bool
-p11_dict_remove (p11_dict *dict,
- const void *key)
-{
- void *old_key;
- void *old_value;
-
- if (!p11_dict_steal (dict, key, &old_key, &old_value))
- return false;
-
- if (dict->key_destroy_func)
- dict->key_destroy_func (old_key);
- if (dict->value_destroy_func)
- dict->value_destroy_func (old_value);
- return true;
-}
-
-void
-p11_dict_clear (p11_dict *dict)
-{
- dictbucket *bucket, *next;
- unsigned int i;
-
- /* Free all entries in the array */
- for (i = 0; i < dict->num_buckets; ++i) {
- bucket = dict->buckets[i];
- while (bucket != NULL) {
- next = bucket->next;
- if (dict->key_destroy_func)
- dict->key_destroy_func (bucket->key);
- if (dict->value_destroy_func)
- dict->value_destroy_func (bucket->value);
- free (bucket);
- bucket = next;
- }
- }
-
- memset (dict->buckets, 0, dict->num_buckets * sizeof (dictbucket *));
- dict->num_items = 0;
-}
-
-p11_dict *
-p11_dict_new (p11_dict_hasher hash_func,
- p11_dict_equals equal_func,
- p11_destroyer key_destroy_func,
- p11_destroyer value_destroy_func)
-{
- p11_dict *dict;
-
- assert (hash_func);
- assert (equal_func);
-
- dict = malloc (sizeof (p11_dict));
- if (dict) {
- dict->hash_func = hash_func;
- dict->equal_func = equal_func;
- dict->key_destroy_func = key_destroy_func;
- dict->value_destroy_func = value_destroy_func;
-
- dict->num_buckets = 9;
- dict->buckets = (dictbucket **)calloc (sizeof (dictbucket *), dict->num_buckets);
- if (!dict->buckets) {
- free (dict);
- return NULL;
- }
-
- dict->num_items = 0;
- }
-
- return dict;
-}
-
-void
-p11_dict_free (p11_dict *dict)
-{
- dictbucket *bucket;
- p11_dictiter iter;
-
- if (!dict)
- return;
-
- p11_dict_iterate (dict, &iter);
- while ((bucket = next_entry (&iter)) != NULL) {
- if (dict->key_destroy_func)
- dict->key_destroy_func (bucket->key);
- if (dict->value_destroy_func)
- dict->value_destroy_func (bucket->value);
- free (bucket);
- }
-
- if (dict->buckets)
- free (dict->buckets);
-
- free (dict);
-}
-
-unsigned int
-p11_dict_size (p11_dict *dict)
-{
- return dict->num_items;
-}
-
-unsigned int
-p11_dict_str_hash (const void *string)
-{
- uint32_t hash;
- p11_hash_murmur3 (&hash, string, strlen (string), NULL);
- return hash;
-}
-
-bool
-p11_dict_str_equal (const void *string_one,
- const void *string_two)
-{
- assert (string_one);
- assert (string_two);
-
- return strcmp (string_one, string_two) == 0;
-}
-
-unsigned int
-p11_dict_ulongptr_hash (const void *to_ulong)
-{
- assert (to_ulong);
- return (unsigned int)*((unsigned long*)to_ulong);
-}
-
-bool
-p11_dict_ulongptr_equal (const void *ulong_one,
- const void *ulong_two)
-{
- assert (ulong_one);
- assert (ulong_two);
- return *((unsigned long*)ulong_one) == *((unsigned long*)ulong_two);
-}
-
-unsigned int
-p11_dict_intptr_hash (const void *to_int)
-{
- assert (to_int);
- return (unsigned int)*((int*)to_int);
-}
-
-bool
-p11_dict_intptr_equal (const void *int_one,
- const void *int_two)
-{
- assert (int_one);
- assert (int_two);
- return *((int*)int_one) == *((int*)int_two);
-}
-
-unsigned int
-p11_dict_direct_hash (const void *ptr)
-{
- return (unsigned int)(size_t)ptr;
-}
-
-bool
-p11_dict_direct_equal (const void *ptr_one,
- const void *ptr_two)
-{
- return ptr_one == ptr_two;
-}
diff --git a/common/dict.h b/common/dict.h
deleted file mode 100644
index 080f6b8..0000000
--- a/common/dict.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2004 Stefan Walter
- * Copyright (c) 2011 Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Waler <stefw@collabora.co.uk>
- */
-
-#ifndef P11_DICT_H_
-#define P11_DICT_H_
-
-#include "compat.h"
-
-/*
- * ARGUMENT DOCUMENTATION
- *
- * dict: The dict
- * key: Pointer to the key value
- * val: Pointer to the value
- * iter: A dict iterator
- */
-
-
-/* ----------------------------------------------------------------------------------
- * TYPES
- */
-
-/* Abstract type for dicts. */
-typedef struct _p11_dict p11_dict;
-
-/* Type for scanning hash tables. */
-typedef struct _p11_dictiter {
- p11_dict *dict;
- struct _p11_dictbucket *next;
- unsigned int index;
-} p11_dictiter;
-
-typedef unsigned int (*p11_dict_hasher) (const void *data);
-
-typedef bool (*p11_dict_equals) (const void *one,
- const void *two);
-
-#ifndef P11_DESTROYER_DEFINED
-#define P11_DESTROYER_DEFINED
-
-typedef void (*p11_destroyer) (void *data);
-
-#endif
-
-/* -----------------------------------------------------------------------------
- * MAIN
- */
-
-/*
- * p11_dict_create : Create a hash table
- * - returns an allocated hashtable
- */
-p11_dict * p11_dict_new (p11_dict_hasher hasher,
- p11_dict_equals equals,
- p11_destroyer key_destroyer,
- p11_destroyer value_destroyer);
-
-/*
- * p11_dict_free : Free a hash table
- */
-void p11_dict_free (p11_dict *dict);
-
-/*
- * p11_dict_size: Number of values in hash table
- * - returns the number of entries in hash table
- */
-unsigned int p11_dict_size (p11_dict *dict);
-
-/*
- * p11_dict_get: Retrieves a value from the hash table
- * - returns the value of the entry
- */
-void* p11_dict_get (p11_dict *dict,
- const void *key);
-
-/*
- * p11_dict_set: Set a value in the hash table
- * - returns true if the entry was added properly
- */
-bool p11_dict_set (p11_dict *dict,
- void *key,
- void *value);
-
-/*
- * p11_dict_remove: Remove a value from the hash table
- * - returns true if the entry was found
- */
-bool p11_dict_remove (p11_dict *dict,
- const void *key);
-
-/*
- * p11_dict_steal: Remove a value from the hash table without calling
- * destroy funcs
- * - returns true if the entry was found
- */
-bool p11_dict_steal (p11_dict *dict,
- const void *key,
- void **stolen_key,
- void **stolen_value);
-
-/*
- * p11_dict_iterate: Start enumerating through the hash table
- * - returns a hash iterator
- */
-void p11_dict_iterate (p11_dict *dict,
- p11_dictiter *iter);
-
-/*
- * p11_dict_next: Enumerate through hash table
- * - sets key and value to key and/or value
- * - returns whether there was another entry
- * - p11_dict_remove or p11_dict_steal is safe to use on
- * the current key.
- */
-bool p11_dict_next (p11_dictiter *iter,
- void **key,
- void **value);
-
-/*
- * p11_dict_clear: Clear all values from has htable.
- */
-void p11_dict_clear (p11_dict *dict);
-
-/* -----------------------------------------------------------------------------
- * KEY FUNCTIONS
- */
-
-unsigned int p11_dict_str_hash (const void *string);
-
-bool p11_dict_str_equal (const void *string_one,
- const void *string_two);
-
-unsigned int p11_dict_ulongptr_hash (const void *to_ulong);
-
-bool p11_dict_ulongptr_equal (const void *ulong_one,
- const void *ulong_two);
-
-unsigned int p11_dict_intptr_hash (const void *to_int);
-
-bool p11_dict_intptr_equal (const void *int_one,
- const void *int_two);
-
-unsigned int p11_dict_direct_hash (const void *ptr);
-
-bool p11_dict_direct_equal (const void *ptr_one,
- const void *ptr_two);
-
-#endif /* __P11_DICT_H__ */
diff --git a/common/frob-getauxval.c b/common/frob-getauxval.c
deleted file mode 100644
index 02745be..0000000
--- a/common/frob-getauxval.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@gnome.org>
- */
-
-#include "config.h"
-#include "compat.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int
-main (int argc,
- char *argv[])
-{
- unsigned long type = 0;
- unsigned long ret;
-
- if (argc == 2)
- type = atoi (argv[1]);
-
- if (type == 0) {
- fprintf (stderr, "usage: frob-getauxval 23");
- abort ();
- }
-
- ret = getauxval (type);
- printf ("getauxval(%lu) == %lu\n", type, ret);
- return (int)ret;
-}
diff --git a/common/frob-getenv.c b/common/frob-getenv.c
deleted file mode 100644
index a36594a..0000000
--- a/common/frob-getenv.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2014 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@gnome.org>
- */
-
-#include "config.h"
-#include "compat.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int
-main (int argc,
- char *argv[])
-{
- int ret;
- const char *val;
-
-fprintf (stderr, "calling secure_getenv(%s) getenv(%s) = %s\n", argv[1], argv[1], getenv(argv[1]));
- val = secure_getenv (argv[1]);
- if (val == NULL) {
- printf ("%s=NULL\n", argv[1]);
- return 0;
- }
-
- ret = atoi (val);
- if (ret == 0) {
- fprintf (stderr, "usage: frob-getenv VAR");
- abort ();
- }
-
- printf ("%s=%d\n", argv[1], ret);
- return ret;
-}
diff --git a/common/hash.c b/common/hash.c
deleted file mode 100644
index 5572085..0000000
--- a/common/hash.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2004, 2005, 2007, 2011 Internet Systems Consortium, Inc. ("ISC")
- * Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*! \file
- * SHA-1 in C
- * \author By Steve Reid <steve@edmweb.com>
- * 100% Public Domain
- * \verbatim
- * Test Vectors
- * "abc"
- * A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
- * "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
- * 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
- * A million repetitions of "a"
- * 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
- * \endverbatim
- */
-
-#include "config.h"
-
-#include "hash.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdint.h>
-#include <string.h>
-
-/* This code is based on the public domain MurmurHash3 from Austin Appleby:
- * http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
- *
- * We use only the 32 bit variant, and slow it down a bit to support unaligned
- * reads.
- */
-
-#if !defined(__cplusplus) && (__GNUC__ > 2)
-#define GNUC_INLINE __attribute__((always_inline))
-#else
-#define GNUC_INLINE
-#endif
-
-GNUC_INLINE static inline uint32_t
-rotl (uint32_t x,
- int8_t r)
-{
- return (x << r) | (x >> (32 - r));
-}
-
-/*
- * Finalization mix - force all bits of a hash block to avalanche
- */
-
-GNUC_INLINE static inline uint32_t
-fmix (uint32_t h)
-{
- h ^= h >> 16;
- h *= 0x85ebca6b;
- h ^= h >> 13;
- h *= 0xc2b2ae35;
- h ^= h >> 16;
-
- return h;
-}
-
-
-void
-p11_hash_murmur3 (void *hash,
- const void *input,
- size_t len,
- ...)
-{
- uint8_t overflow[4];
- const uint8_t *data;
- va_list va;
- uint32_t h1;
- uint32_t k1;
- uint32_t c1;
- uint32_t c2;
-
- h1 = 42; /* arbitrary choice of seed */
- c1 = 0xcc9e2d51;
- c2 = 0x1b873593;
- data = input;
-
- /* body */
-
- /* Mix 4 bytes at a time into the hash */
- va_start (va, len);
- for (;;) {
- if (len >= 4) {
- memcpy (&k1, data, 4);
- data += 4;
- len -= 4;
-
- } else {
- size_t num = len;
- memcpy (overflow, data, len);
-
- while (num < 4) {
- size_t part;
-
- data = va_arg (va, const void *);
- if (!data)
- break;
-
- /* Combine uint32 from old and new */
- len = va_arg (va, size_t);
- part = 4 - num;
- if (part > len)
- part = len;
- memcpy (overflow + num, data, part);
- data += part;
- len -= part;
- num += part;
- }
-
- if (num < 4) {
- len = num;
- break;
- }
-
- memcpy (&k1, overflow, 4);
- }
-
- k1 *= c1;
- k1 = rotl (k1, 15);
- k1 *= c2;
-
- h1 ^= k1;
- h1 = rotl (h1, 13);
- h1 = h1 * 5 + 0xe6546b64;
- }
- va_end (va);
-
- /* tail */
-
- k1 = 0;
-
- switch (len) {
- case 3:
- k1 ^= overflow[2] << 16;
- case 2:
- k1 ^= overflow[1] << 8;
- case 1:
- k1 ^= overflow[0];
- k1 *= c1;
- k1 = rotl (k1, 15);
- k1 *= c2;
- h1 ^= k1;
- default:
- break;
- }
-
- /* finalization */
-
- h1 ^= len;
- h1 = fmix(h1);
-
- assert (sizeof (h1) == P11_HASH_MURMUR3_LEN);
- memcpy (hash, &h1, sizeof (h1));
-}
diff --git a/common/hash.h b/common/hash.h
deleted file mode 100644
index 41371c6..0000000
--- a/common/hash.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef P11_HASH_H_
-#define P11_HASH_H_
-
-#include "compat.h"
-
-#define P11_HASH_MURMUR3_LEN 4
-
-void p11_hash_murmur3 (void *hash,
- const void *input,
- size_t length,
- ...) GNUC_NULL_TERMINATED;
-
-#endif /* P11_HASH_H_ */
diff --git a/common/lexer.c b/common/lexer.c
deleted file mode 100644
index 6253492..0000000
--- a/common/lexer.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2005 Stefan Walter
- * Copyright (c) 2011 Collabora Ltd.
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stefw@redhat.com>
- */
-
-#include "config.h"
-
-#define P11_DEBUG_FLAG P11_DEBUG_CONF
-#include "debug.h"
-#include "lexer.h"
-#include "message.h"
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-void
-p11_lexer_init (p11_lexer *lexer,
- const char *filename,
- const char *data,
- size_t length)
-{
- return_if_fail (lexer != NULL);
-
- memset (lexer, 0, sizeof (p11_lexer));
- lexer->at = data;
- lexer->remaining = length;
-
- return_if_fail (filename != NULL);
- lexer->filename = strdup (filename);
- return_if_fail (lexer->filename != NULL);
-}
-
-static void
-clear_state (p11_lexer *lexer)
-{
- switch (lexer->tok_type) {
- case TOK_FIELD:
- free (lexer->tok.field.name);
- free (lexer->tok.field.value);
- break;
- case TOK_SECTION:
- free (lexer->tok.section.name);
- break;
- case TOK_PEM:
- case TOK_EOF:
- break;
- }
-
- memset (&lexer->tok, 0, sizeof (lexer->tok));
- lexer->tok_type = TOK_EOF;
- lexer->complained = false;
-}
-
-bool
-p11_lexer_next (p11_lexer *lexer,
- bool *failed)
-{
- const char *colon;
- const char *value;
- const char *line;
- const char *end;
- const char *pos;
- char *part;
-
- return_val_if_fail (lexer != NULL, false);
-
- clear_state (lexer);
- if (failed)
- *failed = false;
-
- /* Go through lines and process them */
- while (lexer->remaining != 0) {
- assert (lexer->remaining > 0);
-
- /* Is this line the start of a PEM block? */
- if (strncmp (lexer->at, "-----BEGIN ", 11) == 0) {
- pos = strnstr (lexer->at, "\n-----END ", lexer->remaining);
- if (pos != NULL) {
- end = memchr (pos + 1, '\n', lexer->remaining - (pos - lexer->at) - 1);
- if (end)
- end += 1;
- else
- end = lexer->at + lexer->remaining;
- lexer->tok_type = TOK_PEM;
- lexer->tok.pem.begin = lexer->at;
- lexer->tok.pem.length = end - lexer->at;
- assert (end - lexer->at <= lexer->remaining);
- lexer->remaining -= (end - lexer->at);
- lexer->at = end;
- return true;
- }
-
- p11_lexer_msg (lexer, "invalid pem block: no ending line");
- if (failed)
- *failed = true;
- return false;
- }
-
- line = lexer->at;
- end = memchr (lexer->at, '\n', lexer->remaining);
- if (end == NULL) {
- end = lexer->at + lexer->remaining;
- lexer->remaining = 0;
- lexer->at = end;
- } else {
- assert ((end - lexer->at) + 1 <= lexer->remaining);
- lexer->remaining -= (end - lexer->at) + 1;
- lexer->at = end + 1;
- }
-
- /* Strip whitespace from line */
- while (line != end && isspace (line[0]))
- ++line;
- while (line != end && isspace (*(end - 1)))
- --end;
-
- /* Empty lines / comments at start */
- if (line == end || line[0] == '#')
- continue;
-
- /* Is the the a section ? */
- if (line[0] == '[') {
- if (*(end - 1) != ']') {
- part = strndup (line, end - line);
- p11_lexer_msg (lexer, "invalid section header: missing braces");
- free (part);
- if (failed)
- *failed = true;
- return false;
- }
-
- lexer->tok_type = TOK_SECTION;
- lexer->tok.section.name = strndup (line + 1, (end - line) - 2);
- return_val_if_fail (lexer->tok.section.name != NULL, false);
- return true;
- }
-
- /* Look for the break between name: value on the same line */
- colon = memchr (line, ':', end - line);
- if (!colon) {
- part = strndup (line, end - line);
- p11_lexer_msg (lexer, "invalid field line: no colon");
- free (part);
- if (failed)
- *failed = true;
- return false;
- }
-
- /* Strip whitespace from name and value */
- value = colon + 1;
- while (value != end && isspace (value[0]))
- ++value;
- while (line != colon && isspace (*(colon - 1)))
- --colon;
-
- lexer->tok_type = TOK_FIELD;
- lexer->tok.field.name = strndup (line, colon - line);
- lexer->tok.field.value = strndup (value, end - value);
- return_val_if_fail (lexer->tok.field.name && lexer->tok.field.value, false);
- return true;
- }
-
- return false;
-}
-
-void
-p11_lexer_done (p11_lexer *lexer)
-{
- return_if_fail (lexer != NULL);
- clear_state (lexer);
- free (lexer->filename);
- memset (lexer, 0, sizeof (p11_lexer));
-}
-
-void
-p11_lexer_msg (p11_lexer *lexer,
- const char *msg)
-{
- return_if_fail (lexer != NULL);
-
- if (lexer->complained)
- return;
-
- switch (lexer->tok_type) {
- case TOK_FIELD:
- p11_message ("%s: %s: %s", lexer->filename,
- lexer->tok.field.name, msg);
- break;
- case TOK_SECTION:
- p11_message ("%s: [%s]: %s", lexer->filename,
- lexer->tok.section.name, msg);
- break;
- case TOK_PEM:
- p11_message ("%s: BEGIN ...: %s", lexer->filename, msg);
- break;
- default:
- p11_message ("%s: %s", lexer->filename, msg);
- break;
- }
-
- lexer->complained = true;
-}
diff --git a/common/lexer.h b/common/lexer.h
deleted file mode 100644
index 9daf296..0000000
--- a/common/lexer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2005 Stefan Walter
- * Copyright (c) 2011 Collabora Ltd.
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef P11_LEXER_H__
-#define P11_LEXER_H__
-
-#include "compat.h"
-
-enum {
- TOK_EOF = 0,
- TOK_SECTION = 1,
- TOK_FIELD,
- TOK_PEM,
-};
-
-typedef struct {
- char *filename;
- const char *at;
- int remaining;
- int complained;
-
- int tok_type;
- union {
- struct {
- char *name;
- } section;
- struct {
- char *name;
- char *value;
- } field;
- struct {
- const char *begin;
- size_t length;
- } pem;
- } tok;
-} p11_lexer;
-
-void p11_lexer_init (p11_lexer *lexer,
- const char *filename,
- const char *data,
- size_t length);
-
-bool p11_lexer_next (p11_lexer *lexer,
- bool *failed);
-
-void p11_lexer_done (p11_lexer *lexer);
-
-void p11_lexer_msg (p11_lexer *lexer,
- const char *msg);
-
-#endif /* P11_LEXER_H__ */
diff --git a/common/library.c b/common/library.c
deleted file mode 100644
index 502ea98..0000000
--- a/common/library.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd
- * Copyright (c) 2012 Stef Walter
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stef@thewalter.net>
- */
-
-#include "config.h"
-
-#include "compat.h"
-#define P11_DEBUG_FLAG P11_DEBUG_LIB
-#include "debug.h"
-#include "library.h"
-#include "message.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#define P11_MESSAGE_MAX 512
-
-typedef struct {
- char message[P11_MESSAGE_MAX];
-} p11_local;
-
-static p11_local * _p11_library_get_thread_local (void);
-
-p11_mutex_t p11_library_mutex;
-
-#ifdef OS_UNIX
-pthread_once_t p11_library_once = PTHREAD_ONCE_INIT;
-#endif
-
-unsigned int p11_forkid = 1;
-
-static char *
-thread_local_message (void)
-{
- p11_local *local;
- local = _p11_library_get_thread_local ();
- return local ? local->message : NULL;
-}
-
-static char *
-dont_store_message (void)
-{
- return NULL;
-}
-
-static void
-uninit_common (void)
-{
- p11_debug ("uninitializing library");
-}
-
-#ifdef OS_UNIX
-
-static pthread_key_t thread_local = 0;
-
-static p11_local *
-_p11_library_get_thread_local (void)
-{
- p11_local *local;
-
- p11_library_init_once ();
-
- local = pthread_getspecific (thread_local);
- if (local == NULL) {
- local = calloc (1, sizeof (p11_local));
- pthread_setspecific (thread_local, local);
- }
-
- return local;
-}
-
-static void
-count_forks (void)
-{
- /* Thread safe, executed in child, one thread exists */
- p11_forkid++;
-}
-
-void
-p11_library_init_impl (void)
-{
- p11_debug_init ();
- p11_debug ("initializing library");
- p11_mutex_init (&p11_library_mutex);
- pthread_key_create (&thread_local, free);
- p11_message_storage = thread_local_message;
-
- pthread_atfork (NULL, NULL, count_forks);
-}
-
-void
-p11_library_init (void)
-{
- p11_library_init_once ();
-}
-
-void
-p11_library_uninit (void)
-{
- uninit_common ();
-
- /* Some cleanup to pacify valgrind */
- free (pthread_getspecific (thread_local));
- pthread_setspecific (thread_local, NULL);
-
- p11_message_storage = dont_store_message;
- pthread_key_delete (thread_local);
- p11_mutex_uninit (&p11_library_mutex);
-}
-
-#endif /* OS_UNIX */
-
-#ifdef OS_WIN32
-
-static DWORD thread_local = TLS_OUT_OF_INDEXES;
-
-BOOL WINAPI DllMain (HINSTANCE, DWORD, LPVOID);
-
-static p11_local *
-_p11_library_get_thread_local (void)
-{
- LPVOID data;
-
- if (thread_local == TLS_OUT_OF_INDEXES)
- return NULL;
-
- data = TlsGetValue (thread_local);
- if (data == NULL) {
- data = LocalAlloc (LPTR, sizeof (p11_local));
- TlsSetValue (thread_local, data);
- }
-
- return (p11_local *)data;
-}
-
-void
-p11_library_init (void)
-{
- p11_debug_init ();
- p11_debug ("initializing library");
- p11_mutex_init (&p11_library_mutex);
- thread_local = TlsAlloc ();
- if (thread_local == TLS_OUT_OF_INDEXES)
- p11_debug ("couldn't setup tls");
- else
- p11_message_storage = thread_local_message;
-}
-
-void
-p11_library_thread_cleanup (void)
-{
- p11_local *local;
- if (thread_local != TLS_OUT_OF_INDEXES) {
- p11_debug ("thread stopped, freeing tls");
- local = TlsGetValue (thread_local);
- LocalFree (local);
- }
-}
-
-void
-p11_library_uninit (void)
-{
- LPVOID data;
-
- uninit_common ();
-
- if (thread_local != TLS_OUT_OF_INDEXES) {
- p11_message_storage = dont_store_message;
- data = TlsGetValue (thread_local);
- LocalFree (data);
- TlsFree (thread_local);
- }
- p11_mutex_uninit (&p11_library_mutex);
-}
-
-#endif /* OS_WIN32 */
diff --git a/common/library.h b/common/library.h
deleted file mode 100644
index f87494d..0000000
--- a/common/library.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stef@memberwebs.com>
- */
-
-#ifndef P11_LIBRARY_H_
-#define P11_LIBRARY_H_
-
-#include "config.h"
-#include "compat.h"
-
-#include <sys/types.h>
-
-extern p11_mutex_t p11_library_mutex;
-
-extern unsigned int p11_forkid;
-
-#define p11_lock() p11_mutex_lock (&p11_library_mutex);
-
-#define p11_unlock() p11_mutex_unlock (&p11_library_mutex);
-
-#ifdef OS_WIN32
-
-/* No implementation, because done by DllMain */
-#define p11_library_init_once()
-
-#else /* !OS_WIN32 */
-extern pthread_once_t p11_library_once;
-
-#define p11_library_init_once() \
- pthread_once (&p11_library_once, p11_library_init_impl);
-
-void p11_library_init_impl (void);
-
-#endif /* !OS_WIN32 */
-
-void p11_library_init (void);
-
-void p11_library_thread_cleanup (void);
-
-void p11_library_uninit (void);
-
-#endif /* P11_LIBRARY_H_ */
diff --git a/common/message.c b/common/message.c
deleted file mode 100644
index 35f2764..0000000
--- a/common/message.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd
- * Copyright (c) 2012 Stef Walter
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stef@thewalter.net>
- */
-
-#include "config.h"
-
-/*
- * Oh god. glibc is nasty. Changes behavior and definitions of POSIX
- * functions to completely different signatures depending on defines
- */
-#define _POSIX_C_SOURCE 200112L
-
-#include "compat.h"
-#define P11_DEBUG_FLAG P11_DEBUG_LIB
-#include "debug.h"
-#include "message.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-static bool print_messages = true;
-
-static char *
-default_message_storage (void)
-{
- static char message[P11_MESSAGE_MAX] = { 0, };
- return message;
-}
-
-/* Function pointer declared in message.h as extern */
-char * (* p11_message_storage) (void) = default_message_storage;
-
-void
-p11_message_store (const char* msg,
- size_t length)
-{
- char *buffer;
-
- /*
- * p11_message_storage() is called to get a storage location for
- * the last message. It defaults to a globally allocated buffer
- * but is overridden in library.c with a function that returns
- * per thread buffers.
- *
- * The returned value is P11_MESSAGE_MAX bytes long
- */
- buffer = p11_message_storage ();
-
- if (length > P11_MESSAGE_MAX - 1)
- length = P11_MESSAGE_MAX - 1;
-
- if (buffer != NULL) {
- memcpy (buffer, msg, length);
- buffer[length] = 0;
- }
-}
-
-void
-p11_message_err (int errnum,
- const char* msg,
- ...)
-{
- char buffer[P11_MESSAGE_MAX];
- char strerr[P11_MESSAGE_MAX];
- va_list va;
- size_t length;
-
- va_start (va, msg);
- length = vsnprintf (buffer, P11_MESSAGE_MAX - 1, msg, va);
- va_end (va);
-
- /* Was it truncated? */
- if (length > P11_MESSAGE_MAX - 1)
- length = P11_MESSAGE_MAX - 1;
- buffer[length] = 0;
-
- strncpy (strerr, "Unknown error", sizeof (strerr));
- strerror_r (errnum, strerr, sizeof (strerr));
- strerr[P11_MESSAGE_MAX - 1] = 0;
-
- p11_message ("%s: %s", buffer, strerr);
-}
-
-void
-p11_message (const char* msg,
- ...)
-{
- char buffer[P11_MESSAGE_MAX];
- va_list va;
- size_t length;
-
- va_start (va, msg);
- length = vsnprintf (buffer, P11_MESSAGE_MAX - 1, msg, va);
- va_end (va);
-
- /* Was it truncated? */
- if (length > P11_MESSAGE_MAX - 1)
- length = P11_MESSAGE_MAX - 1;
- buffer[length] = 0;
-
- /* If printing is not disabled, just print out */
- if (print_messages)
- fprintf (stderr, "p11-kit: %s\n", buffer);
- else
- p11_debug_message (P11_DEBUG_LIB, "message: %s", buffer);
- p11_message_store (buffer, length);
-}
-
-void
-p11_message_quiet (void)
-{
- print_messages = false;
-}
-
-void
-p11_message_loud (void)
-{
- print_messages = true;
-}
-
-const char *
-p11_message_last (void)
-{
- char *buffer;
- buffer = p11_message_storage ();
- return buffer && buffer[0] ? buffer : NULL;
-}
-
-void
-p11_message_clear (void)
-{
- char *buffer;
- buffer = p11_message_storage ();
- if (buffer != NULL)
- buffer[0] = 0;
-}
diff --git a/common/message.h b/common/message.h
deleted file mode 100644
index 3fe86df..0000000
--- a/common/message.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2011 Collabora Ltd
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stef@memberwebs.com>
- */
-
-#ifndef P11_MESSAGE_H_
-#define P11_MESSAGE_H_
-
-#include "compat.h"
-
-#include <sys/types.h>
-
-#define P11_MESSAGE_MAX 512
-
-extern char * (* p11_message_storage) (void);
-
-void p11_message (const char* msg,
- ...) GNUC_PRINTF (1, 2);
-
-void p11_message_err (int errnum,
- const char* msg,
- ...) GNUC_PRINTF (2, 3);
-
-void p11_message_store (const char* msg,
- size_t length);
-
-const char * p11_message_last (void);
-
-void p11_message_clear (void);
-
-void p11_message_quiet (void);
-
-void p11_message_loud (void);
-
-#endif /* P11_MESSAGE_H_ */
diff --git a/common/mock.c b/common/mock.c
deleted file mode 100644
index c3f2503..0000000
--- a/common/mock.c
+++ /dev/null
@@ -1,3975 +0,0 @@
-/*
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-
-#include "debug.h"
-#define CRYPTOKI_EXPORTS
-#include "pkcs11.h"
-#include "message.h"
-
-#include "mock.h"
-
-#include "attrs.h"
-#define P11_DEBUG_FLAG P11_DEBUG_LIB
-#include "debug.h"
-#include "dict.h"
-#include "array.h"
-#include "library.h"
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/* -------------------------------------------------------------------
- * GLOBALS and SUPPORT STUFF
- */
-
-/* Various mutexes */
-static p11_mutex_t init_mutex;
-
-/* Whether we've been initialized, and on what process id it happened */
-static bool pkcs11_initialized = false;
-static pid_t pkcs11_initialized_pid = 0;
-
-static CK_UTF8CHAR *the_pin = NULL;
-static CK_ULONG n_the_pin = 0;
-
-static bool logged_in = false;
-static CK_USER_TYPE the_user_type = 0;
-
-typedef struct _Session {
- CK_SESSION_HANDLE handle;
- p11_dict *objects;
- CK_SESSION_INFO info;
-
- /* For find operations */
- bool finding;
- p11_array *matches;
-
- bool want_context_login;
-
- /* For encrypt, decrypt operations */
- CK_OBJECT_HANDLE crypto_key;
- CK_ATTRIBUTE_TYPE crypto_method;
- CK_MECHANISM_TYPE crypto_mechanism;
-
- /* For sign, verify, digest, CKM_MOCK_COUNT */
- CK_MECHANISM_TYPE hash_mechanism;
- CK_ATTRIBUTE_TYPE hash_method;
- CK_OBJECT_HANDLE hash_key;
- CK_ULONG hash_count;
-
- /* For 'signing' with CKM_MOCK_PREFIX */
- CK_BYTE sign_prefix[128];
- CK_ULONG n_sign_prefix;
-
- /* The random seed */
- CK_BYTE random_seed[128];
- CK_ULONG random_seed_len;
-} Session;
-
-static unsigned int unique_identifier = 100;
-static p11_dict *the_sessions = NULL;
-static p11_dict *the_objects = NULL;
-
-#define SIGNED_PREFIX "signed-prefix:"
-
-#define handle_to_pointer(handle) \
- ((void *)(size_t)(handle))
-
-#define pointer_to_handle(pointer) \
- ((CK_ULONG)(size_t)(pointer))
-
-static void
-free_session (void *data)
-{
- Session *sess = (Session *)data;
- if (sess) {
- p11_dict_free (sess->objects);
- p11_array_free (sess->matches);
- }
- free (sess);
-}
-
-static CK_RV
-lookup_object (Session *sess,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE **attrs,
- p11_dict **table)
-{
- CK_BBOOL priv;
-
- *attrs = p11_dict_get (the_objects, handle_to_pointer (object));
- if (*attrs) {
- if (table)
- *table = the_objects;
- } else {
- *attrs = p11_dict_get (sess->objects, handle_to_pointer (object));
- if (*attrs) {
- if (table)
- *table = sess->objects;
- }
- }
-
- if (!*attrs)
- return CKR_OBJECT_HANDLE_INVALID;
- else if (!logged_in && p11_attrs_find_bool (*attrs, CKA_PRIVATE, &priv) && priv)
- return CKR_USER_NOT_LOGGED_IN;
-
- return CKR_OK;
-}
-
-void
-mock_module_add_object (CK_SLOT_ID slot_id,
- const CK_ATTRIBUTE *attrs)
-{
- CK_ATTRIBUTE *copy;
-
- return_if_fail (slot_id == MOCK_SLOT_ONE_ID);
- return_if_fail (attrs != NULL);
-
- copy = p11_attrs_dup (attrs);
- return_if_fail (copy != NULL);
-
- mock_module_take_object (slot_id, copy);
-}
-
-void
-mock_module_take_object (CK_SLOT_ID slot_id,
- CK_ATTRIBUTE *attrs)
-{
- CK_OBJECT_HANDLE object;
-
- return_if_fail (slot_id == MOCK_SLOT_ONE_ID);
- return_if_fail (attrs != NULL);
-
- object = ++unique_identifier;
- if (!p11_dict_set (the_objects, handle_to_pointer (object), attrs))
- return_if_reached ();
-}
-
-static void
-module_reset_objects (CK_SLOT_ID slot_id)
-{
- return_if_fail (slot_id == MOCK_SLOT_ONE_ID);
-
- if (!the_objects) {
- the_objects = p11_dict_new (p11_dict_direct_hash,
- p11_dict_direct_equal,
- NULL, p11_attrs_free);
- return_if_fail (the_objects != NULL);
- }
-
- p11_dict_clear (the_objects);
-
- /* Our token object */
- {
- CK_OBJECT_CLASS klass = CKO_DATA;
- char *label = "TEST LABEL";
- CK_ATTRIBUTE attrs[] = {
- { CKA_CLASS, &klass, sizeof (klass) },
- { CKA_LABEL, label, strlen (label) },
- { CKA_INVALID, NULL, 0 },
- };
- p11_dict_set (the_objects, handle_to_pointer (MOCK_DATA_OBJECT), p11_attrs_dup (attrs));
- }
-
- /* Private capitalize key */
- {
- CK_OBJECT_CLASS klass = CKO_PRIVATE_KEY;
- char *label = "Private Capitalize Key";
- char *value = "value";
- CK_MECHANISM_TYPE type = CKM_MOCK_CAPITALIZE;
- CK_BBOOL btrue = CK_TRUE;
- CK_ATTRIBUTE attrs[] = {
- { CKA_CLASS, &klass, sizeof (klass) },
- { CKA_LABEL, label, strlen (label) },
- { CKA_ALLOWED_MECHANISMS, &type, sizeof (type) },
- { CKA_DECRYPT, &btrue, sizeof (btrue) },
- { CKA_PRIVATE, &btrue, sizeof (btrue) },
- { CKA_WRAP, &btrue, sizeof (btrue) },
- { CKA_UNWRAP, &btrue, sizeof (btrue) },
- { CKA_DERIVE, &btrue, sizeof (btrue) },
- { CKA_VALUE, value, strlen (value) },
- { CKA_INVALID, NULL, 0 },
- };
- p11_dict_set (the_objects, handle_to_pointer (MOCK_PRIVATE_KEY_CAPITALIZE), p11_attrs_dup (attrs));
-
- }
-
- {
- CK_OBJECT_CLASS klass = CKO_PUBLIC_KEY;
- char *label = "Public Capitalize Key";
- char *value = "value";
- CK_MECHANISM_TYPE type = CKM_MOCK_CAPITALIZE;
- CK_BBOOL btrue = CK_TRUE;
- CK_BBOOL bfalse = CK_FALSE;
- CK_ATTRIBUTE attrs[] = {
- { CKA_CLASS, &klass, sizeof (klass) },
- { CKA_LABEL, label, strlen (label) },
- { CKA_ALLOWED_MECHANISMS, &type, sizeof (type) },
- { CKA_ENCRYPT, &btrue, sizeof (btrue) },
- { CKA_PRIVATE, &bfalse, sizeof (bfalse) },
- { CKA_VALUE, value, strlen (value) },
- { CKA_INVALID, NULL, 0 },
- };
- p11_dict_set (the_objects, handle_to_pointer (MOCK_PUBLIC_KEY_CAPITALIZE), p11_attrs_dup (attrs));
-
- }
-
- {
- CK_OBJECT_CLASS klass = CKO_PRIVATE_KEY;
- char *label = "Private prefix key";
- char *value = "value";
- CK_MECHANISM_TYPE type = CKM_MOCK_PREFIX;
- CK_BBOOL btrue = CK_TRUE;
- CK_ATTRIBUTE attrs[] = {
- { CKA_CLASS, &klass, sizeof (klass) },
- { CKA_LABEL, label, strlen (label) },
- { CKA_ALLOWED_MECHANISMS, &type, sizeof (type) },
- { CKA_SIGN, &btrue, sizeof (btrue) },
- { CKA_PRIVATE, &btrue, sizeof (btrue) },
- { CKA_ALWAYS_AUTHENTICATE, &btrue, sizeof (btrue) },
- { CKA_VALUE, value, strlen (value) },
- { CKA_INVALID, NULL, 0 },
- };
- p11_dict_set (the_objects, handle_to_pointer (MOCK_PRIVATE_KEY_PREFIX), p11_attrs_dup (attrs));
-
- }
-
- {
- CK_OBJECT_CLASS klass = CKO_PUBLIC_KEY;
- char *label = "Public prefix key";
- char *value = "value";
- CK_MECHANISM_TYPE type = CKM_MOCK_PREFIX;
- CK_BBOOL btrue = CK_TRUE;
- CK_BBOOL bfalse = CK_FALSE;
- CK_ATTRIBUTE attrs[] = {
- { CKA_CLASS, &klass, sizeof (klass) },
- { CKA_LABEL, label, strlen (label) },
- { CKA_ALLOWED_MECHANISMS, &type, sizeof (type) },
- { CKA_VERIFY, &btrue, sizeof (btrue) },
- { CKA_PRIVATE, &bfalse, sizeof (bfalse) },
- { CKA_ALWAYS_AUTHENTICATE, &btrue, sizeof (btrue) },
- { CKA_VALUE, value, strlen (value) },
- { CKA_INVALID, NULL, 0 },
- };
- p11_dict_set (the_objects, handle_to_pointer (MOCK_PUBLIC_KEY_PREFIX), p11_attrs_dup (attrs));
-
- }
-}
-
-static void
-module_finalize (void)
-{
- p11_mutex_lock (&init_mutex);
-
- /* This should stop all other calls in */
- pkcs11_initialized = false;
- pkcs11_initialized_pid = 0;
-
- if (the_objects)
- p11_dict_free (the_objects);
- the_objects = NULL;
-
- if (the_sessions)
- p11_dict_free (the_sessions);
- the_sessions = NULL;
- logged_in = false;
- the_user_type = 0;
-
- free (the_pin);
- the_pin = NULL;
- n_the_pin = 0;
-
- p11_mutex_unlock (&init_mutex);
-}
-
-bool
-mock_module_initialized (void)
-{
- return pkcs11_initialized;
-}
-void
-mock_module_reset (void)
-{
- module_finalize ();
- module_reset_objects (MOCK_SLOT_ONE_ID);
-
-}
-
-void
-mock_module_enumerate_objects (CK_SESSION_HANDLE handle,
- mock_enumerator func,
- void *user_data)
-{
- p11_dictiter iter;
- void *key;
- void *value;
- Session *sess;
-
- assert (the_objects != NULL);
- assert (func != NULL);
-
- /* Token objects */
- p11_dict_iterate (the_objects, &iter);
- while (p11_dict_next (&iter, &key, &value)) {
- if (!(func) (pointer_to_handle (key), value, user_data))
- return;
- }
-
- /* session objects */
- if (handle) {
- sess = p11_dict_get (the_sessions, handle_to_pointer (handle));
- if (sess) {
- p11_dict_iterate (sess->objects, &iter);
- while (p11_dict_next (&iter, &key, &value)) {
- if (!(func) (pointer_to_handle (key), value, user_data))
- return;
- }
- }
- }
-}
-
-/* -------------------------------------------------------------------
- * INITIALIZATION and 'GLOBAL' CALLS
- */
-
-CK_RV
-mock_C_Initialize (CK_VOID_PTR init_args)
-{
- CK_C_INITIALIZE_ARGS_PTR args = NULL;
- CK_RV ret = CKR_OK;
- pid_t pid;
-
- p11_mutex_lock (&init_mutex);
-
- if (init_args != NULL) {
- int supplied_ok;
-
- /* pReserved must be NULL */
- args = init_args;
-
- /* ALL supplied function pointers need to have the value either NULL or non-NULL. */
- supplied_ok = (args->CreateMutex == NULL && args->DestroyMutex == NULL &&
- args->LockMutex == NULL && args->UnlockMutex == NULL) ||
- (args->CreateMutex != NULL && args->DestroyMutex != NULL &&
- args->LockMutex != NULL && args->UnlockMutex != NULL);
- if (!supplied_ok) {
- p11_debug_precond ("invalid set of mutex calls supplied\n");
- ret = CKR_ARGUMENTS_BAD;
- goto done;
- }
-
- /*
- * When the CKF_OS_LOCKING_OK flag isn't set return an error.
- * We must be able to use our pthread functionality.
- */
- if (!(args->flags & CKF_OS_LOCKING_OK)) {
- p11_debug_precond ("can't do without os locking\n");
- ret = CKR_CANT_LOCK;
- goto done;
- }
- }
-
- pid = getpid ();
- if (pkcs11_initialized) {
-
- /* This process has called C_Initialize already */
- if (pid == pkcs11_initialized_pid) {
- p11_debug_precond ("p11-kit: C_Initialize called twice for same process\n");
- ret = CKR_CRYPTOKI_ALREADY_INITIALIZED;
- goto done;
- }
- }
-
- /* We store CK_ULONG as pointers here, so verify that they fit */
- assert (sizeof (CK_ULONG) <= sizeof (void *));
-
- free (the_pin);
- the_pin = (CK_UTF8CHAR_PTR)strdup ("booo");
- n_the_pin = 4;
-
- if (the_sessions)
- p11_dict_free (the_sessions);
- the_sessions = p11_dict_new (p11_dict_direct_hash,
- p11_dict_direct_equal,
- NULL, free_session);
-
- module_reset_objects (MOCK_SLOT_ONE_ID);
-
-done:
- /* Mark us as officially initialized */
- if (ret == CKR_OK) {
- pkcs11_initialized = true;
- pkcs11_initialized_pid = pid;
- } else if (ret != CKR_CRYPTOKI_ALREADY_INITIALIZED) {
- pkcs11_initialized = false;
- pkcs11_initialized_pid = 0;
- }
-
- p11_mutex_unlock (&init_mutex);
-
- return ret;
-}
-
-CK_RV
-mock_X_Initialize (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR init_args)
-{
- return mock_C_Initialize (init_args);
-}
-
-CK_RV
-mock_C_Initialize__fails (CK_VOID_PTR init_args)
-{
- return CKR_FUNCTION_FAILED;
-}
-
-CK_RV
-mock_X_Initialize__fails (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR init_args)
-{
- return mock_C_Initialize__fails (init_args);
-}
-
-CK_RV
-mock_C_Finalize (CK_VOID_PTR reserved)
-{
- return_val_if_fail (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- return_val_if_fail (reserved == NULL, CKR_ARGUMENTS_BAD);
-
- module_finalize ();
- return CKR_OK;
-}
-
-CK_RV
-mock_X_Finalize (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR reserved)
-{
- return mock_C_Finalize (reserved);
-}
-
-CK_RV
-mock_C_GetInfo (CK_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- memcpy (info, &MOCK_INFO, sizeof (*info));
- return CKR_OK;
-}
-
-CK_RV
-mock_X_GetInfo (CK_X_FUNCTION_LIST *self,
- CK_INFO_PTR info)
-{
- return mock_C_GetInfo (info);
-}
-
-CK_RV
-mock_C_GetFunctionList_not_supported (CK_FUNCTION_LIST_PTR_PTR list)
-{
- /* This would be a strange call to receive, should be overridden */
- return_val_if_reached (CKR_FUNCTION_NOT_SUPPORTED);
-}
-
-CK_RV
-mock_C_GetSlotList (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count)
-{
- CK_ULONG num;
-
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- num = token_present ? 1 : 2;
-
- /* Application only wants to know the number of slots. */
- if (slot_list == NULL) {
- *count = num;
- return CKR_OK;
- }
-
- if (*count < num)
- return_val_if_reached (CKR_BUFFER_TOO_SMALL);
-
- *count = num;
- slot_list[0] = MOCK_SLOT_ONE_ID;
- if (!token_present)
- slot_list[1] = MOCK_SLOT_TWO_ID;
-
- return CKR_OK;
-
-}
-
-CK_RV
-mock_C_GetSlotList__no_tokens (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- /* No tokens */
- *count = 0;
- return CKR_OK;
-}
-
-CK_RV
-mock_X_GetSlotList__no_tokens (CK_X_FUNCTION_LIST *self,
- CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count)
-{
- return mock_C_GetSlotList__no_tokens (token_present,
- slot_list,
- count);
-;
-}
-
-/* Update mock-module.h URIs when updating this */
-
-static const CK_SLOT_INFO MOCK_INFO_ONE = {
- "TEST SLOT ",
- "TEST MANUFACTURER ",
- CKF_TOKEN_PRESENT | CKF_REMOVABLE_DEVICE,
- { 55, 155 },
- { 65, 165 },
-};
-
-/* Update mock-module.h URIs when updating this */
-
-static const CK_SLOT_INFO MOCK_INFO_TWO = {
- "TEST SLOT ",
- "TEST MANUFACTURER ",
- CKF_REMOVABLE_DEVICE,
- { 55, 155 },
- { 65, 165 },
-};
-
-CK_RV
-mock_C_GetSlotInfo (CK_SLOT_ID slot_id,
- CK_SLOT_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_ONE_ID) {
- memcpy (info, &MOCK_INFO_ONE, sizeof (*info));
- return CKR_OK;
- } else if (slot_id == MOCK_SLOT_TWO_ID) {
- memcpy (info, &MOCK_INFO_TWO, sizeof (*info));
- return CKR_OK;
- } else {
- return CKR_SLOT_ID_INVALID;
- }
-}
-
-CK_RV
-mock_C_GetSlotList__fail_first (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count)
-{
- return CKR_VENDOR_DEFINED;
-}
-
-CK_RV
-mock_C_GetSlotList__fail_late (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count)
-{
- if (!slot_list)
- return mock_C_GetSlotList (token_present, slot_list, count);
- return CKR_VENDOR_DEFINED;
-}
-
-CK_RV
-mock_C_GetSlotInfo__invalid_slotid (CK_SLOT_ID id,
- CK_SLOT_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_GetSlotInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID id,
- CK_SLOT_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-/* Update gck-mock.h URIs when updating this */
-
-static const CK_TOKEN_INFO MOCK_TOKEN_ONE = {
- "TEST LABEL ",
- "TEST MANUFACTURER ",
- "TEST MODEL ",
- "TEST SERIAL ",
- CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | CKF_CLOCK_ON_TOKEN | CKF_TOKEN_INITIALIZED,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- { 75, 175 },
- { 85, 185 },
- { '1', '9', '9', '9', '0', '5', '2', '5', '0', '9', '1', '9', '5', '9', '0', '0' }
-};
-
-CK_RV
-mock_C_GetTokenInfo (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info)
-{
- return_val_if_fail (info != NULL, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_ONE_ID) {
- memcpy (info, &MOCK_TOKEN_ONE, sizeof (*info));
- return CKR_OK;
- } else if (slot_id == MOCK_SLOT_TWO_ID) {
- return CKR_TOKEN_NOT_PRESENT;
- } else {
- return CKR_SLOT_ID_INVALID;
- }
-}
-
-CK_RV
-mock_C_GetTokenInfo__invalid_slotid (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_GetTokenInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-/*
- * TWO mechanisms:
- * CKM_MOCK_CAPITALIZE
- * CKM_MOCK_PREFIX
- */
-
-CK_RV
-mock_C_GetMechanismList (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count != NULL, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_TWO_ID)
- return CKR_TOKEN_NOT_PRESENT;
- else if (slot_id != MOCK_SLOT_ONE_ID)
- return CKR_SLOT_ID_INVALID;
-
- /* Application only wants to know the number of slots. */
- if (mechanism_list == NULL) {
- *count = 2;
- return CKR_OK;
- }
-
- if (*count < 2)
- return_val_if_reached (CKR_BUFFER_TOO_SMALL);
-
- mechanism_list[0] = CKM_MOCK_CAPITALIZE;
- mechanism_list[1] = CKM_MOCK_PREFIX;
- *count = 2;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GetTokenInfo__not_initialized (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info)
-{
- CK_RV rv;
-
- rv = mock_C_GetTokenInfo (slot_id, info);
- if (rv == CKR_OK)
- info->flags &= ~ CKF_TOKEN_INITIALIZED;
-
- return rv;
-}
-
-/*
- * TWO mechanisms:
- * CKM_MOCK_CAPITALIZE
- * CKM_MOCK_PREFIX
- */
-
-CK_RV
-mock_C_GetMechanismList__invalid_slotid (CK_SLOT_ID id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_GetMechanismList__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-static const CK_MECHANISM_INFO MOCK_MECH_CAPITALIZE = {
- 512, 4096, CKF_ENCRYPT | CKF_DECRYPT
-};
-
-static const CK_MECHANISM_INFO MOCK_MECH_PREFIX = {
- 2048, 2048, CKF_SIGN | CKF_VERIFY
-};
-
-CK_RV
-mock_C_GetMechanismInfo (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_TWO_ID)
- return CKR_TOKEN_NOT_PRESENT;
- else if (slot_id != MOCK_SLOT_ONE_ID)
- return CKR_SLOT_ID_INVALID;
-
- if (type == CKM_MOCK_CAPITALIZE) {
- memcpy (info, &MOCK_MECH_CAPITALIZE, sizeof (*info));
- return CKR_OK;
- } else if (type == CKM_MOCK_PREFIX) {
- memcpy (info, &MOCK_MECH_PREFIX, sizeof (*info));
- return CKR_OK;
- } else {
- return CKR_MECHANISM_INVALID;
- }
-}
-
-CK_RV
-mock_C_GetMechanismInfo__invalid_slotid (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_GetMechanismInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_C_InitToken__specific_args (CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label)
-{
- return_val_if_fail (pin != NULL, CKR_ARGUMENTS_BAD);
- return_val_if_fail (label != NULL, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_TWO_ID)
- return CKR_TOKEN_NOT_PRESENT;
- else if (slot_id != MOCK_SLOT_ONE_ID)
- return CKR_SLOT_ID_INVALID;
-
- if (strlen ("TEST PIN") != pin_len ||
- strncmp ((char *)pin, "TEST PIN", pin_len) != 0)
- return CKR_PIN_INVALID;
- if (strcmp ((char *)label, "TEST LABEL") != 0)
- return CKR_ARGUMENTS_BAD;
-
- free (the_pin);
- the_pin = memdup (pin, pin_len);
- return_val_if_fail (the_pin != NULL, CKR_HOST_MEMORY);
- n_the_pin = pin_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_InitToken__invalid_slotid (CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label)
-{
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_InitToken__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label)
-{
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_C_WaitForSlotEvent (CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved)
-{
- return_val_if_fail (slot, CKR_ARGUMENTS_BAD);
-
- if (flags & CKF_DONT_BLOCK)
- return CKR_NO_EVENT;
-
- *slot = MOCK_SLOT_TWO_ID;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_WaitForSlotEvent__no_event (CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved)
-{
- return_val_if_fail (slot, CKR_ARGUMENTS_BAD);
-
- return CKR_NO_EVENT;
-}
-
-CK_RV
-mock_X_WaitForSlotEvent__no_event (CK_X_FUNCTION_LIST *self,
- CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved)
-{
- return_val_if_fail (slot, CKR_ARGUMENTS_BAD);
-
- return CKR_NO_EVENT;
-}
-
-CK_RV
-mock_C_OpenSession (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session)
-{
- Session *sess;
-
- return_val_if_fail (session, CKR_ARGUMENTS_BAD);
-
- if (slot_id == MOCK_SLOT_TWO_ID)
- return CKR_TOKEN_NOT_PRESENT;
- else if (slot_id != MOCK_SLOT_ONE_ID)
- return CKR_SLOT_ID_INVALID;
- if ((flags & CKF_SERIAL_SESSION) != CKF_SERIAL_SESSION)
- return CKR_SESSION_PARALLEL_NOT_SUPPORTED;
-
- sess = calloc (1, sizeof (Session));
- sess->handle = ++unique_identifier;
- sess->info.flags = flags;
- sess->info.slotID = slot_id;
- sess->info.state = 0;
- sess->info.ulDeviceError = 1414;
- sess->objects = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal,
- NULL, p11_attrs_free);
- *session = sess->handle;
-
- memcpy (sess->random_seed, "random", 6);
- sess->random_seed_len = 6;
-
- p11_dict_set (the_sessions, handle_to_pointer (sess->handle), sess);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_OpenSession__invalid_slotid (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session)
-{
- return_val_if_fail (session, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_OpenSession__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session)
-{
- return_val_if_fail (session, CKR_ARGUMENTS_BAD);
-
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_C_OpenSession__fails (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session)
-{
- return_val_if_fail (session, CKR_ARGUMENTS_BAD);
-
- return CKR_DEVICE_ERROR;
-}
-
-CK_RV
-mock_C_CloseSession (CK_SESSION_HANDLE session)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- p11_dict_remove (the_sessions, handle_to_pointer (session));
- return CKR_OK;
-}
-
-CK_RV
-mock_C_CloseSession__invalid_handle (CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_CloseSession__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_CloseAllSessions (CK_SLOT_ID slot_id)
-{
- if (slot_id == MOCK_SLOT_TWO_ID)
- return CKR_TOKEN_NOT_PRESENT;
- else if (slot_id != MOCK_SLOT_ONE_ID)
- return CKR_SLOT_ID_INVALID;
-
- p11_dict_clear (the_sessions);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_CloseAllSessions__invalid_slotid (CK_SLOT_ID slot_id)
-{
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_X_CloseAllSessions__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id)
-{
- return CKR_SLOT_ID_INVALID;
-}
-
-CK_RV
-mock_C_GetFunctionStatus (CK_SESSION_HANDLE session)
-{
- if (!p11_dict_get (the_sessions, handle_to_pointer (session)))
- return CKR_SESSION_HANDLE_INVALID;
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-
-CK_RV
-mock_C_GetFunctionStatus__not_parallel (CK_SESSION_HANDLE session)
-{
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-
-CK_RV
-mock_C_CancelFunction (CK_SESSION_HANDLE session)
-{
- if (!p11_dict_get (the_sessions, handle_to_pointer (session)))
- return CKR_SESSION_HANDLE_INVALID;
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-
-CK_RV
-mock_C_CancelFunction__not_parallel (CK_SESSION_HANDLE session)
-{
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-
-CK_RV
-mock_C_GetSessionInfo (CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info)
-{
- Session *sess;
-
- return_val_if_fail (info != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (logged_in) {
- if (sess->info.flags & CKF_RW_SESSION)
- sess->info.state = CKS_RW_USER_FUNCTIONS;
- else
- sess->info.state = CKS_RO_USER_FUNCTIONS;
- } else {
- if (sess->info.flags & CKF_RW_SESSION)
- sess->info.state = CKS_RW_PUBLIC_SESSION;
- else
- sess->info.state = CKS_RO_PUBLIC_SESSION;
- }
-
- memcpy (info, &sess->info, sizeof (*info));
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GetSessionInfo__invalid_handle (CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GetSessionInfo__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info)
-{
- return_val_if_fail (info, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_InitPIN__specific_args (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (strlen ("TEST PIN") != pin_len ||
- strncmp ((char *)pin, "TEST PIN", pin_len) != 0)
- return CKR_PIN_INVALID;
-
- free (the_pin);
- the_pin = memdup (pin, pin_len);
- return_val_if_fail (the_pin != NULL, CKR_HOST_MEMORY);
- n_the_pin = pin_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_InitPIN__invalid_handle (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_InitPIN__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SetPIN__specific_args (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (old_pin_len != n_the_pin)
- return CKR_PIN_INCORRECT;
- if (memcmp (old_pin, the_pin, n_the_pin) != 0)
- return CKR_PIN_INCORRECT;
-
- if (strlen ("TEST PIN") != new_pin_len ||
- strncmp ((char *)new_pin, "TEST PIN", new_pin_len) != 0)
- return CKR_PIN_INVALID;
-
- free (the_pin);
- the_pin = memdup (new_pin, new_pin_len);
- return_val_if_fail (the_pin != NULL, CKR_HOST_MEMORY);
- n_the_pin = new_pin_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SetPIN__invalid_handle (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SetPIN__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GetOperationState (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len)
-{
- Session *sess;
-
- return_val_if_fail (operation_state_len, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!operation_state) {
- *operation_state_len = sizeof (sess);
- return CKR_OK;
- }
-
- if (*operation_state_len < sizeof (sess))
- return CKR_BUFFER_TOO_SMALL;
-
- memcpy (operation_state, &sess, sizeof (sess));
- *operation_state_len = sizeof (sess);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GetOperationState__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len)
-{
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-CK_RV
-mock_X_GetOperationState__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len)
-{
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-CK_RV
-mock_C_SetOperationState (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!operation_state || operation_state_len != sizeof (sess))
- return CKR_ARGUMENTS_BAD;
-
- /* Yes, just arbitrary numbers, to make sure they got through */
- if (encryption_key != 355 || authentication_key != 455)
- return CKR_KEY_HANDLE_INVALID;
- if (memcmp (operation_state, &sess, sizeof (sess)) != 0)
- return CKR_SAVED_STATE_INVALID;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SetOperationState__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SetOperationState__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Login (CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- Session *sess;
-
- return_val_if_fail (user_type == CKU_SO ||
- user_type == CKU_USER ||
- user_type == CKU_CONTEXT_SPECIFIC,
- CKR_USER_TYPE_INVALID);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (logged_in && user_type != CKU_CONTEXT_SPECIFIC)
- return CKR_USER_ALREADY_LOGGED_IN;
-
- if (!pin)
- return CKR_PIN_INCORRECT;
-
- if (pin_len != n_the_pin)
- return CKR_PIN_INCORRECT;
- if (strncmp ((char *)pin, (char *)the_pin, pin_len) != 0)
- return CKR_PIN_INCORRECT;
-
- if (user_type == CKU_CONTEXT_SPECIFIC) {
- return_val_if_fail (sess->want_context_login, CKR_OPERATION_NOT_INITIALIZED);
- sess->want_context_login = false;
- } else {
- logged_in = true;
- the_user_type = user_type;
- }
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_Login__invalid_handle (CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Login__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Logout (CK_SESSION_HANDLE session)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!logged_in)
- return CKR_USER_NOT_LOGGED_IN;
-
- logged_in = false;
- the_user_type = 0;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_Logout__invalid_handle (CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Logout__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_CreateObject (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR object)
-{
- CK_ATTRIBUTE *attrs;
- Session *sess;
- CK_BBOOL token, priv;
-
- return_val_if_fail (object, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- attrs = p11_attrs_buildn (NULL, template, count);
-
- if (p11_attrs_find_bool (attrs, CKA_PRIVATE, &priv) && priv) {
- if (!logged_in) {
- p11_attrs_free (attrs);
- return CKR_USER_NOT_LOGGED_IN;
- }
- }
-
- *object = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*object), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*object), attrs);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_CreateObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- return_val_if_fail (new_object, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_CreateObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- return_val_if_fail (new_object, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_CopyObject (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- CK_ATTRIBUTE *attrs;
- Session *sess;
- CK_BBOOL token, priv;
- CK_RV rv;
-
- return_val_if_fail (object, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, object, &attrs, NULL);
- if (rv != CKR_OK)
- return rv;
-
- if (p11_attrs_find_bool (attrs, CKA_PRIVATE, &priv) && priv) {
- if (!logged_in)
- return CKR_USER_NOT_LOGGED_IN;
- }
-
- attrs = p11_attrs_buildn (p11_attrs_dup (attrs), template, count);
-
- *new_object = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*new_object), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*new_object), attrs);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_CopyObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- return_val_if_fail (new_object, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-
-CK_RV
-mock_X_CopyObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- return_val_if_fail (new_object, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DestroyObject (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object)
-{
- CK_ATTRIBUTE *attrs;
- Session *sess;
- p11_dict *table;
- CK_RV rv;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, object, &attrs, &table);
- if (rv != CKR_OK)
- return rv;
-
- p11_dict_remove (table, handle_to_pointer (object));
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DestroyObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DestroyObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GetObjectSize (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size)
-{
- CK_ATTRIBUTE *attrs;
- Session *sess;
- CK_RV rv;
- CK_ULONG i;
-
- return_val_if_fail (size != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, object, &attrs, NULL);
- if (rv != CKR_OK)
- return rv;
-
- *size = 0;
- for (i = 0; !p11_attrs_terminator (attrs + i); i++) {
- if (attrs[i].ulValueLen != (CK_ULONG)-1)
- *size += attrs[i].ulValueLen;
- }
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GetObjectSize__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size)
-{
- return_val_if_fail (size, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GetObjectSize__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size)
-{
- return_val_if_fail (size, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GetAttributeValue (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- CK_ATTRIBUTE *result;
- CK_RV ret = CKR_OK;
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE *attr;
- Session *sess;
- CK_ULONG i;
- CK_RV rv;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, object, &attrs, NULL);
- if (rv != CKR_OK)
- return rv;
-
- for (i = 0; i < count; ++i) {
- result = template + i;
- attr = p11_attrs_find (attrs, result->type);
- if (!attr) {
- result->ulValueLen = (CK_ULONG)-1;
- ret = CKR_ATTRIBUTE_TYPE_INVALID;
- continue;
- }
-
- if (!result->pValue) {
- result->ulValueLen = attr->ulValueLen;
- continue;
- }
-
- if (result->ulValueLen >= attr->ulValueLen) {
- memcpy (result->pValue, attr->pValue, attr->ulValueLen);
- result->ulValueLen = attr->ulValueLen;
- continue;
- }
-
- result->ulValueLen = (CK_ULONG)-1;
- ret = CKR_BUFFER_TOO_SMALL;
- }
-
- return ret;
-}
-
-CK_RV
-mock_C_GetAttributeValue__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GetAttributeValue__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GetAttributeValue__fail_first (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_FUNCTION_REJECTED;
-}
-
-CK_RV
-mock_C_GetAttributeValue__fail_late (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- CK_ULONG i;
-
- for (i = 0; i < count; i++) {
- if (template[i].pValue)
- return CKR_FUNCTION_FAILED;
- }
- return mock_C_GetAttributeValue (session, object, template, count);
-}
-
-CK_RV
-mock_C_SetAttributeValue (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- Session *sess;
- CK_ATTRIBUTE *attrs;
- p11_dict *table;
- CK_RV rv;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, object, &attrs, &table);
- if (rv != CKR_OK)
- return rv;
-
- p11_dict_steal (table, handle_to_pointer (object), NULL, (void **)&attrs);
- attrs = p11_attrs_buildn (attrs, template, count);
- p11_dict_set (table, handle_to_pointer (object), attrs);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SetAttributeValue__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SetAttributeValue__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-typedef struct _FindObjects {
- CK_ATTRIBUTE *template;
- CK_ULONG count;
- Session *sess;
-} FindObjects;
-
-static bool
-enumerate_and_find_objects (CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE *attrs,
- void *user_data)
-{
- FindObjects *ctx = user_data;
- CK_ATTRIBUTE *match;
- CK_ATTRIBUTE *attr;
- CK_BBOOL private;
- CK_ULONG i;
-
- if (!logged_in) {
- if (p11_attrs_find_bool (attrs, CKA_PRIVATE, &private) && private)
- return 1; /* Continue */
- }
-
- for (i = 0; i < ctx->count; ++i) {
- match = ctx->template + i;
- attr = p11_attrs_find (attrs, match->type);
- if (!attr)
- return true; /* Continue */
-
- if (attr->ulValueLen != match->ulValueLen ||
- memcmp (attr->pValue, match->pValue, attr->ulValueLen) != 0)
- return true; /* Continue */
- }
-
- p11_array_push (ctx->sess->matches, handle_to_pointer (object));
- return true; /* Continue */
-}
-
-static int
-compar_handles (const void *one,
- const void *two)
-{
- void **p1 = (void **)one;
- void **p2 = (void **)two;
- return pointer_to_handle (*p2) - pointer_to_handle (*p1);
-}
-
-CK_RV
-mock_C_FindObjectsInit (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- Session *sess;
- FindObjects ctx;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- /* Starting an operation, cancels any previous one */
- sess->crypto_mechanism = 0;
- sess->hash_mechanism = 0;
-
- sess->finding = true;
- p11_array_free (sess->matches);
- sess->matches = p11_array_new (NULL);
-
- ctx.template = template;
- ctx.count = count;
- ctx.sess = sess;
-
- mock_module_enumerate_objects (session, enumerate_and_find_objects, &ctx);
- qsort (sess->matches->elem, sess->matches->num, sizeof (void *), compar_handles);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_FindObjectsInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_FindObjectsInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_FindObjectsInit__fails (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- return CKR_DEVICE_MEMORY;
-}
-
-CK_RV
-mock_C_FindObjects (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_object_count,
- CK_ULONG_PTR object_count)
-{
- Session *sess;
-
- return_val_if_fail (objects, CKR_ARGUMENTS_BAD);
- return_val_if_fail (object_count, CKR_ARGUMENTS_BAD);
- return_val_if_fail (max_object_count != 0, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
- if (!sess->finding)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- *object_count = 0;
- while (max_object_count > 0) {
- if (sess->matches->num == 0)
- break;
- *objects = pointer_to_handle (sess->matches->elem[sess->matches->num - 1]);
- ++objects;
- --max_object_count;
- ++(*object_count);
- p11_array_remove (sess->matches, sess->matches->num - 1);
- }
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_FindObjects__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_FindObjects__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_FindObjects__fails (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count)
-{
- return_val_if_fail (count, CKR_ARGUMENTS_BAD);
-
- return CKR_DEVICE_REMOVED;
-}
-
-CK_RV
-mock_C_FindObjectsFinal (CK_SESSION_HANDLE session)
-{
-
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (sess == NULL)
- return CKR_SESSION_HANDLE_INVALID;
- if (!sess->finding)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- sess->finding = false;
- p11_array_free (sess->matches);
- sess->matches = NULL;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_FindObjectsFinal__invalid_handle (CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_FindObjectsFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_EncryptInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- Session *sess;
-
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- /* Starting an operation, cancels any previous one */
- sess->finding = CK_FALSE;
-
- if (mechanism->mechanism != CKM_MOCK_CAPITALIZE)
- return CKR_MECHANISM_INVALID;
- if (key != MOCK_PUBLIC_KEY_CAPITALIZE)
- return CKR_KEY_HANDLE_INVALID;
-
- sess->crypto_method = CKA_ENCRYPT;
- sess->crypto_mechanism = CKM_MOCK_CAPITALIZE;
- sess->crypto_key = key;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_EncryptInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_EncryptInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Encrypt (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len)
-{
- CK_ULONG last = 0;
- CK_RV rv;
- rv = mock_C_EncryptUpdate (session, data, data_len, encrypted_data, encrypted_data_len);
- if (rv == CKR_OK)
- rv = mock_C_EncryptFinal (session, encrypted_data, &last);
- return rv;
-}
-
-CK_RV
-mock_C_Encrypt__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len)
-{
- return_val_if_fail (encrypted_data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Encrypt__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len)
-{
- return_val_if_fail (encrypted_data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_EncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- Session *sess;
- CK_ULONG i;
-
- return_val_if_fail (part != NULL, CKR_DATA_INVALID);
- return_val_if_fail (encrypted_part_len != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->crypto_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->crypto_method != CKA_ENCRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
- assert (sess->crypto_mechanism == CKM_MOCK_CAPITALIZE);
- assert (sess->crypto_key == MOCK_PUBLIC_KEY_CAPITALIZE);
-
- if (!encrypted_part) {
- *encrypted_part_len = part_len;
- return CKR_OK;
- }
-
- if (*encrypted_part_len < part_len) {
- *encrypted_part_len = part_len;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- for (i = 0; i < part_len; ++i)
- encrypted_part[i] = toupper (part[i]);
- *encrypted_part_len = part_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_EncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- return_val_if_fail (encrypted_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_EncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- return_val_if_fail (encrypted_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_EncryptFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_encrypted_part,
- CK_ULONG_PTR last_encrypted_part_len)
-{
- Session *sess;
-
- return_val_if_fail (last_encrypted_part_len != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->crypto_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->crypto_method != CKA_ENCRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- *last_encrypted_part_len = 0;
-
- sess->crypto_method = 0;
- sess->crypto_mechanism = 0;
- sess->crypto_key = 0;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_EncryptFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- return_val_if_fail (last_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_EncryptFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- return_val_if_fail (last_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DecryptInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- Session *sess;
-
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- /* Starting an operation, cancels any previous one */
- sess->finding = false;
-
- if (mechanism->mechanism != CKM_MOCK_CAPITALIZE)
- return CKR_MECHANISM_INVALID;
- if (key != MOCK_PRIVATE_KEY_CAPITALIZE)
- return CKR_KEY_HANDLE_INVALID;
-
- sess->crypto_method = CKA_DECRYPT;
- sess->crypto_mechanism = CKM_MOCK_CAPITALIZE;
- sess->crypto_key = key;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DecryptInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DecryptInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Decrypt (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG encrypted_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- CK_ULONG last = 0;
- CK_RV rv;
- rv = mock_C_DecryptUpdate (session, encrypted_data, encrypted_data_len, data, data_len);
- if (rv == CKR_OK)
- rv = mock_C_DecryptFinal (session, data, &last);
- return rv;
-}
-
-CK_RV
-mock_C_Decrypt__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_data,
- CK_ULONG enc_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- return_val_if_fail (data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Decrypt__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_data,
- CK_ULONG enc_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- return_val_if_fail (data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DecryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- Session *sess;
- CK_ULONG i;
-
- return_val_if_fail (encrypted_part, CKR_ENCRYPTED_DATA_INVALID);
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->crypto_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->crypto_method != CKA_DECRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
- assert (sess->crypto_mechanism == CKM_MOCK_CAPITALIZE);
- assert (sess->crypto_key == MOCK_PRIVATE_KEY_CAPITALIZE);
-
- if (!part) {
- *part_len = encrypted_part_len;
- return CKR_OK;
- }
-
- if (*part_len < encrypted_part_len) {
- *part_len = encrypted_part_len;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- for (i = 0; i < encrypted_part_len; ++i)
- part[i] = tolower (encrypted_part[i]);
- *part_len = encrypted_part_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DecryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DecryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DecryptFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- Session *sess;
-
- return_val_if_fail (last_part_len != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->crypto_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->crypto_method != CKA_DECRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- *last_part_len = 0;
-
- sess->crypto_method = 0;
- sess->crypto_mechanism = 0;
- sess->crypto_key = 0;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DecryptFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- return_val_if_fail (last_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DecryptFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- return_val_if_fail (last_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DigestInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism)
-{
- Session *sess;
-
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- /* Starting an operation, cancels any previous one */
- sess->finding = false;
-
- if (mechanism->mechanism != CKM_MOCK_COUNT)
- return CKR_MECHANISM_INVALID;
-
- sess->hash_mechanism = CKM_MOCK_COUNT;
- sess->hash_method = (CK_ULONG)-1;
- sess->hash_count = 0;
- sess->hash_key = 0;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DigestInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DigestInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Digest (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- CK_RV rv;
-
- return_val_if_fail (digest_len, CKR_ARGUMENTS_BAD);
-
- rv = mock_C_DigestUpdate (session, data, data_len);
- if (rv == CKR_OK)
- rv = mock_C_DigestFinal (session, digest, digest_len);
- return rv;
-}
-
-CK_RV
-mock_C_Digest__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- return_val_if_fail (digest_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Digest__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- return_val_if_fail (digest_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DigestUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->hash_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->hash_method != (CK_ULONG)-1)
- return CKR_OPERATION_NOT_INITIALIZED;
- assert (sess->hash_mechanism == CKM_MOCK_COUNT);
-
- sess->hash_count += part_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DigestUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DigestUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DigestKey (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->hash_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->hash_method != (CK_ULONG)-1)
- return CKR_OPERATION_NOT_INITIALIZED;
- assert (sess->hash_mechanism == CKM_MOCK_COUNT);
-
- sess->hash_count += key;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DigestKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DigestKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DigestFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- char buffer[32];
- Session *sess;
- int len;
-
- return_val_if_fail (digest_len != NULL, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (!sess->hash_mechanism)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->hash_method != (CK_ULONG)-1)
- return CKR_OPERATION_NOT_INITIALIZED;
- assert (sess->hash_mechanism == CKM_MOCK_COUNT);
-
- len = snprintf (buffer, sizeof (buffer), "%lu", sess->hash_count);
-
- if (!digest) {
- *digest_len = len;
- return CKR_OK;
- } else if (*digest_len < len) {
- *digest_len = len;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- memcpy (digest, &buffer, len);
- *digest_len = len;
-
- sess->hash_count = 0;
- sess->hash_mechanism = 0;
- sess->hash_key = 0;
- sess->hash_method = 0;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DigestFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- return_val_if_fail (digest_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DigestFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- return_val_if_fail (digest_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-static CK_RV
-prefix_mechanism_init (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_TYPE method,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- Session *sess;
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE *value;
- CK_BYTE_PTR param;
- CK_ULONG n_param;
- CK_ULONG length;
- CK_RV rv;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (mechanism->mechanism != CKM_MOCK_PREFIX)
- return CKR_MECHANISM_INVALID;
- if (method == CKA_SIGN || method == CKA_SIGN_RECOVER) {
- if (key != MOCK_PRIVATE_KEY_PREFIX)
- return CKR_KEY_HANDLE_INVALID;
- } else if (method == CKA_VERIFY || method == CKA_VERIFY_RECOVER) {
- if (key != MOCK_PUBLIC_KEY_PREFIX)
- return CKR_KEY_HANDLE_INVALID;
- } else {
- assert_not_reached ();
- }
-
- rv = lookup_object (sess, key, &attrs, NULL);
- if (rv != CKR_OK)
- return rv;
-
- value = p11_attrs_find_valid (attrs, CKA_VALUE);
- if (value == NULL)
- return CKR_KEY_TYPE_INCONSISTENT;
-
- if (mechanism->pParameter) {
- param = mechanism->pParameter;
- n_param = mechanism->ulParameterLen;
- } else {
- param = (CK_BYTE_PTR)SIGNED_PREFIX;
- n_param = strlen (SIGNED_PREFIX) + 1;
- }
-
- length = value->ulValueLen + n_param;
- if (length > sizeof (sess->sign_prefix))
- return CKR_KEY_SIZE_RANGE;
-
- /* Starting an operation, cancels any finding */
- sess->finding = false;
-
- sess->hash_mechanism = CKM_MOCK_PREFIX;
- sess->hash_method = method;
- sess->hash_key = key;
- sess->hash_count = 0;
-
- memcpy (sess->sign_prefix, param, n_param);
- memcpy (sess->sign_prefix + n_param, value->pValue, value->ulValueLen);
- sess->n_sign_prefix = length;
-
- /* The private key has CKA_ALWAYS_AUTHENTICATE above */
- if (method == CKA_SIGN || method == CKA_SIGN_RECOVER)
- sess->want_context_login = true;
-
- return CKR_OK;
-
-}
-
-CK_RV
-mock_C_SignInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
- return prefix_mechanism_init (session, CKA_SIGN, mechanism, key);
-}
-
-CK_RV
-mock_C_SignInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Sign (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- CK_RV rv;
-
- rv = mock_C_SignUpdate (session, data, data_len);
- if (rv == CKR_OK)
- rv = mock_C_SignFinal (session, signature, signature_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_Sign__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Sign__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SignUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_mechanism != CKM_MOCK_PREFIX ||
- sess->hash_method != CKA_SIGN)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- sess->hash_count += part_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SignUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SignFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- char buffer[32];
- Session *sess;
- CK_ULONG length;
- int len;
-
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_mechanism != CKM_MOCK_PREFIX ||
- sess->hash_method != CKA_SIGN)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- len = snprintf (buffer, sizeof (buffer), "%lu", sess->hash_count);
- length = sess->n_sign_prefix + len;
-
- if (!signature) {
- *signature_len = length;
- return CKR_OK;
- }
-
- if (*signature_len < length) {
- *signature_len = length;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- memcpy (signature, sess->sign_prefix, sess->n_sign_prefix);
- memcpy (signature + sess->n_sign_prefix, buffer, len);
- *signature_len = length;
-
- sess->hash_mechanism = 0;
- sess->hash_method = 0;
- sess->hash_count = 0;
- sess->hash_key = 0;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SignFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SignRecoverInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
- return prefix_mechanism_init (session, CKA_SIGN_RECOVER, mechanism, key);
-}
-
-CK_RV
-mock_C_SignRecoverInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignRecoverInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SignRecover (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- Session *sess;
- CK_ULONG length;
-
- return_val_if_fail (data, CKR_DATA_INVALID);
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_method != CKA_SIGN_RECOVER ||
- sess->hash_mechanism != CKM_MOCK_PREFIX)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- length = sess->n_sign_prefix + data_len;
-
- if (!signature) {
- *signature_len = length;
- return CKR_OK;
- }
-
- if (*signature_len < length) {
- *signature_len = length;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- memcpy (signature, sess->sign_prefix, sess->n_sign_prefix);
- memcpy (signature + sess->n_sign_prefix, data, data_len);
- *signature_len = length;
-
- sess->hash_method = 0;
- sess->hash_mechanism = 0;
- sess->hash_key = 0;
- sess->hash_count = 0;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SignRecover__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignRecover__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- return_val_if_fail (signature_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_VerifyInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
- return prefix_mechanism_init (session, CKA_VERIFY, mechanism, key);
-}
-
-CK_RV
-mock_C_VerifyInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_VerifyInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_Verify (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- CK_RV rv;
-
- rv = mock_C_VerifyUpdate (session, data, data_len);
- if (rv == CKR_OK)
- rv = mock_C_VerifyFinal (session, signature, signature_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_Verify__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_Verify__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_VerifyUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_mechanism != CKM_MOCK_PREFIX ||
- sess->hash_method != CKA_VERIFY)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- sess->hash_count += part_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_VerifyUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_VerifyUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_VerifyFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- char buffer[32];
- Session *sess;
- CK_ULONG length;
- int len;
-
- return_val_if_fail (signature, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_mechanism != CKM_MOCK_PREFIX ||
- sess->hash_method != CKA_VERIFY)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- len = snprintf (buffer, sizeof (buffer), "%lu", sess->hash_count);
- length = sess->n_sign_prefix + len;
-
- if (signature_len != length)
- return CKR_SIGNATURE_LEN_RANGE;
-
- if (memcmp (signature, sess->sign_prefix, sess->n_sign_prefix) != 0 ||
- memcmp (signature + sess->n_sign_prefix, buffer, len) != 0)
- return CKR_SIGNATURE_INVALID;
-
- sess->hash_mechanism = 0;
- sess->hash_method = 0;
- sess->hash_count = 0;
- sess->hash_key = 0;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_VerifyFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_VerifyFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_VerifyRecoverInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return_val_if_fail (mechanism != NULL, CKR_ARGUMENTS_BAD);
- return prefix_mechanism_init (session, CKA_VERIFY_RECOVER, mechanism, key);
-}
-
-CK_RV
-mock_C_VerifyRecoverInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_VerifyRecoverInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_VerifyRecover (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- Session *sess;
- CK_ULONG length;
-
- return_val_if_fail (signature, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
- if (sess->hash_mechanism != CKM_MOCK_PREFIX ||
- sess->hash_method != CKA_VERIFY_RECOVER)
- return CKR_OPERATION_NOT_INITIALIZED;
- if (sess->want_context_login)
- return CKR_USER_NOT_LOGGED_IN;
-
- if (signature_len < sess->n_sign_prefix)
- return CKR_SIGNATURE_LEN_RANGE;
- if (memcmp (signature, sess->sign_prefix, sess->n_sign_prefix) != 0)
- return CKR_SIGNATURE_INVALID;
-
- length = signature_len - sess->n_sign_prefix;
- if (!data) {
- *data_len = length;
- return CKR_OK;
- }
-
- if (*data_len < length) {
- *data_len = length;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- *data_len = length;
- memcpy (data, signature + sess->n_sign_prefix, length);
- return CKR_OK;
-}
-
-CK_RV
-mock_C_VerifyRecover__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- return_val_if_fail (data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_VerifyRecover__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len)
-{
- return_val_if_fail (data_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DigestEncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- CK_RV rv;
-
- rv = mock_C_EncryptUpdate (session, part, part_len, encrypted_part, encrypted_part_len);
- if (rv == CKR_OK)
- rv = mock_C_DigestUpdate (session, part, part_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_DigestEncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- return_val_if_fail (enc_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DigestEncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- return_val_if_fail (enc_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DecryptDigestUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- CK_RV rv;
-
- rv = mock_C_DecryptUpdate (session, encrypted_part, encrypted_part_len, part, part_len);
- if (rv == CKR_OK)
- rv = mock_C_DigestUpdate (session, part, *part_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_DecryptDigestUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DecryptDigestUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SignEncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- CK_RV rv;
-
- rv = mock_C_EncryptUpdate (session, part, part_len, encrypted_part, encrypted_part_len);
- if (rv == CKR_OK)
- rv = mock_C_SignUpdate (session, part, part_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_SignEncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- return_val_if_fail (enc_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SignEncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- return_val_if_fail (enc_part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DecryptVerifyUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- CK_RV rv;
-
- rv = mock_C_DecryptUpdate (session, encrypted_part, encrypted_part_len, part, part_len);
- if (rv == CKR_OK)
- rv = mock_C_VerifyUpdate (session, part, *part_len);
-
- return rv;
-}
-
-CK_RV
-mock_C_DecryptVerifyUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DecryptVerifyUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- return_val_if_fail (part_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GenerateKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE value;
- Session *sess;
- CK_BBOOL token;
-
- return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
- return_val_if_fail (template, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (count, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (key, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (mechanism->mechanism != CKM_MOCK_GENERATE)
- return CKR_MECHANISM_INVALID;
-
- if (!mechanism->pParameter || mechanism->ulParameterLen != 9 ||
- memcmp (mechanism->pParameter, "generate", 9) != 0)
- return CKR_MECHANISM_PARAM_INVALID;
-
- value.type = CKA_VALUE;
- value.pValue = "generated";
- value.ulValueLen = strlen (value.pValue);
-
- attrs = p11_attrs_buildn (NULL, template, count);
- attrs = p11_attrs_buildn (attrs, &value, 1);
-
- *key = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*key), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*key), attrs);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GenerateKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GenerateKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GenerateKeyPair (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR public_key_template,
- CK_ULONG public_key_count,
- CK_ATTRIBUTE_PTR private_key_template,
- CK_ULONG private_key_count,
- CK_OBJECT_HANDLE_PTR public_key,
- CK_OBJECT_HANDLE_PTR private_key)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE value;
- Session *sess;
- CK_BBOOL token;
-
- return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
- return_val_if_fail (public_key_template, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (public_key_count, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (private_key_template, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (private_key_count, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (public_key, CKR_ARGUMENTS_BAD);
- return_val_if_fail (private_key, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (mechanism->mechanism != CKM_MOCK_GENERATE)
- return CKR_MECHANISM_INVALID;
-
- if (!mechanism->pParameter || mechanism->ulParameterLen != 9 ||
- memcmp (mechanism->pParameter, "generate", 9) != 0)
- return CKR_MECHANISM_PARAM_INVALID;
-
- value.type = CKA_VALUE;
- value.pValue = "generated";
- value.ulValueLen = strlen (value.pValue);
-
- attrs = p11_attrs_buildn (NULL, public_key_template, public_key_count);
- attrs = p11_attrs_buildn (attrs, &value, 1);
-
- *public_key = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*public_key), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*public_key), attrs);
-
- attrs = p11_attrs_buildn (NULL, private_key_template, private_key_count);
- attrs = p11_attrs_buildn (attrs, &value, 1);
-
- *private_key = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*private_key), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*private_key), attrs);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GenerateKeyPair__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR pub_template,
- CK_ULONG pub_count,
- CK_ATTRIBUTE_PTR priv_template,
- CK_ULONG priv_count,
- CK_OBJECT_HANDLE_PTR pub_key,
- CK_OBJECT_HANDLE_PTR priv_key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GenerateKeyPair__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR pub_template,
- CK_ULONG pub_count,
- CK_ATTRIBUTE_PTR priv_template,
- CK_ULONG priv_count,
- CK_OBJECT_HANDLE_PTR pub_key,
- CK_OBJECT_HANDLE_PTR priv_key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_WrapKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE *attr;
- Session *sess;
- CK_RV rv;
-
- return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
- return_val_if_fail (wrapping_key, CKR_OBJECT_HANDLE_INVALID);
- return_val_if_fail (key, CKR_OBJECT_HANDLE_INVALID);
- return_val_if_fail (wrapped_key_len, CKR_WRAPPED_KEY_LEN_RANGE);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, wrapping_key, &attrs, NULL);
- if (rv == CKR_OBJECT_HANDLE_INVALID)
- return CKR_WRAPPING_KEY_HANDLE_INVALID;
- else if (rv != CKR_OK)
- return rv;
-
- rv = lookup_object (sess, key, &attrs, NULL);
- if (rv == CKR_OBJECT_HANDLE_INVALID)
- return CKR_WRAPPING_KEY_HANDLE_INVALID;
- else if (rv != CKR_OK)
- return rv;
-
- if (mechanism->mechanism != CKM_MOCK_WRAP)
- return CKR_MECHANISM_INVALID;
-
- if (mechanism->pParameter == NULL ||
- mechanism->ulParameterLen != 4 ||
- memcmp (mechanism->pParameter, "wrap", 4) != 0) {
- return CKR_MECHANISM_PARAM_INVALID;
- }
-
- attr = p11_attrs_find_valid (attrs, CKA_VALUE);
- if (attr == NULL)
- return CKR_WRAPPED_KEY_INVALID;
-
- if (!wrapped_key) {
- *wrapped_key_len = attr->ulValueLen;
- return CKR_OK;
- }
-
- if (*wrapped_key_len < attr->ulValueLen) {
- *wrapped_key_len = attr->ulValueLen;
- return CKR_BUFFER_TOO_SMALL;
- }
-
- memcpy (wrapped_key, attr->pValue, attr->ulValueLen);
- *wrapped_key_len = attr->ulValueLen;
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_WrapKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len)
-{
- return_val_if_fail (wrapped_key_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_WrapKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len)
-{
- return_val_if_fail (wrapped_key_len, CKR_ARGUMENTS_BAD);
-
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_UnwrapKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE value;
- Session *sess;
- CK_BBOOL token;
- CK_RV rv;
-
- return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
- return_val_if_fail (unwrapping_key, CKR_WRAPPING_KEY_HANDLE_INVALID);
- return_val_if_fail (wrapped_key, CKR_WRAPPED_KEY_INVALID);
- return_val_if_fail (wrapped_key_len, CKR_WRAPPED_KEY_LEN_RANGE);
- return_val_if_fail (key, CKR_ARGUMENTS_BAD);
- return_val_if_fail (template, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (count, CKR_TEMPLATE_INCONSISTENT);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, unwrapping_key, &attrs, NULL);
- if (rv == CKR_OBJECT_HANDLE_INVALID)
- return CKR_WRAPPING_KEY_HANDLE_INVALID;
- else if (rv != CKR_OK)
- return rv;
-
- if (mechanism->mechanism != CKM_MOCK_WRAP)
- return CKR_MECHANISM_INVALID;
-
- if (mechanism->pParameter == NULL ||
- mechanism->ulParameterLen != 4 ||
- memcmp (mechanism->pParameter, "wrap", 4) != 0) {
- return CKR_MECHANISM_PARAM_INVALID;
- }
-
- value.type = CKA_VALUE;
- value.pValue = wrapped_key;
- value.ulValueLen = wrapped_key_len;
-
- attrs = p11_attrs_buildn (NULL, template, count);
- attrs = p11_attrs_buildn (attrs, &value, 1);
-
- *key = ++unique_identifier;
- if (p11_attrs_find_bool (attrs, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*key), attrs);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*key), attrs);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_UnwrapKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_UnwrapKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_DeriveKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- CK_ATTRIBUTE *attrs, *copy;
- CK_ATTRIBUTE value;
- Session *sess;
- CK_BBOOL token;
- CK_RV rv;
-
- return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
- return_val_if_fail (count, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (template, CKR_TEMPLATE_INCOMPLETE);
- return_val_if_fail (key, CKR_ARGUMENTS_BAD);
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- rv = lookup_object (sess, base_key, &attrs, NULL);
- if (rv == CKR_OBJECT_HANDLE_INVALID)
- return CKR_KEY_HANDLE_INVALID;
- else if (rv != CKR_OK)
- return rv;
-
- if (mechanism->mechanism != CKM_MOCK_DERIVE)
- return CKR_MECHANISM_INVALID;
-
- if (mechanism->pParameter == NULL ||
- mechanism->ulParameterLen != 6 ||
- memcmp (mechanism->pParameter, "derive", 6) != 0) {
- return CKR_MECHANISM_PARAM_INVALID;
- }
-
- value.type = CKA_VALUE;
- value.pValue = "derived";
- value.ulValueLen = strlen (value.pValue);
-
- copy = p11_attrs_buildn (NULL, template, count);
- copy = p11_attrs_buildn (copy, &value, 1);
-
- *key = ++unique_identifier;
- if (p11_attrs_find_bool (copy, CKA_TOKEN, &token) && token)
- p11_dict_set (the_objects, handle_to_pointer (*key), copy);
- else
- p11_dict_set (sess->objects, handle_to_pointer (*key), copy);
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_DeriveKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_DeriveKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_SeedRandom (CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len)
-{
- Session *sess;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- if (seed_len > sizeof (sess->random_seed))
- return CKR_RANDOM_SEED_NOT_SUPPORTED;
-
- memcpy (sess->random_seed, seed, seed_len);
- sess->random_seed_len = seed_len;
- return CKR_OK;
-}
-
-CK_RV
-mock_C_SeedRandom__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_SeedRandom__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_C_GenerateRandom (CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len)
-{
- Session *sess;
- CK_ULONG block;
-
- sess = p11_dict_get (the_sessions, handle_to_pointer (session));
- if (!sess)
- return CKR_SESSION_HANDLE_INVALID;
-
- while (random_len > 0) {
- block = sess->random_seed_len;
- if (block > random_len)
- block = random_len;
- memcpy (random_data, sess->random_seed, block);
- random_data += block;
- random_len -= block;
- }
-
- return CKR_OK;
-}
-
-CK_RV
-mock_C_GenerateRandom__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_RV
-mock_X_GenerateRandom__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len)
-{
- return CKR_SESSION_HANDLE_INVALID;
-}
-
-CK_FUNCTION_LIST mock_module_no_slots = {
- { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR }, /* version */
- mock_C_Initialize,
- mock_C_Finalize,
- mock_C_GetInfo,
- mock_C_GetFunctionList_not_supported,
- mock_C_GetSlotList__no_tokens,
- mock_C_GetSlotInfo__invalid_slotid,
- mock_C_GetTokenInfo__invalid_slotid,
- mock_C_GetMechanismList__invalid_slotid,
- mock_C_GetMechanismInfo__invalid_slotid,
- mock_C_InitToken__invalid_slotid,
- mock_C_InitPIN__invalid_handle,
- mock_C_SetPIN__invalid_handle,
- mock_C_OpenSession__invalid_slotid,
- mock_C_CloseSession__invalid_handle,
- mock_C_CloseAllSessions__invalid_slotid,
- mock_C_GetSessionInfo__invalid_handle,
- mock_C_GetOperationState__invalid_handle,
- mock_C_SetOperationState__invalid_handle,
- mock_C_Login__invalid_handle,
- mock_C_Logout__invalid_handle,
- mock_C_CreateObject__invalid_handle,
- mock_C_CopyObject__invalid_handle,
- mock_C_DestroyObject__invalid_handle,
- mock_C_GetObjectSize__invalid_handle,
- mock_C_GetAttributeValue__invalid_handle,
- mock_C_SetAttributeValue__invalid_handle,
- mock_C_FindObjectsInit__invalid_handle,
- mock_C_FindObjects__invalid_handle,
- mock_C_FindObjectsFinal__invalid_handle,
- mock_C_EncryptInit__invalid_handle,
- mock_C_Encrypt__invalid_handle,
- mock_C_EncryptUpdate__invalid_handle,
- mock_C_EncryptFinal__invalid_handle,
- mock_C_DecryptInit__invalid_handle,
- mock_C_Decrypt__invalid_handle,
- mock_C_DecryptUpdate__invalid_handle,
- mock_C_DecryptFinal__invalid_handle,
- mock_C_DigestInit__invalid_handle,
- mock_C_Digest__invalid_handle,
- mock_C_DigestUpdate__invalid_handle,
- mock_C_DigestKey__invalid_handle,
- mock_C_DigestFinal__invalid_handle,
- mock_C_SignInit__invalid_handle,
- mock_C_Sign__invalid_handle,
- mock_C_SignUpdate__invalid_handle,
- mock_C_SignFinal__invalid_handle,
- mock_C_SignRecoverInit__invalid_handle,
- mock_C_SignRecover__invalid_handle,
- mock_C_VerifyInit__invalid_handle,
- mock_C_Verify__invalid_handle,
- mock_C_VerifyUpdate__invalid_handle,
- mock_C_VerifyFinal__invalid_handle,
- mock_C_VerifyRecoverInit__invalid_handle,
- mock_C_VerifyRecover__invalid_handle,
- mock_C_DigestEncryptUpdate__invalid_handle,
- mock_C_DecryptDigestUpdate__invalid_handle,
- mock_C_SignEncryptUpdate__invalid_handle,
- mock_C_DecryptVerifyUpdate__invalid_handle,
- mock_C_GenerateKey__invalid_handle,
- mock_C_GenerateKeyPair__invalid_handle,
- mock_C_WrapKey__invalid_handle,
- mock_C_UnwrapKey__invalid_handle,
- mock_C_DeriveKey__invalid_handle,
- mock_C_SeedRandom__invalid_handle,
- mock_C_GenerateRandom__invalid_handle,
- mock_C_GetFunctionStatus__not_parallel,
- mock_C_CancelFunction__not_parallel,
- mock_C_WaitForSlotEvent__no_event,
-};
-
-CK_X_FUNCTION_LIST mock_x_module_no_slots = {
- { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR }, /* version */
- mock_X_Initialize,
- mock_X_Finalize,
- mock_X_GetInfo,
- mock_X_GetSlotList__no_tokens,
- mock_X_GetSlotInfo__invalid_slotid,
- mock_X_GetTokenInfo__invalid_slotid,
- mock_X_GetMechanismList__invalid_slotid,
- mock_X_GetMechanismInfo__invalid_slotid,
- mock_X_InitToken__invalid_slotid,
- mock_X_InitPIN__invalid_handle,
- mock_X_SetPIN__invalid_handle,
- mock_X_OpenSession__invalid_slotid,
- mock_X_CloseSession__invalid_handle,
- mock_X_CloseAllSessions__invalid_slotid,
- mock_X_GetSessionInfo__invalid_handle,
- mock_X_GetOperationState__invalid_handle,
- mock_X_SetOperationState__invalid_handle,
- mock_X_Login__invalid_handle,
- mock_X_Logout__invalid_handle,
- mock_X_CreateObject__invalid_handle,
- mock_X_CopyObject__invalid_handle,
- mock_X_DestroyObject__invalid_handle,
- mock_X_GetObjectSize__invalid_handle,
- mock_X_GetAttributeValue__invalid_handle,
- mock_X_SetAttributeValue__invalid_handle,
- mock_X_FindObjectsInit__invalid_handle,
- mock_X_FindObjects__invalid_handle,
- mock_X_FindObjectsFinal__invalid_handle,
- mock_X_EncryptInit__invalid_handle,
- mock_X_Encrypt__invalid_handle,
- mock_X_EncryptUpdate__invalid_handle,
- mock_X_EncryptFinal__invalid_handle,
- mock_X_DecryptInit__invalid_handle,
- mock_X_Decrypt__invalid_handle,
- mock_X_DecryptUpdate__invalid_handle,
- mock_X_DecryptFinal__invalid_handle,
- mock_X_DigestInit__invalid_handle,
- mock_X_Digest__invalid_handle,
- mock_X_DigestUpdate__invalid_handle,
- mock_X_DigestKey__invalid_handle,
- mock_X_DigestFinal__invalid_handle,
- mock_X_SignInit__invalid_handle,
- mock_X_Sign__invalid_handle,
- mock_X_SignUpdate__invalid_handle,
- mock_X_SignFinal__invalid_handle,
- mock_X_SignRecoverInit__invalid_handle,
- mock_X_SignRecover__invalid_handle,
- mock_X_VerifyInit__invalid_handle,
- mock_X_Verify__invalid_handle,
- mock_X_VerifyUpdate__invalid_handle,
- mock_X_VerifyFinal__invalid_handle,
- mock_X_VerifyRecoverInit__invalid_handle,
- mock_X_VerifyRecover__invalid_handle,
- mock_X_DigestEncryptUpdate__invalid_handle,
- mock_X_DecryptDigestUpdate__invalid_handle,
- mock_X_SignEncryptUpdate__invalid_handle,
- mock_X_DecryptVerifyUpdate__invalid_handle,
- mock_X_GenerateKey__invalid_handle,
- mock_X_GenerateKeyPair__invalid_handle,
- mock_X_WrapKey__invalid_handle,
- mock_X_UnwrapKey__invalid_handle,
- mock_X_DeriveKey__invalid_handle,
- mock_X_SeedRandom__invalid_handle,
- mock_X_GenerateRandom__invalid_handle,
- mock_X_WaitForSlotEvent__no_event,
-};
-
-CK_FUNCTION_LIST mock_module = {
- { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR }, /* version */
- mock_C_Initialize,
- mock_C_Finalize,
- mock_C_GetInfo,
- mock_C_GetFunctionList_not_supported,
- mock_C_GetSlotList,
- mock_C_GetSlotInfo,
- mock_C_GetTokenInfo,
- mock_C_GetMechanismList,
- mock_C_GetMechanismInfo,
- mock_C_InitToken__specific_args,
- mock_C_InitPIN__specific_args,
- mock_C_SetPIN__specific_args,
- mock_C_OpenSession,
- mock_C_CloseSession,
- mock_C_CloseAllSessions,
- mock_C_GetSessionInfo,
- mock_C_GetOperationState,
- mock_C_SetOperationState,
- mock_C_Login,
- mock_C_Logout,
- mock_C_CreateObject,
- mock_C_CopyObject,
- mock_C_DestroyObject,
- mock_C_GetObjectSize,
- mock_C_GetAttributeValue,
- mock_C_SetAttributeValue,
- mock_C_FindObjectsInit,
- mock_C_FindObjects,
- mock_C_FindObjectsFinal,
- mock_C_EncryptInit,
- mock_C_Encrypt,
- mock_C_EncryptUpdate,
- mock_C_EncryptFinal,
- mock_C_DecryptInit,
- mock_C_Decrypt,
- mock_C_DecryptUpdate,
- mock_C_DecryptFinal,
- mock_C_DigestInit,
- mock_C_Digest,
- mock_C_DigestUpdate,
- mock_C_DigestKey,
- mock_C_DigestFinal,
- mock_C_SignInit,
- mock_C_Sign,
- mock_C_SignUpdate,
- mock_C_SignFinal,
- mock_C_SignRecoverInit,
- mock_C_SignRecover,
- mock_C_VerifyInit,
- mock_C_Verify,
- mock_C_VerifyUpdate,
- mock_C_VerifyFinal,
- mock_C_VerifyRecoverInit,
- mock_C_VerifyRecover,
- mock_C_DigestEncryptUpdate,
- mock_C_DecryptDigestUpdate,
- mock_C_SignEncryptUpdate,
- mock_C_DecryptVerifyUpdate,
- mock_C_GenerateKey,
- mock_C_GenerateKeyPair,
- mock_C_WrapKey,
- mock_C_UnwrapKey,
- mock_C_DeriveKey,
- mock_C_SeedRandom,
- mock_C_GenerateRandom,
- mock_C_GetFunctionStatus,
- mock_C_CancelFunction,
- mock_C_WaitForSlotEvent,
-};
-
-void
-mock_module_init (void)
-{
- static bool initialized = false;
- if (!initialized) {
- p11_mutex_init (&init_mutex);
- initialized = true;
- }
-}
diff --git a/common/mock.h b/common/mock.h
deleted file mode 100644
index 16beb66..0000000
--- a/common/mock.h
+++ /dev/null
@@ -1,1134 +0,0 @@
-/*
- * Copyright (c) 2013, Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef __MOCK_H__
-#define __MOCK_H__
-
-#include "compat.h"
-#include "pkcs11.h"
-#include "pkcs11i.h"
-
-enum {
- MOCK_DATA_OBJECT = 2,
- MOCK_PRIVATE_KEY_CAPITALIZE = 3,
- MOCK_PUBLIC_KEY_CAPITALIZE = 4,
- MOCK_PRIVATE_KEY_PREFIX = 5,
- MOCK_PUBLIC_KEY_PREFIX = 6,
-
- /*
- * CKM_MOCK_CAPITALIZE (encrypt/decrypt)
- * - Capitalizes to encrypt
- * - Lowercase to decrypt
- */
- CKM_MOCK_CAPITALIZE = (CKM_VENDOR_DEFINED | 1),
-
- /*
- * CKM_MOCK_PREFIX (sign/verify)
- * - Sign prefixes the data with a key label
- * - Verify unprefixes data using key label
- */
- CKM_MOCK_PREFIX = (CKM_VENDOR_DEFINED | 2),
-
- /*
- * CKM_MOCK_GENERATE (generate-pair)
- * - Generates a pair of keys, mechanism parameter should be 'generate'
- */
- CKM_MOCK_GENERATE = (CKM_VENDOR_DEFINED | 3),
-
- /*
- * CKM_MOCK_WRAP (wrap key)
- * - Wraps key by returning value, mechanism parameter should be 'wrap'
- */
- CKM_MOCK_WRAP = (CKM_VENDOR_DEFINED | 4),
-
- /*
- * CKM_MOCK_DERIVE (derive-key)
- * - Derives key by setting value to 'derived'
- * - Mechanism param should be 'derive'
- */
- CKM_MOCK_DERIVE = (CKM_VENDOR_DEFINED | 5),
-
- /*
- * CKM_MOCK_COUNT (digest)
- * - Counts the number of bytes, and returns a CK_ULONG 'hash' value
- */
- CKM_MOCK_COUNT = (CKM_VENDOR_DEFINED | 6),
-
- MOCK_SLOT_ONE_ID = 52,
- MOCK_SLOT_TWO_ID = 134,
-
- MOCK_SLOTS_PRESENT = 1,
- MOCK_SLOTS_ALL = 2,
-};
-
-static const CK_INFO MOCK_INFO = {
- { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR },
- "MOCK MANUFACTURER ",
- 0,
- "MOCK LIBRARY ",
- { 45, 145 }
-};
-
-extern CK_FUNCTION_LIST mock_module;
-
-extern CK_FUNCTION_LIST mock_module_no_slots;
-
-extern CK_X_FUNCTION_LIST mock_x_module_no_slots;
-
-void mock_module_init (void);
-
-typedef bool (* mock_enumerator) (CK_OBJECT_HANDLE handle,
- CK_ATTRIBUTE *attrs,
- void *user_data);
-
-void mock_module_enumerate_objects (CK_SESSION_HANDLE session,
- mock_enumerator func,
- void *user_data);
-
-void mock_module_add_object (CK_SLOT_ID slot_id,
- const CK_ATTRIBUTE *attrs);
-
-void mock_module_reset (void);
-
-bool mock_module_initialized (void);
-
-void mock_module_take_object (CK_SLOT_ID slot_id,
- CK_ATTRIBUTE *attrs);
-
-CK_RV mock_C_Initialize (CK_VOID_PTR init_args);
-
-CK_RV mock_C_Initialize__fails (CK_VOID_PTR init_args);
-
-CK_RV mock_X_Initialize (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR init_args);
-
-CK_RV mock_X_Initialize__fails (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR init_args);
-
-CK_RV mock_C_Finalize (CK_VOID_PTR reserved);
-
-CK_RV mock_X_Finalize (CK_X_FUNCTION_LIST *self,
- CK_VOID_PTR reserved);
-
-CK_RV mock_C_GetInfo (CK_INFO_PTR info);
-
-CK_RV mock_X_GetInfo (CK_X_FUNCTION_LIST *self,
- CK_INFO_PTR info);
-
-CK_RV mock_C_GetFunctionList_not_supported (CK_FUNCTION_LIST_PTR_PTR list);
-
-CK_RV mock_C_GetSlotList (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetSlotList__no_tokens (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetSlotList__fail_first (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetSlotList__fail_late (CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetSlotInfo (CK_SLOT_ID slot_id,
- CK_SLOT_INFO_PTR info);
-
-CK_RV mock_X_GetSlotList__no_tokens (CK_X_FUNCTION_LIST *self,
- CK_BBOOL token_present,
- CK_SLOT_ID_PTR slot_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetSlotInfo__invalid_slotid (CK_SLOT_ID slot_id,
- CK_SLOT_INFO_PTR info);
-
-CK_RV mock_X_GetSlotInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_SLOT_INFO_PTR info);
-
-CK_RV mock_C_GetTokenInfo (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info);
-
-CK_RV mock_C_GetTokenInfo__invalid_slotid (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info);
-
-CK_RV mock_X_GetTokenInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info);
-
-CK_RV mock_C_GetTokenInfo__not_initialized (CK_SLOT_ID slot_id,
- CK_TOKEN_INFO_PTR info);
-
-CK_RV mock_C_GetMechanismList (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetMechanismList__invalid_slotid (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_X_GetMechanismList__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_GetMechanismInfo (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info);
-
-CK_RV mock_C_GetMechanismInfo__invalid_slotid (CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info);
-
-CK_RV mock_X_GetMechanismInfo__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info);
-
-CK_RV mock_C_InitToken__specific_args (CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label);
-
-CK_RV mock_C_InitToken__invalid_slotid (CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label);
-
-CK_RV mock_X_InitToken__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len,
- CK_UTF8CHAR_PTR label);
-
-
-CK_RV mock_C_WaitForSlotEvent (CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved);
-
-CK_RV mock_C_WaitForSlotEvent__no_event (CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved);
-
-CK_RV mock_X_WaitForSlotEvent__no_event (CK_X_FUNCTION_LIST *self,
- CK_FLAGS flags,
- CK_SLOT_ID_PTR slot,
- CK_VOID_PTR reserved);
-
-CK_RV mock_C_OpenSession__invalid_slotid (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session);
-
-CK_RV mock_X_OpenSession__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session);
-
-CK_RV mock_C_OpenSession__fails (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session);
-
-CK_RV mock_C_OpenSession (CK_SLOT_ID slot_id,
- CK_FLAGS flags,
- CK_VOID_PTR user_data,
- CK_NOTIFY callback,
- CK_SESSION_HANDLE_PTR session);
-
-CK_RV mock_C_CloseSession (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_CloseSession__invalid_handle (CK_SESSION_HANDLE session);
-
-CK_RV mock_X_CloseSession__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session);
-
-CK_RV mock_C_CloseAllSessions (CK_SLOT_ID slot_id);
-
-CK_RV mock_C_CloseAllSessions__invalid_slotid (CK_SLOT_ID slot_id);
-
-CK_RV mock_X_CloseAllSessions__invalid_slotid (CK_X_FUNCTION_LIST *self,
- CK_SLOT_ID slot_id);
-
-CK_RV mock_C_GetFunctionStatus (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_GetFunctionStatus__not_parallel (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_CancelFunction (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_CancelFunction__not_parallel (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_GetSessionInfo (CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info);
-
-CK_RV mock_C_GetSessionInfo__invalid_handle (CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info);
-
-CK_RV mock_X_GetSessionInfo__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_SESSION_INFO_PTR info);
-
-CK_RV mock_C_InitPIN__specific_args (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_C_InitPIN__invalid_handle (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_X_InitPIN__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_C_SetPIN__specific_args (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len);
-
-CK_RV mock_C_SetPIN__invalid_handle (CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len);
-
-CK_RV mock_X_SetPIN__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len,
- CK_UTF8CHAR_PTR new_pin,
- CK_ULONG new_pin_len);
-
-CK_RV mock_C_GetOperationState (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len);
-
-CK_RV mock_C_GetOperationState__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len);
-
-CK_RV mock_X_GetOperationState__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len);
-
-CK_RV mock_C_SetOperationState (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key);
-
-CK_RV mock_C_SetOperationState__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key);
-
-CK_RV mock_X_SetOperationState__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len,
- CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key);
-
-CK_RV mock_C_Login (CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_C_Login__invalid_handle (CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_X_Login__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len);
-
-CK_RV mock_C_Logout (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_Logout__invalid_handle (CK_SESSION_HANDLE session);
-
-CK_RV mock_X_Logout__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session);
-
-CK_RV mock_C_CreateObject (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR object);
-
-CK_RV mock_C_CreateObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object);
-
-CK_RV mock_X_CreateObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object);
-
-CK_RV mock_C_CopyObject (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object);
-
-CK_RV mock_C_CopyObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object);
-
-CK_RV mock_X_CopyObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object);
-
-CK_RV mock_C_DestroyObject (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object);
-
-CK_RV mock_C_DestroyObject__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object);
-
-CK_RV mock_X_DestroyObject__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object);
-
-CK_RV mock_C_GetObjectSize (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size);
-
-CK_RV mock_C_GetObjectSize__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size);
-
-CK_RV mock_X_GetObjectSize__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size);
-
-CK_RV mock_C_GetAttributeValue (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_GetAttributeValue__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_X_GetAttributeValue__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_GetAttributeValue__fail_first (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_GetAttributeValue__fail_late (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_SetAttributeValue (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_SetAttributeValue__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_X_SetAttributeValue__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_FindObjectsInit (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_FindObjectsInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_X_FindObjectsInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_FindObjectsInit__fails (CK_SESSION_HANDLE session,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count);
-
-CK_RV mock_C_FindObjects (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_object_count,
- CK_ULONG_PTR object_count);
-
-CK_RV mock_C_FindObjects__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count);
-
-CK_RV mock_X_FindObjects__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_FindObjects__fails (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count,
- CK_ULONG_PTR count);
-
-CK_RV mock_C_FindObjectsFinal (CK_SESSION_HANDLE session);
-
-CK_RV mock_C_FindObjectsFinal__invalid_handle (CK_SESSION_HANDLE session);
-
-CK_RV mock_X_FindObjectsFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session);
-
-CK_RV mock_C_EncryptInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_EncryptInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_EncryptInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_Encrypt (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len);
-
-CK_RV mock_C_Encrypt__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len);
-
-CK_RV mock_X_Encrypt__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG_PTR encrypted_data_len);
-
-CK_RV mock_C_EncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len);
-
-CK_RV mock_C_EncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len);
-
-CK_RV mock_X_EncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len);
-
-CK_RV mock_C_EncryptFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_encrypted_part,
- CK_ULONG_PTR last_encrypted_part_len);
-
-CK_RV mock_C_EncryptFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len);
-
-CK_RV mock_X_EncryptFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len);
-
-CK_RV mock_C_DecryptInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_DecryptInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_DecryptInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_Decrypt (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_data,
- CK_ULONG encrypted_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_C_Decrypt__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_data,
- CK_ULONG enc_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_X_Decrypt__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_data,
- CK_ULONG enc_data_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_C_DecryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_DecryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_X_DecryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_DecryptFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len);
-
-CK_RV mock_C_DecryptFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len);
-
-CK_RV mock_X_DecryptFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len);
-
-CK_RV mock_C_DigestInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism);
-
-CK_RV mock_C_DigestInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism);
-
-CK_RV mock_X_DigestInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism);
-
-CK_RV mock_C_Digest (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_C_Digest__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_X_Digest__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_C_DigestUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_DigestUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_X_DigestUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_DigestKey (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_DigestKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_DigestKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_DigestFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_C_DigestFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_X_DigestFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len);
-
-CK_RV mock_C_SignInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_SignInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_SignInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_Sign (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_Sign__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_X_Sign__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_SignUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_SignUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_X_SignUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_SignFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_SignFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_X_SignFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_SignRecoverInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_SignRecoverInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_SignRecoverInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_SignRecover (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_SignRecover__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_X_SignRecover__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len);
-
-CK_RV mock_C_VerifyInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_VerifyInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_VerifyInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_Verify (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_C_Verify__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_X_Verify__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR data,
- CK_ULONG data_len,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_C_VerifyUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_VerifyUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_X_VerifyUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len);
-
-CK_RV mock_C_VerifyFinal (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_C_VerifyFinal__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_X_VerifyFinal__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len);
-
-CK_RV mock_C_VerifyRecoverInit (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_VerifyRecoverInit__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_X_VerifyRecoverInit__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key);
-
-CK_RV mock_C_VerifyRecover (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_C_VerifyRecover__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_X_VerifyRecover__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR signature,
- CK_ULONG signature_len,
- CK_BYTE_PTR data,
- CK_ULONG_PTR data_len);
-
-CK_RV mock_C_DigestEncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len);
-
-CK_RV mock_C_DigestEncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len);
-
-CK_RV mock_X_DigestEncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len);
-
-CK_RV mock_C_DecryptDigestUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_DecryptDigestUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_X_DecryptDigestUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_SignEncryptUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len);
-
-CK_RV mock_C_SignEncryptUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len);
-
-CK_RV mock_X_SignEncryptUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR part,
- CK_ULONG part_len,
- CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len);
-
-CK_RV mock_C_DecryptVerifyUpdate (CK_SESSION_HANDLE session,
- CK_BYTE_PTR encrypted_part,
- CK_ULONG encrypted_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_DecryptVerifyUpdate__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_X_DecryptVerifyUpdate__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len,
- CK_BYTE_PTR part,
- CK_ULONG_PTR part_len);
-
-CK_RV mock_C_GenerateKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_GenerateKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_X_GenerateKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_GenerateKeyPair (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR public_key_template,
- CK_ULONG public_key_count,
- CK_ATTRIBUTE_PTR private_key_template,
- CK_ULONG private_key_count,
- CK_OBJECT_HANDLE_PTR public_key,
- CK_OBJECT_HANDLE_PTR private_key);
-
-CK_RV mock_C_GenerateKeyPair__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR pub_template,
- CK_ULONG pub_count,
- CK_ATTRIBUTE_PTR priv_template,
- CK_ULONG priv_count,
- CK_OBJECT_HANDLE_PTR pub_key,
- CK_OBJECT_HANDLE_PTR priv_key);
-
-CK_RV mock_X_GenerateKeyPair__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR pub_template,
- CK_ULONG pub_count,
- CK_ATTRIBUTE_PTR priv_template,
- CK_ULONG priv_count,
- CK_OBJECT_HANDLE_PTR pub_key,
- CK_OBJECT_HANDLE_PTR priv_key);
-
-CK_RV mock_C_WrapKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len);
-
-CK_RV mock_C_WrapKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len);
-
-CK_RV mock_X_WrapKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key,
- CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG_PTR wrapped_key_len);
-
-CK_RV mock_C_UnwrapKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_UnwrapKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_X_UnwrapKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key,
- CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_DeriveKey (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_DeriveKey__invalid_handle (CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_X_DeriveKey__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key,
- CK_ATTRIBUTE_PTR template,
- CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key);
-
-CK_RV mock_C_SeedRandom (CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len);
-
-CK_RV mock_C_SeedRandom__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len);
-
-CK_RV mock_X_SeedRandom__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR seed,
- CK_ULONG seed_len);
-
-CK_RV mock_C_GenerateRandom (CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len);
-
-CK_RV mock_C_GenerateRandom__invalid_handle (CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len);
-
-CK_RV mock_X_GenerateRandom__invalid_handle (CK_X_FUNCTION_LIST *self,
- CK_SESSION_HANDLE session,
- CK_BYTE_PTR random_data,
- CK_ULONG random_len);
-
-#endif /* __MOCK_H__ */
diff --git a/common/path.c b/common/path.c
deleted file mode 100644
index 34c00cb..0000000
--- a/common/path.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright (c) 2005 Stefan Walter
- * Copyright (c) 2011 Collabora Ltd.
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Stef Walter <stefw@redhat.com>
- */
-
-#include "config.h"
-
-#include "debug.h"
-#include "message.h"
-#include "path.h"
-
-#include <assert.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef OS_UNIX
-#include <pwd.h>
-#include <unistd.h>
-#endif
-
-#ifdef OS_WIN32
-#include <shlobj.h>
-#endif
-
-
-char *
-p11_path_base (const char *path)
-{
-#ifdef OS_WIN32
- const char *delims = "/\\";
-#else
- const char *delims = "/";
-#endif
-
- const char *end;
- const char *beg;
-
- return_val_if_fail (path != NULL, NULL);
-
- /* Any trailing slashes */
- end = path + strlen (path);
- while (end != path) {
- if (!strchr (delims, *(end - 1)))
- break;
- end--;
- }
-
- /* Find the last slash after those */
- beg = end;
- while (beg != path) {
- if (strchr (delims, *(beg - 1)))
- break;
- beg--;
- }
-
- return strndup (beg, end - beg);
-}
-
-static inline bool
-is_path_component_or_null (char ch)
-{
- return (ch == '\0' || ch == '/'
-#ifdef OS_WIN32
- || ch == '\\'
-#endif
- );
-}
-
-static char *
-expand_homedir (const char *remainder)
-{
- const char *env;
-
- if (getauxval (AT_SECURE)) {
- errno = EPERM;
- return NULL;
- }
-
- while (remainder[0] && is_path_component_or_null (remainder[0]))
- remainder++;
- if (remainder[0] == '\0')
- remainder = NULL;
-
- /* Expand $XDG_CONFIG_HOME */
- if (remainder != NULL &&
- strncmp (remainder, ".config", 7) == 0 &&
- is_path_component_or_null (remainder[7])) {
- env = getenv ("XDG_CONFIG_HOME");
- if (env && env[0])
- return p11_path_build (env, remainder + 8, NULL);
- }
-
- env = getenv ("HOME");
- if (env && env[0]) {
- return p11_path_build (env, remainder, NULL);
-
- } else {
-#ifdef OS_UNIX
- char buf[1024];
- struct passwd pws;
- struct passwd *pwd = NULL;
- int error;
- int ret;
-
- errno = 0;
- ret = getpwuid_r (getuid (), &pws, buf, sizeof (buf), &pwd);
- if (pwd == NULL) {
- if (ret == 0)
- error = ESRCH;
- else
- error = errno;
- p11_message_err (error, "couldn't lookup home directory for user %d", getuid ());
- errno = error;
- return NULL;
- }
-
- return p11_path_build (pwd->pw_dir, remainder, NULL);
-
-#else /* OS_WIN32 */
- char directory[MAX_PATH + 1];
-
- if (!SHGetSpecialFolderPathA (NULL, directory, CSIDL_PROFILE, TRUE)) {
- p11_message ("couldn't lookup home directory for user");
- errno = ENOTDIR;
- return NULL;
- }
-
- return p11_path_build (directory, remainder, NULL);
-
-#endif /* OS_WIN32 */
- }
-}
-
-char *
-p11_path_expand (const char *path)
-{
- return_val_if_fail (path != NULL, NULL);
-
- if (strncmp (path, "~", 1) == 0 &&
- is_path_component_or_null (path[1])) {
- return expand_homedir (path + 1);
-
- } else {
- return strdup (path);
- }
-}
-
-bool
-p11_path_absolute (const char *path)
-{
- return_val_if_fail (path != NULL, false);
-
- return (path[0] == '/')
-#ifdef OS_WIN32
- || (path[0] != '\0' && path[1] == ':' && path[2] == '\\')
-#endif
- ;
-}
-
-char *
-p11_path_build (const char *path,
- ...)
-{
-#ifdef OS_WIN32
- const char delim = '\\';
-#else
- const char delim = '/';
-#endif
- const char *first = path;
- char *built;
- size_t len;
- size_t at;
- size_t num;
- size_t until;
- va_list va;
-
- return_val_if_fail (path != NULL, NULL);
-
- len = 1;
- va_start (va, path);
- while (path != NULL) {
- len += strlen (path) + 1;
- path = va_arg (va, const char *);
- }
- va_end (va);
-
- built = malloc (len + 1);
- return_val_if_fail (built != NULL, NULL);
-
- at = 0;
- path = first;
- va_start (va, path);
- while (path != NULL) {
- num = strlen (path);
-
- /* Trim end of the path */
- until = (at > 0) ? 0 : 1;
- while (num > until && is_path_component_or_null (path[num - 1]))
- num--;
-
- if (at != 0) {
- if (num == 0)
- continue;
- built[at++] = delim;
- }
-
- assert (at + num < len);
- memcpy (built + at, path, num);
- at += num;
-
- path = va_arg (va, const char *);
-
- /* Trim beginning of path */
- while (path && path[0] && is_path_component_or_null (path[0]))
- path++;
- }
- va_end (va);
-
- assert (at < len);
- built[at] = '\0';
- return built;
-}
-
-char *
-p11_path_parent (const char *path)
-{
- const char *e;
- char *parent;
- bool had = false;
-
- return_val_if_fail (path != NULL, NULL);
-
- /* Find the end of the last component */
- e = path + strlen (path);
- while (e != path && is_path_component_or_null (*e))
- e--;
-
- /* Find the beginning of the last component */
- while (e != path && !is_path_component_or_null (*e)) {
- had = true;
- e--;
- }
-
- /* Find the end of the last component */
- while (e != path && is_path_component_or_null (*e))
- e--;
-
- if (e == path) {
- if (!had)
- return NULL;
- parent = strdup ("/");
- } else {
- parent = strndup (path, (e - path) + 1);
- }
-
- return_val_if_fail (parent != NULL, NULL);
- return parent;
-}
-
-bool
-p11_path_prefix (const char *string,
- const char *prefix)
-{
- int a, b;
-
- return_val_if_fail (string != NULL, false);
- return_val_if_fail (prefix != NULL, false);
-
- a = strlen (string);
- b = strlen (prefix);
-
- return a > b &&
- strncmp (string, prefix, b) == 0 &&
- is_path_component_or_null (string[b]);
-}
-
-void
-p11_path_canon (char *name)
-{
- static const char *VALID =
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_";
- int i;
-
- return_if_fail (name != NULL);
-
- for (i = 0; name[i] != '\0'; i++) {
- if (strchr (VALID, name[i]) == NULL)
- name[i] = '_';
- }
-}
diff --git a/common/path.h b/common/path.h
deleted file mode 100644
index 0b19a5d..0000000
--- a/common/path.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef P11_PATH_H__
-#define P11_PATH_H__
-
-#include "compat.h"
-
-#ifdef OS_WIN32
-#define P11_PATH_SEP ";"
-#define P11_PATH_SEP_C ';'
-#else
-#define P11_PATH_SEP ":"
-#define P11_PATH_SEP_C ':'
-#endif
-
-/*
- * The semantics of both POSIX basename() and GNU asename() are so crappy that
- * we just don't even bother. And what's worse is how it completely changes
- * behavior if _GNU_SOURCE is defined. Nasty stuff.
- */
-char * p11_path_base (const char *name);
-
-char * p11_path_expand (const char *path);
-
-char * p11_path_build (const char *path,
- ...) GNUC_NULL_TERMINATED;
-
-bool p11_path_absolute (const char *path);
-
-char * p11_path_parent (const char *path);
-
-bool p11_path_prefix (const char *string,
- const char *prefix);
-
-void p11_path_canon (char *name);
-
-#endif /* P11_PATH_H__ */
diff --git a/common/pkcs11.h b/common/pkcs11.h
deleted file mode 100644
index f8dc78e..0000000
--- a/common/pkcs11.h
+++ /dev/null
@@ -1,1398 +0,0 @@
-/* pkcs11.h
- Copyright 2006, 2007 g10 Code GmbH
- Copyright 2006 Andreas Jellinghaus
-
- This file is free software; as a special exception the author gives
- unlimited permission to copy and/or distribute it, with or without
- modifications, as long as this notice is preserved.
-
- This file is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, to the extent permitted by law; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. */
-
-/* Please submit changes back to the Scute project at
- http://www.scute.org/ (or send them to marcus@g10code.com), so that
- they can be picked up by other projects from there as well. */
-
-/* This file is a modified implementation of the PKCS #11 standard by
- RSA Security Inc. It is mostly a drop-in replacement, with the
- following change:
-
- This header file does not require any macro definitions by the user
- (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros
- for you (if useful, some are missing, let me know if you need
- more).
-
- There is an additional API available that does comply better to the
- GNU coding standard. It can be switched on by defining
- CRYPTOKI_GNU before including this header file. For this, the
- following changes are made to the specification:
-
- All structure types are changed to a "struct ck_foo" where CK_FOO
- is the type name in PKCS #11.
-
- All non-structure types are changed to ck_foo_t where CK_FOO is the
- lowercase version of the type name in PKCS #11. The basic types
- (CK_ULONG et al.) are removed without substitute.
-
- All members of structures are modified in the following way: Type
- indication prefixes are removed, and underscore characters are
- inserted before words. Then the result is lowercased.
-
- Note that function names are still in the original case, as they
- need for ABI compatibility.
-
- CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use
- <stdbool.h>.
-
- If CRYPTOKI_COMPAT is defined before including this header file,
- then none of the API changes above take place, and the API is the
- one defined by the PKCS #11 standard. */
-
-#ifndef PKCS11_H
-#define PKCS11_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-/* The version of cryptoki we implement. The revision is changed with
- each modification of this file. If you do not use the "official"
- version of this file, please consider deleting the revision macro
- (you may use a macro with a different name to keep track of your
- versions). */
-#define CRYPTOKI_VERSION_MAJOR 2
-#define CRYPTOKI_VERSION_MINOR 20
-#define CRYPTOKI_VERSION_REVISION 6
-
-
-/* Compatibility interface is default, unless CRYPTOKI_GNU is
- given. */
-#ifndef CRYPTOKI_GNU
-#ifndef CRYPTOKI_COMPAT
-#define CRYPTOKI_COMPAT 1
-#endif
-#endif
-
-/* System dependencies. */
-
-#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
-
-/* There is a matching pop below. */
-#pragma pack(push, cryptoki, 1)
-
-#ifdef CRYPTOKI_EXPORTS
-#define CK_SPEC __declspec(dllexport)
-#else
-#define CK_SPEC __declspec(dllimport)
-#endif
-
-#else
-
-#define CK_SPEC
-
-#endif
-
-
-#ifdef CRYPTOKI_COMPAT
- /* If we are in compatibility mode, switch all exposed names to the
- PKCS #11 variant. There are corresponding #undefs below. */
-
-#define ck_flags_t CK_FLAGS
-#define ck_version _CK_VERSION
-
-#define ck_info _CK_INFO
-#define cryptoki_version cryptokiVersion
-#define manufacturer_id manufacturerID
-#define library_description libraryDescription
-#define library_version libraryVersion
-
-#define ck_notification_t CK_NOTIFICATION
-#define ck_slot_id_t CK_SLOT_ID
-
-#define ck_slot_info _CK_SLOT_INFO
-#define slot_description slotDescription
-#define hardware_version hardwareVersion
-#define firmware_version firmwareVersion
-
-#define ck_token_info _CK_TOKEN_INFO
-#define serial_number serialNumber
-#define max_session_count ulMaxSessionCount
-#define session_count ulSessionCount
-#define max_rw_session_count ulMaxRwSessionCount
-#define rw_session_count ulRwSessionCount
-#define max_pin_len ulMaxPinLen
-#define min_pin_len ulMinPinLen
-#define total_public_memory ulTotalPublicMemory
-#define free_public_memory ulFreePublicMemory
-#define total_private_memory ulTotalPrivateMemory
-#define free_private_memory ulFreePrivateMemory
-#define utc_time utcTime
-
-#define ck_session_handle_t CK_SESSION_HANDLE
-#define ck_user_type_t CK_USER_TYPE
-#define ck_state_t CK_STATE
-
-#define ck_session_info _CK_SESSION_INFO
-#define slot_id slotID
-#define device_error ulDeviceError
-
-#define ck_object_handle_t CK_OBJECT_HANDLE
-#define ck_object_class_t CK_OBJECT_CLASS
-#define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
-#define ck_key_type_t CK_KEY_TYPE
-#define ck_certificate_type_t CK_CERTIFICATE_TYPE
-#define ck_attribute_type_t CK_ATTRIBUTE_TYPE
-
-#define ck_attribute _CK_ATTRIBUTE
-#define value pValue
-#define value_len ulValueLen
-
-#define ck_date _CK_DATE
-
-#define ck_mechanism_type_t CK_MECHANISM_TYPE
-
-#define ck_mechanism _CK_MECHANISM
-#define parameter pParameter
-#define parameter_len ulParameterLen
-
-#define ck_mechanism_info _CK_MECHANISM_INFO
-#define min_key_size ulMinKeySize
-#define max_key_size ulMaxKeySize
-
-#define ck_rv_t CK_RV
-#define ck_notify_t CK_NOTIFY
-
-#define ck_function_list _CK_FUNCTION_LIST
-
-#define ck_createmutex_t CK_CREATEMUTEX
-#define ck_destroymutex_t CK_DESTROYMUTEX
-#define ck_lockmutex_t CK_LOCKMUTEX
-#define ck_unlockmutex_t CK_UNLOCKMUTEX
-
-#define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
-#define create_mutex CreateMutex
-#define destroy_mutex DestroyMutex
-#define lock_mutex LockMutex
-#define unlock_mutex UnlockMutex
-#define reserved pReserved
-
-#endif /* CRYPTOKI_COMPAT */
-
-
-
-typedef unsigned long ck_flags_t;
-
-struct ck_version
-{
- unsigned char major;
- unsigned char minor;
-};
-
-
-struct ck_info
-{
- struct ck_version cryptoki_version;
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- unsigned char library_description[32];
- struct ck_version library_version;
-};
-
-
-typedef unsigned long ck_notification_t;
-
-#define CKN_SURRENDER (0UL)
-
-
-typedef unsigned long ck_slot_id_t;
-
-
-struct ck_slot_info
-{
- unsigned char slot_description[64];
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
-};
-
-
-#define CKF_TOKEN_PRESENT (1UL << 0)
-#define CKF_REMOVABLE_DEVICE (1UL << 1)
-#define CKF_HW_SLOT (1UL << 2)
-#define CKF_ARRAY_ATTRIBUTE (1UL << 30)
-
-
-struct ck_token_info
-{
- unsigned char label[32];
- unsigned char manufacturer_id[32];
- unsigned char model[16];
- unsigned char serial_number[16];
- ck_flags_t flags;
- unsigned long max_session_count;
- unsigned long session_count;
- unsigned long max_rw_session_count;
- unsigned long rw_session_count;
- unsigned long max_pin_len;
- unsigned long min_pin_len;
- unsigned long total_public_memory;
- unsigned long free_public_memory;
- unsigned long total_private_memory;
- unsigned long free_private_memory;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
- unsigned char utc_time[16];
-};
-
-
-#define CKF_RNG (1UL << 0)
-#define CKF_WRITE_PROTECTED (1UL << 1)
-#define CKF_LOGIN_REQUIRED (1UL << 2)
-#define CKF_USER_PIN_INITIALIZED (1UL << 3)
-#define CKF_RESTORE_KEY_NOT_NEEDED (1UL << 5)
-#define CKF_CLOCK_ON_TOKEN (1UL << 6)
-#define CKF_PROTECTED_AUTHENTICATION_PATH (1UL << 8)
-#define CKF_DUAL_CRYPTO_OPERATIONS (1UL << 9)
-#define CKF_TOKEN_INITIALIZED (1UL << 10)
-#define CKF_SECONDARY_AUTHENTICATION (1UL << 11)
-#define CKF_USER_PIN_COUNT_LOW (1UL << 16)
-#define CKF_USER_PIN_FINAL_TRY (1UL << 17)
-#define CKF_USER_PIN_LOCKED (1UL << 18)
-#define CKF_USER_PIN_TO_BE_CHANGED (1UL << 19)
-#define CKF_SO_PIN_COUNT_LOW (1UL << 20)
-#define CKF_SO_PIN_FINAL_TRY (1UL << 21)
-#define CKF_SO_PIN_LOCKED (1UL << 22)
-#define CKF_SO_PIN_TO_BE_CHANGED (1UL << 23)
-
-#define CK_UNAVAILABLE_INFORMATION ((unsigned long)-1L)
-#define CK_EFFECTIVELY_INFINITE (0UL)
-
-
-typedef unsigned long ck_session_handle_t;
-
-#define CK_INVALID_HANDLE (0UL)
-
-
-typedef unsigned long ck_user_type_t;
-
-#define CKU_SO (0UL)
-#define CKU_USER (1UL)
-#define CKU_CONTEXT_SPECIFIC (2UL)
-
-
-typedef unsigned long ck_state_t;
-
-#define CKS_RO_PUBLIC_SESSION (0UL)
-#define CKS_RO_USER_FUNCTIONS (1UL)
-#define CKS_RW_PUBLIC_SESSION (2UL)
-#define CKS_RW_USER_FUNCTIONS (3UL)
-#define CKS_RW_SO_FUNCTIONS (4UL)
-
-
-struct ck_session_info
-{
- ck_slot_id_t slot_id;
- ck_state_t state;
- ck_flags_t flags;
- unsigned long device_error;
-};
-
-#define CKF_RW_SESSION (1UL << 1)
-#define CKF_SERIAL_SESSION (1UL << 2)
-
-
-typedef unsigned long ck_object_handle_t;
-
-
-typedef unsigned long ck_object_class_t;
-
-#define CKO_DATA (0UL)
-#define CKO_CERTIFICATE (1UL)
-#define CKO_PUBLIC_KEY (2UL)
-#define CKO_PRIVATE_KEY (3UL)
-#define CKO_SECRET_KEY (4UL)
-#define CKO_HW_FEATURE (5UL)
-#define CKO_DOMAIN_PARAMETERS (6UL)
-#define CKO_MECHANISM (7UL)
-#define CKO_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-typedef unsigned long ck_hw_feature_type_t;
-
-#define CKH_MONOTONIC_COUNTER (1UL)
-#define CKH_CLOCK (2UL)
-#define CKH_USER_INTERFACE (3UL)
-#define CKH_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-typedef unsigned long ck_key_type_t;
-
-#define CKK_RSA (0UL)
-#define CKK_DSA (1UL)
-#define CKK_DH (2UL)
-#define CKK_ECDSA (3UL)
-#define CKK_EC (3UL)
-#define CKK_X9_42_DH (4UL)
-#define CKK_KEA (5UL)
-#define CKK_GENERIC_SECRET (0x10UL)
-#define CKK_RC2 (0x11UL)
-#define CKK_RC4 (0x12UL)
-#define CKK_DES (0x13UL)
-#define CKK_DES2 (0x14UL)
-#define CKK_DES3 (0x15UL)
-#define CKK_CAST (0x16UL)
-#define CKK_CAST3 (0x17UL)
-#define CKK_CAST128 (0x18UL)
-#define CKK_RC5 (0x19UL)
-#define CKK_IDEA (0x1aUL)
-#define CKK_SKIPJACK (0x1bUL)
-#define CKK_BATON (0x1cUL)
-#define CKK_JUNIPER (0x1dUL)
-#define CKK_CDMF (0x1eUL)
-#define CKK_AES (0x1fUL)
-#define CKK_BLOWFISH (0x20UL)
-#define CKK_TWOFISH (0x21UL)
-#define CKK_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-typedef unsigned long ck_certificate_type_t;
-
-#define CKC_X_509 (0UL)
-#define CKC_X_509_ATTR_CERT (1UL)
-#define CKC_WTLS (2UL)
-#define CKC_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-typedef unsigned long ck_attribute_type_t;
-
-#define CKA_CLASS (0UL)
-#define CKA_TOKEN (1UL)
-#define CKA_PRIVATE (2UL)
-#define CKA_LABEL (3UL)
-#define CKA_APPLICATION (0x10UL)
-#define CKA_VALUE (0x11UL)
-#define CKA_OBJECT_ID (0x12UL)
-#define CKA_CERTIFICATE_TYPE (0x80UL)
-#define CKA_ISSUER (0x81UL)
-#define CKA_SERIAL_NUMBER (0x82UL)
-#define CKA_AC_ISSUER (0x83UL)
-#define CKA_OWNER (0x84UL)
-#define CKA_ATTR_TYPES (0x85UL)
-#define CKA_TRUSTED (0x86UL)
-#define CKA_CERTIFICATE_CATEGORY (0x87UL)
-#define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88UL)
-#define CKA_URL (0x89UL)
-#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8aUL)
-#define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8bUL)
-#define CKA_CHECK_VALUE (0x90UL)
-#define CKA_KEY_TYPE (0x100UL)
-#define CKA_SUBJECT (0x101UL)
-#define CKA_ID (0x102UL)
-#define CKA_SENSITIVE (0x103UL)
-#define CKA_ENCRYPT (0x104UL)
-#define CKA_DECRYPT (0x105UL)
-#define CKA_WRAP (0x106UL)
-#define CKA_UNWRAP (0x107UL)
-#define CKA_SIGN (0x108UL)
-#define CKA_SIGN_RECOVER (0x109UL)
-#define CKA_VERIFY (0x10aUL)
-#define CKA_VERIFY_RECOVER (0x10bUL)
-#define CKA_DERIVE (0x10cUL)
-#define CKA_START_DATE (0x110UL)
-#define CKA_END_DATE (0x111UL)
-#define CKA_MODULUS (0x120UL)
-#define CKA_MODULUS_BITS (0x121UL)
-#define CKA_PUBLIC_EXPONENT (0x122UL)
-#define CKA_PRIVATE_EXPONENT (0x123UL)
-#define CKA_PRIME_1 (0x124UL)
-#define CKA_PRIME_2 (0x125UL)
-#define CKA_EXPONENT_1 (0x126UL)
-#define CKA_EXPONENT_2 (0x127UL)
-#define CKA_COEFFICIENT (0x128UL)
-#define CKA_PRIME (0x130UL)
-#define CKA_SUBPRIME (0x131UL)
-#define CKA_BASE (0x132UL)
-#define CKA_PRIME_BITS (0x133UL)
-#define CKA_SUB_PRIME_BITS (0x134UL)
-#define CKA_VALUE_BITS (0x160UL)
-#define CKA_VALUE_LEN (0x161UL)
-#define CKA_EXTRACTABLE (0x162UL)
-#define CKA_LOCAL (0x163UL)
-#define CKA_NEVER_EXTRACTABLE (0x164UL)
-#define CKA_ALWAYS_SENSITIVE (0x165UL)
-#define CKA_KEY_GEN_MECHANISM (0x166UL)
-#define CKA_MODIFIABLE (0x170UL)
-#define CKA_ECDSA_PARAMS (0x180UL)
-#define CKA_EC_PARAMS (0x180UL)
-#define CKA_EC_POINT (0x181UL)
-#define CKA_SECONDARY_AUTH (0x200UL)
-#define CKA_AUTH_PIN_FLAGS (0x201UL)
-#define CKA_ALWAYS_AUTHENTICATE (0x202UL)
-#define CKA_WRAP_WITH_TRUSTED (0x210UL)
-#define CKA_HW_FEATURE_TYPE (0x300UL)
-#define CKA_RESET_ON_INIT (0x301UL)
-#define CKA_HAS_RESET (0x302UL)
-#define CKA_PIXEL_X (0x400UL)
-#define CKA_PIXEL_Y (0x401UL)
-#define CKA_RESOLUTION (0x402UL)
-#define CKA_CHAR_ROWS (0x403UL)
-#define CKA_CHAR_COLUMNS (0x404UL)
-#define CKA_COLOR (0x405UL)
-#define CKA_BITS_PER_PIXEL (0x406UL)
-#define CKA_CHAR_SETS (0x480UL)
-#define CKA_ENCODING_METHODS (0x481UL)
-#define CKA_MIME_TYPES (0x482UL)
-#define CKA_MECHANISM_TYPE (0x500UL)
-#define CKA_REQUIRED_CMS_ATTRIBUTES (0x501UL)
-#define CKA_DEFAULT_CMS_ATTRIBUTES (0x502UL)
-#define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503UL)
-#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211UL)
-#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212UL)
-#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600UL)
-#define CKA_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-struct ck_attribute
-{
- ck_attribute_type_t type;
- void *value;
- unsigned long value_len;
-};
-
-
-struct ck_date
-{
- unsigned char year[4];
- unsigned char month[2];
- unsigned char day[2];
-};
-
-
-typedef unsigned long ck_mechanism_type_t;
-
-#define CKM_RSA_PKCS_KEY_PAIR_GEN (0UL)
-#define CKM_RSA_PKCS (1UL)
-#define CKM_RSA_9796 (2UL)
-#define CKM_RSA_X_509 (3UL)
-#define CKM_MD2_RSA_PKCS (4UL)
-#define CKM_MD5_RSA_PKCS (5UL)
-#define CKM_SHA1_RSA_PKCS (6UL)
-#define CKM_RIPEMD128_RSA_PKCS (7UL)
-#define CKM_RIPEMD160_RSA_PKCS (8UL)
-#define CKM_RSA_PKCS_OAEP (9UL)
-#define CKM_RSA_X9_31_KEY_PAIR_GEN (0xaUL)
-#define CKM_RSA_X9_31 (0xbUL)
-#define CKM_SHA1_RSA_X9_31 (0xcUL)
-#define CKM_RSA_PKCS_PSS (0xdUL)
-#define CKM_SHA1_RSA_PKCS_PSS (0xeUL)
-#define CKM_DSA_KEY_PAIR_GEN (0x10UL)
-#define CKM_DSA (0x11UL)
-#define CKM_DSA_SHA1 (0x12UL)
-#define CKM_DH_PKCS_KEY_PAIR_GEN (0x20UL)
-#define CKM_DH_PKCS_DERIVE (0x21UL)
-#define CKM_X9_42_DH_KEY_PAIR_GEN (0x30UL)
-#define CKM_X9_42_DH_DERIVE (0x31UL)
-#define CKM_X9_42_DH_HYBRID_DERIVE (0x32UL)
-#define CKM_X9_42_MQV_DERIVE (0x33UL)
-#define CKM_SHA256_RSA_PKCS (0x40UL)
-#define CKM_SHA384_RSA_PKCS (0x41UL)
-#define CKM_SHA512_RSA_PKCS (0x42UL)
-#define CKM_SHA256_RSA_PKCS_PSS (0x43UL)
-#define CKM_SHA384_RSA_PKCS_PSS (0x44UL)
-#define CKM_SHA512_RSA_PKCS_PSS (0x45UL)
-#define CKM_RC2_KEY_GEN (0x100UL)
-#define CKM_RC2_ECB (0x101UL)
-#define CKM_RC2_CBC (0x102UL)
-#define CKM_RC2_MAC (0x103UL)
-#define CKM_RC2_MAC_GENERAL (0x104UL)
-#define CKM_RC2_CBC_PAD (0x105UL)
-#define CKM_RC4_KEY_GEN (0x110UL)
-#define CKM_RC4 (0x111UL)
-#define CKM_DES_KEY_GEN (0x120UL)
-#define CKM_DES_ECB (0x121UL)
-#define CKM_DES_CBC (0x122UL)
-#define CKM_DES_MAC (0x123UL)
-#define CKM_DES_MAC_GENERAL (0x124UL)
-#define CKM_DES_CBC_PAD (0x125UL)
-#define CKM_DES2_KEY_GEN (0x130UL)
-#define CKM_DES3_KEY_GEN (0x131UL)
-#define CKM_DES3_ECB (0x132UL)
-#define CKM_DES3_CBC (0x133UL)
-#define CKM_DES3_MAC (0x134UL)
-#define CKM_DES3_MAC_GENERAL (0x135UL)
-#define CKM_DES3_CBC_PAD (0x136UL)
-#define CKM_CDMF_KEY_GEN (0x140UL)
-#define CKM_CDMF_ECB (0x141UL)
-#define CKM_CDMF_CBC (0x142UL)
-#define CKM_CDMF_MAC (0x143UL)
-#define CKM_CDMF_MAC_GENERAL (0x144UL)
-#define CKM_CDMF_CBC_PAD (0x145UL)
-#define CKM_DES_OFB64 (0x150UL)
-#define CKM_DES_OFB8 (0x151UL)
-#define CKM_DES_CFB64 (0x152UL)
-#define CKM_DES_CFB8 (0x153UL)
-#define CKM_MD2 (0x200UL)
-#define CKM_MD2_HMAC (0x201UL)
-#define CKM_MD2_HMAC_GENERAL (0x202UL)
-#define CKM_MD5 (0x210UL)
-#define CKM_MD5_HMAC (0x211UL)
-#define CKM_MD5_HMAC_GENERAL (0x212UL)
-#define CKM_SHA_1 (0x220UL)
-#define CKM_SHA_1_HMAC (0x221UL)
-#define CKM_SHA_1_HMAC_GENERAL (0x222UL)
-#define CKM_RIPEMD128 (0x230UL)
-#define CKM_RIPEMD128_HMAC (0x231UL)
-#define CKM_RIPEMD128_HMAC_GENERAL (0x232UL)
-#define CKM_RIPEMD160 (0x240UL)
-#define CKM_RIPEMD160_HMAC (0x241UL)
-#define CKM_RIPEMD160_HMAC_GENERAL (0x242UL)
-#define CKM_SHA256 (0x250UL)
-#define CKM_SHA256_HMAC (0x251UL)
-#define CKM_SHA256_HMAC_GENERAL (0x252UL)
-#define CKM_SHA384 (0x260UL)
-#define CKM_SHA384_HMAC (0x261UL)
-#define CKM_SHA384_HMAC_GENERAL (0x262UL)
-#define CKM_SHA512 (0x270UL)
-#define CKM_SHA512_HMAC (0x271UL)
-#define CKM_SHA512_HMAC_GENERAL (0x272UL)
-#define CKM_CAST_KEY_GEN (0x300UL)
-#define CKM_CAST_ECB (0x301UL)
-#define CKM_CAST_CBC (0x302UL)
-#define CKM_CAST_MAC (0x303UL)
-#define CKM_CAST_MAC_GENERAL (0x304UL)
-#define CKM_CAST_CBC_PAD (0x305UL)
-#define CKM_CAST3_KEY_GEN (0x310UL)
-#define CKM_CAST3_ECB (0x311UL)
-#define CKM_CAST3_CBC (0x312UL)
-#define CKM_CAST3_MAC (0x313UL)
-#define CKM_CAST3_MAC_GENERAL (0x314UL)
-#define CKM_CAST3_CBC_PAD (0x315UL)
-#define CKM_CAST5_KEY_GEN (0x320UL)
-#define CKM_CAST128_KEY_GEN (0x320UL)
-#define CKM_CAST5_ECB (0x321UL)
-#define CKM_CAST128_ECB (0x321UL)
-#define CKM_CAST5_CBC (0x322UL)
-#define CKM_CAST128_CBC (0x322UL)
-#define CKM_CAST5_MAC (0x323UL)
-#define CKM_CAST128_MAC (0x323UL)
-#define CKM_CAST5_MAC_GENERAL (0x324UL)
-#define CKM_CAST128_MAC_GENERAL (0x324UL)
-#define CKM_CAST5_CBC_PAD (0x325UL)
-#define CKM_CAST128_CBC_PAD (0x325UL)
-#define CKM_RC5_KEY_GEN (0x330UL)
-#define CKM_RC5_ECB (0x331UL)
-#define CKM_RC5_CBC (0x332UL)
-#define CKM_RC5_MAC (0x333UL)
-#define CKM_RC5_MAC_GENERAL (0x334UL)
-#define CKM_RC5_CBC_PAD (0x335UL)
-#define CKM_IDEA_KEY_GEN (0x340UL)
-#define CKM_IDEA_ECB (0x341UL)
-#define CKM_IDEA_CBC (0x342UL)
-#define CKM_IDEA_MAC (0x343UL)
-#define CKM_IDEA_MAC_GENERAL (0x344UL)
-#define CKM_IDEA_CBC_PAD (0x345UL)
-#define CKM_GENERIC_SECRET_KEY_GEN (0x350UL)
-#define CKM_CONCATENATE_BASE_AND_KEY (0x360UL)
-#define CKM_CONCATENATE_BASE_AND_DATA (0x362UL)
-#define CKM_CONCATENATE_DATA_AND_BASE (0x363UL)
-#define CKM_XOR_BASE_AND_DATA (0x364UL)
-#define CKM_EXTRACT_KEY_FROM_KEY (0x365UL)
-#define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370UL)
-#define CKM_SSL3_MASTER_KEY_DERIVE (0x371UL)
-#define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372UL)
-#define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373UL)
-#define CKM_TLS_PRE_MASTER_KEY_GEN (0x374UL)
-#define CKM_TLS_MASTER_KEY_DERIVE (0x375UL)
-#define CKM_TLS_KEY_AND_MAC_DERIVE (0x376UL)
-#define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377UL)
-#define CKM_TLS_PRF (0x378UL)
-#define CKM_SSL3_MD5_MAC (0x380UL)
-#define CKM_SSL3_SHA1_MAC (0x381UL)
-#define CKM_MD5_KEY_DERIVATION (0x390UL)
-#define CKM_MD2_KEY_DERIVATION (0x391UL)
-#define CKM_SHA1_KEY_DERIVATION (0x392UL)
-#define CKM_SHA256_KEY_DERIVATION (0x393UL)
-#define CKM_SHA384_KEY_DERIVATION (0x394UL)
-#define CKM_SHA512_KEY_DERIVATION (0x395UL)
-#define CKM_PBE_MD2_DES_CBC (0x3a0UL)
-#define CKM_PBE_MD5_DES_CBC (0x3a1UL)
-#define CKM_PBE_MD5_CAST_CBC (0x3a2UL)
-#define CKM_PBE_MD5_CAST3_CBC (0x3a3UL)
-#define CKM_PBE_MD5_CAST5_CBC (0x3a4UL)
-#define CKM_PBE_MD5_CAST128_CBC (0x3a4UL)
-#define CKM_PBE_SHA1_CAST5_CBC (0x3a5UL)
-#define CKM_PBE_SHA1_CAST128_CBC (0x3a5UL)
-#define CKM_PBE_SHA1_RC4_128 (0x3a6UL)
-#define CKM_PBE_SHA1_RC4_40 (0x3a7UL)
-#define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8UL)
-#define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9UL)
-#define CKM_PBE_SHA1_RC2_128_CBC (0x3aaUL)
-#define CKM_PBE_SHA1_RC2_40_CBC (0x3abUL)
-#define CKM_PKCS5_PBKD2 (0x3b0UL)
-#define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0UL)
-#define CKM_WTLS_PRE_MASTER_KEY_GEN (0x3d0UL)
-#define CKM_WTLS_MASTER_KEY_DERIVE (0x3d1UL)
-#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC (0x3d2UL)
-#define CKM_WTLS_PRF (0x3d3UL)
-#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE (0x3d4UL)
-#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE (0x3d5UL)
-#define CKM_KEY_WRAP_LYNKS (0x400UL)
-#define CKM_KEY_WRAP_SET_OAEP (0x401UL)
-#define CKM_CMS_SIG (0x500UL)
-#define CKM_SKIPJACK_KEY_GEN (0x1000UL)
-#define CKM_SKIPJACK_ECB64 (0x1001UL)
-#define CKM_SKIPJACK_CBC64 (0x1002UL)
-#define CKM_SKIPJACK_OFB64 (0x1003UL)
-#define CKM_SKIPJACK_CFB64 (0x1004UL)
-#define CKM_SKIPJACK_CFB32 (0x1005UL)
-#define CKM_SKIPJACK_CFB16 (0x1006UL)
-#define CKM_SKIPJACK_CFB8 (0x1007UL)
-#define CKM_SKIPJACK_WRAP (0x1008UL)
-#define CKM_SKIPJACK_PRIVATE_WRAP (0x1009UL)
-#define CKM_SKIPJACK_RELAYX (0x100aUL)
-#define CKM_KEA_KEY_PAIR_GEN (0x1010UL)
-#define CKM_KEA_KEY_DERIVE (0x1011UL)
-#define CKM_FORTEZZA_TIMESTAMP (0x1020UL)
-#define CKM_BATON_KEY_GEN (0x1030UL)
-#define CKM_BATON_ECB128 (0x1031UL)
-#define CKM_BATON_ECB96 (0x1032UL)
-#define CKM_BATON_CBC128 (0x1033UL)
-#define CKM_BATON_COUNTER (0x1034UL)
-#define CKM_BATON_SHUFFLE (0x1035UL)
-#define CKM_BATON_WRAP (0x1036UL)
-#define CKM_ECDSA_KEY_PAIR_GEN (0x1040UL)
-#define CKM_EC_KEY_PAIR_GEN (0x1040UL)
-#define CKM_ECDSA (0x1041UL)
-#define CKM_ECDSA_SHA1 (0x1042UL)
-#define CKM_ECDH1_DERIVE (0x1050UL)
-#define CKM_ECDH1_COFACTOR_DERIVE (0x1051UL)
-#define CKM_ECMQV_DERIVE (0x1052UL)
-#define CKM_JUNIPER_KEY_GEN (0x1060UL)
-#define CKM_JUNIPER_ECB128 (0x1061UL)
-#define CKM_JUNIPER_CBC128 (0x1062UL)
-#define CKM_JUNIPER_COUNTER (0x1063UL)
-#define CKM_JUNIPER_SHUFFLE (0x1064UL)
-#define CKM_JUNIPER_WRAP (0x1065UL)
-#define CKM_FASTHASH (0x1070UL)
-#define CKM_AES_KEY_GEN (0x1080UL)
-#define CKM_AES_ECB (0x1081UL)
-#define CKM_AES_CBC (0x1082UL)
-#define CKM_AES_MAC (0x1083UL)
-#define CKM_AES_MAC_GENERAL (0x1084UL)
-#define CKM_AES_CBC_PAD (0x1085UL)
-#define CKM_BLOWFISH_KEY_GEN (0x1090UL)
-#define CKM_BLOWFISH_CBC (0x1091UL)
-#define CKM_TWOFISH_KEY_GEN (0x1092UL)
-#define CKM_TWOFISH_CBC (0x1093UL)
-#define CKM_DES_ECB_ENCRYPT_DATA (0x1100UL)
-#define CKM_DES_CBC_ENCRYPT_DATA (0x1101UL)
-#define CKM_DES3_ECB_ENCRYPT_DATA (0x1102UL)
-#define CKM_DES3_CBC_ENCRYPT_DATA (0x1103UL)
-#define CKM_AES_ECB_ENCRYPT_DATA (0x1104UL)
-#define CKM_AES_CBC_ENCRYPT_DATA (0x1105UL)
-#define CKM_DSA_PARAMETER_GEN (0x2000UL)
-#define CKM_DH_PKCS_PARAMETER_GEN (0x2001UL)
-#define CKM_X9_42_DH_PARAMETER_GEN (0x2002UL)
-#define CKM_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-/* Ammendments */
-#define CKM_SHA224 (0x255UL)
-#define CKM_SHA224_HMAC (0x256UL)
-#define CKM_SHA224_HMAC_GENERAL (0x257UL)
-#define CKM_SHA224_RSA_PKCS (0x46UL)
-#define CKM_SHA224_RSA_PKCS_PSS (0x47UL)
-#define CKM_SHA224_KEY_DERIVATION (0x396UL)
-
-#define CKM_CAMELLIA_KEY_GEN (0x550UL)
-#define CKM_CAMELLIA_ECB (0x551UL)
-#define CKM_CAMELLIA_CBC (0x552UL)
-#define CKM_CAMELLIA_MAC (0x553UL)
-#define CKM_CAMELLIA_MAC_GENERAL (0x554UL)
-#define CKM_CAMELLIA_CBC_PAD (0x555UL)
-#define CKM_CAMELLIA_ECB_ENCRYPT_DATA (0x556UL)
-#define CKM_CAMELLIA_CBC_ENCRYPT_DATA (0x557UL)
-
-struct ck_mechanism
-{
- ck_mechanism_type_t mechanism;
- void *parameter;
- unsigned long parameter_len;
-};
-
-
-struct ck_mechanism_info
-{
- unsigned long min_key_size;
- unsigned long max_key_size;
- ck_flags_t flags;
-};
-
-#define CKF_HW (1UL << 0)
-#define CKF_ENCRYPT (1UL << 8)
-#define CKF_DECRYPT (1UL << 9)
-#define CKF_DIGEST (1UL << 10)
-#define CKF_SIGN (1UL << 11)
-#define CKF_SIGN_RECOVER (1UL << 12)
-#define CKF_VERIFY (1UL << 13)
-#define CKF_VERIFY_RECOVER (1UL << 14)
-#define CKF_GENERATE (1UL << 15)
-#define CKF_GENERATE_KEY_PAIR (1UL << 16)
-#define CKF_WRAP (1UL << 17)
-#define CKF_UNWRAP (1UL << 18)
-#define CKF_DERIVE (1UL << 19)
-#define CKF_EXTENSION ((unsigned long) (1UL << 31))
-
-
-/* Flags for C_WaitForSlotEvent. */
-#define CKF_DONT_BLOCK (1UL)
-
-
-typedef unsigned long ck_rv_t;
-
-
-typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
- ck_notification_t event, void *application);
-
-/* Forward reference. */
-struct ck_function_list;
-
-#define _CK_DECLARE_FUNCTION(name, args) \
-typedef ck_rv_t (*CK_ ## name) args; \
-ck_rv_t CK_SPEC name args
-
-_CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
-_CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
-_CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
-_CK_DECLARE_FUNCTION (C_GetFunctionList,
- (struct ck_function_list **function_list));
-
-_CK_DECLARE_FUNCTION (C_GetSlotList,
- (unsigned char token_present, ck_slot_id_t *slot_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetSlotInfo,
- (ck_slot_id_t slot_id, struct ck_slot_info *info));
-_CK_DECLARE_FUNCTION (C_GetTokenInfo,
- (ck_slot_id_t slot_id, struct ck_token_info *info));
-_CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
- (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
-_CK_DECLARE_FUNCTION (C_GetMechanismList,
- (ck_slot_id_t slot_id,
- ck_mechanism_type_t *mechanism_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetMechanismInfo,
- (ck_slot_id_t slot_id, ck_mechanism_type_t type,
- struct ck_mechanism_info *info));
-_CK_DECLARE_FUNCTION (C_InitToken,
- (ck_slot_id_t slot_id, unsigned char *pin,
- unsigned long pin_len, unsigned char *label));
-_CK_DECLARE_FUNCTION (C_InitPIN,
- (ck_session_handle_t session, unsigned char *pin,
- unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_SetPIN,
- (ck_session_handle_t session, unsigned char *old_pin,
- unsigned long old_len, unsigned char *new_pin,
- unsigned long new_len));
-
-_CK_DECLARE_FUNCTION (C_OpenSession,
- (ck_slot_id_t slot_id, ck_flags_t flags,
- void *application, ck_notify_t notify,
- ck_session_handle_t *session));
-_CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
-_CK_DECLARE_FUNCTION (C_GetSessionInfo,
- (ck_session_handle_t session,
- struct ck_session_info *info));
-_CK_DECLARE_FUNCTION (C_GetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long *operation_state_len));
-_CK_DECLARE_FUNCTION (C_SetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long operation_state_len,
- ck_object_handle_t encryption_key,
- ck_object_handle_t authentiation_key));
-_CK_DECLARE_FUNCTION (C_Login,
- (ck_session_handle_t session, ck_user_type_t user_type,
- unsigned char *pin, unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_CreateObject,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count, ck_object_handle_t *object));
-_CK_DECLARE_FUNCTION (C_CopyObject,
- (ck_session_handle_t session, ck_object_handle_t object,
- struct ck_attribute *templ, unsigned long count,
- ck_object_handle_t *new_object));
-_CK_DECLARE_FUNCTION (C_DestroyObject,
- (ck_session_handle_t session,
- ck_object_handle_t object));
-_CK_DECLARE_FUNCTION (C_GetObjectSize,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- unsigned long *size));
-_CK_DECLARE_FUNCTION (C_GetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_SetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjectsInit,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjects,
- (ck_session_handle_t session,
- ck_object_handle_t *object,
- unsigned long max_object_count,
- unsigned long *object_count));
-_CK_DECLARE_FUNCTION (C_FindObjectsFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_EncryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Encrypt,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *encrypted_data,
- unsigned long *encrypted_data_len));
-_CK_DECLARE_FUNCTION (C_EncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_EncryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_encrypted_part,
- unsigned long *last_encrypted_part_len));
-
-_CK_DECLARE_FUNCTION (C_DecryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Decrypt,
- (ck_session_handle_t session,
- unsigned char *encrypted_data,
- unsigned long encrypted_data_len,
- unsigned char *data, unsigned long *data_len));
-_CK_DECLARE_FUNCTION (C_DecryptUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part, unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_DecryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_part,
- unsigned long *last_part_len));
-
-_CK_DECLARE_FUNCTION (C_DigestInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism));
-_CK_DECLARE_FUNCTION (C_Digest,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *digest,
- unsigned long *digest_len));
-_CK_DECLARE_FUNCTION (C_DigestUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_DigestKey,
- (ck_session_handle_t session, ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_DigestFinal,
- (ck_session_handle_t session,
- unsigned char *digest,
- unsigned long *digest_len));
-
-_CK_DECLARE_FUNCTION (C_SignInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Sign,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_SignFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_SignRecover,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-
-_CK_DECLARE_FUNCTION (C_VerifyInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Verify,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_VerifyFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_VerifyRecover,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len,
- unsigned char *data,
- unsigned long *data_len));
-
-_CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-
-_CK_DECLARE_FUNCTION (C_GenerateKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *templ,
- unsigned long count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_GenerateKeyPair,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *public_key_template,
- unsigned long public_key_attribute_count,
- struct ck_attribute *private_key_template,
- unsigned long private_key_attribute_count,
- ck_object_handle_t *public_key,
- ck_object_handle_t *private_key));
-_CK_DECLARE_FUNCTION (C_WrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t wrapping_key,
- ck_object_handle_t key,
- unsigned char *wrapped_key,
- unsigned long *wrapped_key_len));
-_CK_DECLARE_FUNCTION (C_UnwrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t unwrapping_key,
- unsigned char *wrapped_key,
- unsigned long wrapped_key_len,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_DeriveKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t base_key,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-
-_CK_DECLARE_FUNCTION (C_SeedRandom,
- (ck_session_handle_t session, unsigned char *seed,
- unsigned long seed_len));
-_CK_DECLARE_FUNCTION (C_GenerateRandom,
- (ck_session_handle_t session,
- unsigned char *random_data,
- unsigned long random_len));
-
-_CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
-
-
-struct ck_function_list
-{
- struct ck_version version;
- CK_C_Initialize C_Initialize;
- CK_C_Finalize C_Finalize;
- CK_C_GetInfo C_GetInfo;
- CK_C_GetFunctionList C_GetFunctionList;
- CK_C_GetSlotList C_GetSlotList;
- CK_C_GetSlotInfo C_GetSlotInfo;
- CK_C_GetTokenInfo C_GetTokenInfo;
- CK_C_GetMechanismList C_GetMechanismList;
- CK_C_GetMechanismInfo C_GetMechanismInfo;
- CK_C_InitToken C_InitToken;
- CK_C_InitPIN C_InitPIN;
- CK_C_SetPIN C_SetPIN;
- CK_C_OpenSession C_OpenSession;
- CK_C_CloseSession C_CloseSession;
- CK_C_CloseAllSessions C_CloseAllSessions;
- CK_C_GetSessionInfo C_GetSessionInfo;
- CK_C_GetOperationState C_GetOperationState;
- CK_C_SetOperationState C_SetOperationState;
- CK_C_Login C_Login;
- CK_C_Logout C_Logout;
- CK_C_CreateObject C_CreateObject;
- CK_C_CopyObject C_CopyObject;
- CK_C_DestroyObject C_DestroyObject;
- CK_C_GetObjectSize C_GetObjectSize;
- CK_C_GetAttributeValue C_GetAttributeValue;
- CK_C_SetAttributeValue C_SetAttributeValue;
- CK_C_FindObjectsInit C_FindObjectsInit;
- CK_C_FindObjects C_FindObjects;
- CK_C_FindObjectsFinal C_FindObjectsFinal;
- CK_C_EncryptInit C_EncryptInit;
- CK_C_Encrypt C_Encrypt;
- CK_C_EncryptUpdate C_EncryptUpdate;
- CK_C_EncryptFinal C_EncryptFinal;
- CK_C_DecryptInit C_DecryptInit;
- CK_C_Decrypt C_Decrypt;
- CK_C_DecryptUpdate C_DecryptUpdate;
- CK_C_DecryptFinal C_DecryptFinal;
- CK_C_DigestInit C_DigestInit;
- CK_C_Digest C_Digest;
- CK_C_DigestUpdate C_DigestUpdate;
- CK_C_DigestKey C_DigestKey;
- CK_C_DigestFinal C_DigestFinal;
- CK_C_SignInit C_SignInit;
- CK_C_Sign C_Sign;
- CK_C_SignUpdate C_SignUpdate;
- CK_C_SignFinal C_SignFinal;
- CK_C_SignRecoverInit C_SignRecoverInit;
- CK_C_SignRecover C_SignRecover;
- CK_C_VerifyInit C_VerifyInit;
- CK_C_Verify C_Verify;
- CK_C_VerifyUpdate C_VerifyUpdate;
- CK_C_VerifyFinal C_VerifyFinal;
- CK_C_VerifyRecoverInit C_VerifyRecoverInit;
- CK_C_VerifyRecover C_VerifyRecover;
- CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
- CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
- CK_C_SignEncryptUpdate C_SignEncryptUpdate;
- CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
- CK_C_GenerateKey C_GenerateKey;
- CK_C_GenerateKeyPair C_GenerateKeyPair;
- CK_C_WrapKey C_WrapKey;
- CK_C_UnwrapKey C_UnwrapKey;
- CK_C_DeriveKey C_DeriveKey;
- CK_C_SeedRandom C_SeedRandom;
- CK_C_GenerateRandom C_GenerateRandom;
- CK_C_GetFunctionStatus C_GetFunctionStatus;
- CK_C_CancelFunction C_CancelFunction;
- CK_C_WaitForSlotEvent C_WaitForSlotEvent;
-};
-
-
-typedef ck_rv_t (*ck_createmutex_t) (void **mutex);
-typedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
-typedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
-typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
-
-
-struct ck_c_initialize_args
-{
- ck_createmutex_t create_mutex;
- ck_destroymutex_t destroy_mutex;
- ck_lockmutex_t lock_mutex;
- ck_unlockmutex_t unlock_mutex;
- ck_flags_t flags;
- void *reserved;
-};
-
-
-#define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1UL << 0)
-#define CKF_OS_LOCKING_OK (1UL << 1)
-
-#define CKR_OK (0UL)
-#define CKR_CANCEL (1UL)
-#define CKR_HOST_MEMORY (2UL)
-#define CKR_SLOT_ID_INVALID (3UL)
-#define CKR_GENERAL_ERROR (5UL)
-#define CKR_FUNCTION_FAILED (6UL)
-#define CKR_ARGUMENTS_BAD (7UL)
-#define CKR_NO_EVENT (8UL)
-#define CKR_NEED_TO_CREATE_THREADS (9UL)
-#define CKR_CANT_LOCK (0xaUL)
-#define CKR_ATTRIBUTE_READ_ONLY (0x10UL)
-#define CKR_ATTRIBUTE_SENSITIVE (0x11UL)
-#define CKR_ATTRIBUTE_TYPE_INVALID (0x12UL)
-#define CKR_ATTRIBUTE_VALUE_INVALID (0x13UL)
-#define CKR_DATA_INVALID (0x20UL)
-#define CKR_DATA_LEN_RANGE (0x21UL)
-#define CKR_DEVICE_ERROR (0x30UL)
-#define CKR_DEVICE_MEMORY (0x31UL)
-#define CKR_DEVICE_REMOVED (0x32UL)
-#define CKR_ENCRYPTED_DATA_INVALID (0x40UL)
-#define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41UL)
-#define CKR_FUNCTION_CANCELED (0x50UL)
-#define CKR_FUNCTION_NOT_PARALLEL (0x51UL)
-#define CKR_FUNCTION_NOT_SUPPORTED (0x54UL)
-#define CKR_KEY_HANDLE_INVALID (0x60UL)
-#define CKR_KEY_SIZE_RANGE (0x62UL)
-#define CKR_KEY_TYPE_INCONSISTENT (0x63UL)
-#define CKR_KEY_NOT_NEEDED (0x64UL)
-#define CKR_KEY_CHANGED (0x65UL)
-#define CKR_KEY_NEEDED (0x66UL)
-#define CKR_KEY_INDIGESTIBLE (0x67UL)
-#define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68UL)
-#define CKR_KEY_NOT_WRAPPABLE (0x69UL)
-#define CKR_KEY_UNEXTRACTABLE (0x6aUL)
-#define CKR_MECHANISM_INVALID (0x70UL)
-#define CKR_MECHANISM_PARAM_INVALID (0x71UL)
-#define CKR_OBJECT_HANDLE_INVALID (0x82UL)
-#define CKR_OPERATION_ACTIVE (0x90UL)
-#define CKR_OPERATION_NOT_INITIALIZED (0x91UL)
-#define CKR_PIN_INCORRECT (0xa0UL)
-#define CKR_PIN_INVALID (0xa1UL)
-#define CKR_PIN_LEN_RANGE (0xa2UL)
-#define CKR_PIN_EXPIRED (0xa3UL)
-#define CKR_PIN_LOCKED (0xa4UL)
-#define CKR_SESSION_CLOSED (0xb0UL)
-#define CKR_SESSION_COUNT (0xb1UL)
-#define CKR_SESSION_HANDLE_INVALID (0xb3UL)
-#define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4UL)
-#define CKR_SESSION_READ_ONLY (0xb5UL)
-#define CKR_SESSION_EXISTS (0xb6UL)
-#define CKR_SESSION_READ_ONLY_EXISTS (0xb7UL)
-#define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8UL)
-#define CKR_SIGNATURE_INVALID (0xc0UL)
-#define CKR_SIGNATURE_LEN_RANGE (0xc1UL)
-#define CKR_TEMPLATE_INCOMPLETE (0xd0UL)
-#define CKR_TEMPLATE_INCONSISTENT (0xd1UL)
-#define CKR_TOKEN_NOT_PRESENT (0xe0UL)
-#define CKR_TOKEN_NOT_RECOGNIZED (0xe1UL)
-#define CKR_TOKEN_WRITE_PROTECTED (0xe2UL)
-#define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0UL)
-#define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1UL)
-#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2UL)
-#define CKR_USER_ALREADY_LOGGED_IN (0x100UL)
-#define CKR_USER_NOT_LOGGED_IN (0x101UL)
-#define CKR_USER_PIN_NOT_INITIALIZED (0x102UL)
-#define CKR_USER_TYPE_INVALID (0x103UL)
-#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104UL)
-#define CKR_USER_TOO_MANY_TYPES (0x105UL)
-#define CKR_WRAPPED_KEY_INVALID (0x110UL)
-#define CKR_WRAPPED_KEY_LEN_RANGE (0x112UL)
-#define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113UL)
-#define CKR_WRAPPING_KEY_SIZE_RANGE (0x114UL)
-#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115UL)
-#define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120UL)
-#define CKR_RANDOM_NO_RNG (0x121UL)
-#define CKR_DOMAIN_PARAMS_INVALID (0x130UL)
-#define CKR_BUFFER_TOO_SMALL (0x150UL)
-#define CKR_SAVED_STATE_INVALID (0x160UL)
-#define CKR_INFORMATION_SENSITIVE (0x170UL)
-#define CKR_STATE_UNSAVEABLE (0x180UL)
-#define CKR_CRYPTOKI_NOT_INITIALIZED (0x190UL)
-#define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191UL)
-#define CKR_MUTEX_BAD (0x1a0UL)
-#define CKR_MUTEX_NOT_LOCKED (0x1a1UL)
-#define CKR_FUNCTION_REJECTED (0x200UL)
-#define CKR_VENDOR_DEFINED ((unsigned long) (1UL << 31))
-
-
-
-/* Compatibility layer. */
-
-#ifdef CRYPTOKI_COMPAT
-
-#undef CK_DEFINE_FUNCTION
-#define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
-
-/* For NULL. */
-#include <stddef.h>
-
-typedef unsigned char CK_BYTE;
-typedef unsigned char CK_CHAR;
-typedef unsigned char CK_UTF8CHAR;
-typedef unsigned char CK_BBOOL;
-typedef unsigned long int CK_ULONG;
-typedef long int CK_LONG;
-typedef CK_BYTE *CK_BYTE_PTR;
-typedef CK_CHAR *CK_CHAR_PTR;
-typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
-typedef CK_ULONG *CK_ULONG_PTR;
-typedef void *CK_VOID_PTR;
-typedef void **CK_VOID_PTR_PTR;
-#define CK_FALSE 0
-#define CK_TRUE 1
-#ifndef CK_DISABLE_TRUE_FALSE
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-#endif
-
-typedef struct ck_version CK_VERSION;
-typedef struct ck_version *CK_VERSION_PTR;
-
-typedef struct ck_info CK_INFO;
-typedef struct ck_info *CK_INFO_PTR;
-
-typedef ck_slot_id_t *CK_SLOT_ID_PTR;
-
-typedef struct ck_slot_info CK_SLOT_INFO;
-typedef struct ck_slot_info *CK_SLOT_INFO_PTR;
-
-typedef struct ck_token_info CK_TOKEN_INFO;
-typedef struct ck_token_info *CK_TOKEN_INFO_PTR;
-
-typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
-
-typedef struct ck_session_info CK_SESSION_INFO;
-typedef struct ck_session_info *CK_SESSION_INFO_PTR;
-
-typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
-
-typedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
-
-typedef struct ck_attribute CK_ATTRIBUTE;
-typedef struct ck_attribute *CK_ATTRIBUTE_PTR;
-
-typedef struct ck_date CK_DATE;
-typedef struct ck_date *CK_DATE_PTR;
-
-typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
-
-typedef struct ck_mechanism CK_MECHANISM;
-typedef struct ck_mechanism *CK_MECHANISM_PTR;
-
-typedef struct ck_mechanism_info CK_MECHANISM_INFO;
-typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
-
-typedef struct ck_function_list CK_FUNCTION_LIST;
-typedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
-typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
-
-typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
-typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
-
-#define NULL_PTR NULL
-
-/* Delete the helper macros defined at the top of the file. */
-#undef ck_flags_t
-#undef ck_version
-
-#undef ck_info
-#undef cryptoki_version
-#undef manufacturer_id
-#undef library_description
-#undef library_version
-
-#undef ck_notification_t
-#undef ck_slot_id_t
-
-#undef ck_slot_info
-#undef slot_description
-#undef hardware_version
-#undef firmware_version
-
-#undef ck_token_info
-#undef serial_number
-#undef max_session_count
-#undef session_count
-#undef max_rw_session_count
-#undef rw_session_count
-#undef max_pin_len
-#undef min_pin_len
-#undef total_public_memory
-#undef free_public_memory
-#undef total_private_memory
-#undef free_private_memory
-#undef utc_time
-
-#undef ck_session_handle_t
-#undef ck_user_type_t
-#undef ck_state_t
-
-#undef ck_session_info
-#undef slot_id
-#undef device_error
-
-#undef ck_object_handle_t
-#undef ck_object_class_t
-#undef ck_hw_feature_type_t
-#undef ck_key_type_t
-#undef ck_certificate_type_t
-#undef ck_attribute_type_t
-
-#undef ck_attribute
-#undef value
-#undef value_len
-
-#undef ck_date
-
-#undef ck_mechanism_type_t
-
-#undef ck_mechanism
-#undef parameter
-#undef parameter_len
-
-#undef ck_mechanism_info
-#undef min_key_size
-#undef max_key_size
-
-#undef ck_rv_t
-#undef ck_notify_t
-
-#undef ck_function_list
-
-#undef ck_createmutex_t
-#undef ck_destroymutex_t
-#undef ck_lockmutex_t
-#undef ck_unlockmutex_t
-
-#undef ck_c_initialize_args
-#undef create_mutex
-#undef destroy_mutex
-#undef lock_mutex
-#undef unlock_mutex
-#undef reserved
-
-#endif /* CRYPTOKI_COMPAT */
-
-
-/* System dependencies. */
-#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
-#pragma pack(pop, cryptoki)
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* PKCS11_H */
diff --git a/common/pkcs11i.h b/common/pkcs11i.h
deleted file mode 100644
index d9e3ffc..0000000
--- a/common/pkcs11i.h
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef PKCS11_I_H_
-#define PKCS11_I_H_ 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/* -------------------------------------------------------------------
- * TRUST ASSERTIONS
- *
- * These are retired and should not be used in new code
- */
-
-#define CKO_X_TRUST_ASSERTION (CKO_X_VENDOR + 100)
-#define CKA_X_ASSERTION_TYPE (CKA_X_VENDOR + 1)
-#define CKA_X_CERTIFICATE_VALUE (CKA_X_VENDOR + 2)
-#define CKA_X_PURPOSE (CKA_X_VENDOR + 3)
-#define CKA_X_PEER (CKA_X_VENDOR + 4)
-typedef CK_ULONG CK_X_ASSERTION_TYPE;
-#define CKT_X_DISTRUSTED_CERTIFICATE 1UL
-#define CKT_X_PINNED_CERTIFICATE 2UL
-#define CKT_X_ANCHORED_CERTIFICATE 3UL
-
-/* -------------------------------------------------------------------
- * Other deprecated definitions
- */
-#define CKA_X_CRITICAL (CKA_X_VENDOR + 101)
-
-/* -------------------------------------------------------------------
- * SUBCLASSABLE PKCS#11 FUNCTIONS
- */
-
-typedef struct _CK_X_FUNCTION_LIST CK_X_FUNCTION_LIST;
-
-typedef CK_RV (* CK_X_Initialize) (CK_X_FUNCTION_LIST *,
- CK_VOID_PTR);
-
-typedef CK_RV (* CK_X_Finalize) (CK_X_FUNCTION_LIST *,
- CK_VOID_PTR);
-
-typedef CK_RV (* CK_X_GetInfo) (CK_X_FUNCTION_LIST *,
- CK_INFO_PTR);
-
-typedef CK_RV (* CK_X_GetSlotList) (CK_X_FUNCTION_LIST *,
- CK_BBOOL,
- CK_SLOT_ID_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_GetSlotInfo) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_SLOT_INFO_PTR);
-
-typedef CK_RV (* CK_X_GetTokenInfo) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_TOKEN_INFO_PTR);
-
-typedef CK_RV (* CK_X_GetMechanismList) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_MECHANISM_TYPE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_GetMechanismInfo) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_MECHANISM_TYPE,
- CK_MECHANISM_INFO_PTR);
-
-typedef CK_RV (* CK_X_InitToken) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR);
-
-typedef CK_RV (* CK_X_InitPIN) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_SetPIN) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_OpenSession) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID,
- CK_FLAGS,
- CK_VOID_PTR,
- CK_NOTIFY,
- CK_SESSION_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_CloseSession) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE);
-
-typedef CK_RV (* CK_X_CloseAllSessions) (CK_X_FUNCTION_LIST *,
- CK_SLOT_ID);
-
-typedef CK_RV (* CK_X_GetSessionInfo) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_SESSION_INFO_PTR);
-
-typedef CK_RV (* CK_X_GetOperationState) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_SetOperationState) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_Login) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_USER_TYPE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_Logout) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE);
-
-typedef CK_RV (* CK_X_CreateObject) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_CopyObject) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_DestroyObject) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_GetObjectSize) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_GetAttributeValue) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_SetAttributeValue) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_FindObjectsInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_FindObjects) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE_PTR,
- CK_ULONG,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_FindObjectsFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE);
-
-typedef CK_RV (* CK_X_EncryptInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_Encrypt) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_EncryptUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_EncryptFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DecryptInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_Decrypt) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DecryptUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DecryptFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DigestInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR);
-
-typedef CK_RV (* CK_X_Digest) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DigestUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_DigestKey) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_DigestFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_SignInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_Sign) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_SignUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_SignFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_SignRecoverInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_SignRecover) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_VerifyInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_Verify) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_VerifyUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_VerifyFinal) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_VerifyRecoverInit) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE);
-
-typedef CK_RV (* CK_X_VerifyRecover) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DigestEncryptUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DecryptDigestUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_SignEncryptUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_DecryptVerifyUpdate) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_GenerateKey) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_GenerateKeyPair) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_WrapKey) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE,
- CK_OBJECT_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG_PTR);
-
-typedef CK_RV (* CK_X_UnwrapKey) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_DeriveKey) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_MECHANISM_PTR,
- CK_OBJECT_HANDLE,
- CK_ATTRIBUTE_PTR,
- CK_ULONG,
- CK_OBJECT_HANDLE_PTR);
-
-typedef CK_RV (* CK_X_SeedRandom) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_GenerateRandom) (CK_X_FUNCTION_LIST *,
- CK_SESSION_HANDLE,
- CK_BYTE_PTR,
- CK_ULONG);
-
-typedef CK_RV (* CK_X_WaitForSlotEvent) (CK_X_FUNCTION_LIST *,
- CK_FLAGS,
- CK_SLOT_ID_PTR,
- CK_VOID_PTR);
-
-struct _CK_X_FUNCTION_LIST {
- CK_VERSION version;
- CK_X_Initialize C_Initialize;
- CK_X_Finalize C_Finalize;
- CK_X_GetInfo C_GetInfo;
- CK_X_GetSlotList C_GetSlotList;
- CK_X_GetSlotInfo C_GetSlotInfo;
- CK_X_GetTokenInfo C_GetTokenInfo;
- CK_X_GetMechanismList C_GetMechanismList;
- CK_X_GetMechanismInfo C_GetMechanismInfo;
- CK_X_InitToken C_InitToken;
- CK_X_InitPIN C_InitPIN;
- CK_X_SetPIN C_SetPIN;
- CK_X_OpenSession C_OpenSession;
- CK_X_CloseSession C_CloseSession;
- CK_X_CloseAllSessions C_CloseAllSessions;
- CK_X_GetSessionInfo C_GetSessionInfo;
- CK_X_GetOperationState C_GetOperationState;
- CK_X_SetOperationState C_SetOperationState;
- CK_X_Login C_Login;
- CK_X_Logout C_Logout;
- CK_X_CreateObject C_CreateObject;
- CK_X_CopyObject C_CopyObject;
- CK_X_DestroyObject C_DestroyObject;
- CK_X_GetObjectSize C_GetObjectSize;
- CK_X_GetAttributeValue C_GetAttributeValue;
- CK_X_SetAttributeValue C_SetAttributeValue;
- CK_X_FindObjectsInit C_FindObjectsInit;
- CK_X_FindObjects C_FindObjects;
- CK_X_FindObjectsFinal C_FindObjectsFinal;
- CK_X_EncryptInit C_EncryptInit;
- CK_X_Encrypt C_Encrypt;
- CK_X_EncryptUpdate C_EncryptUpdate;
- CK_X_EncryptFinal C_EncryptFinal;
- CK_X_DecryptInit C_DecryptInit;
- CK_X_Decrypt C_Decrypt;
- CK_X_DecryptUpdate C_DecryptUpdate;
- CK_X_DecryptFinal C_DecryptFinal;
- CK_X_DigestInit C_DigestInit;
- CK_X_Digest C_Digest;
- CK_X_DigestUpdate C_DigestUpdate;
- CK_X_DigestKey C_DigestKey;
- CK_X_DigestFinal C_DigestFinal;
- CK_X_SignInit C_SignInit;
- CK_X_Sign C_Sign;
- CK_X_SignUpdate C_SignUpdate;
- CK_X_SignFinal C_SignFinal;
- CK_X_SignRecoverInit C_SignRecoverInit;
- CK_X_SignRecover C_SignRecover;
- CK_X_VerifyInit C_VerifyInit;
- CK_X_Verify C_Verify;
- CK_X_VerifyUpdate C_VerifyUpdate;
- CK_X_VerifyFinal C_VerifyFinal;
- CK_X_VerifyRecoverInit C_VerifyRecoverInit;
- CK_X_VerifyRecover C_VerifyRecover;
- CK_X_DigestEncryptUpdate C_DigestEncryptUpdate;
- CK_X_DecryptDigestUpdate C_DecryptDigestUpdate;
- CK_X_SignEncryptUpdate C_SignEncryptUpdate;
- CK_X_DecryptVerifyUpdate C_DecryptVerifyUpdate;
- CK_X_GenerateKey C_GenerateKey;
- CK_X_GenerateKeyPair C_GenerateKeyPair;
- CK_X_WrapKey C_WrapKey;
- CK_X_UnwrapKey C_UnwrapKey;
- CK_X_DeriveKey C_DeriveKey;
- CK_X_SeedRandom C_SeedRandom;
- CK_X_GenerateRandom C_GenerateRandom;
- CK_X_WaitForSlotEvent C_WaitForSlotEvent;
-};
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* PKCS11_X_H_ */
diff --git a/common/pkcs11x.h b/common/pkcs11x.h
deleted file mode 100644
index 4a89f73..0000000
--- a/common/pkcs11x.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#ifndef PKCS11_X_H_
-#define PKCS11_X_H_ 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/* -------------------------------------------------------------------
- * NSS TRUST OBJECTS
- *
- * And related, non-standard
- */
-
-/* Define this if you want the NSS specific symbols */
-#define CRYPTOKI_NSS_VENDOR_DEFINED 1
-#ifdef CRYPTOKI_NSS_VENDOR_DEFINED
-
-/* Various NSS objects */
-#define CKO_NSS_CRL 0xce534351UL
-#define CKO_NSS_SMIME 0xce534352UL
-#define CKO_NSS_TRUST 0xce534353UL
-#define CKO_NSS_BUILTIN_ROOT_LIST 0xce534354UL
-#define CKO_NSS_NEWSLOT 0xce534355UL
-#define CKO_NSS_DELSLOT 0xce534356UL
-
-/* Various NSS key types */
-#define CKK_NSS_PKCS8 0xce534351UL
-
-/* Various NSS attributes */
-#define CKA_NSS_URL 0xce534351UL
-#define CKA_NSS_EMAIL 0xce534352UL
-#define CKA_NSS_SMIME_INFO 0xce534353UL
-#define CKA_NSS_SMIME_TIMESTAMP 0xce534354UL
-#define CKA_NSS_PKCS8_SALT 0xce534355UL
-#define CKA_NSS_PASSWORD_CHECK 0xce534356UL
-#define CKA_NSS_EXPIRES 0xce534357UL
-#define CKA_NSS_KRL 0xce534358UL
-#define CKA_NSS_PQG_COUNTER 0xce534364UL
-#define CKA_NSS_PQG_SEED 0xce534365UL
-#define CKA_NSS_PQG_H 0xce534366UL
-#define CKA_NSS_PQG_SEED_BITS 0xce534367UL
-#define CKA_NSS_MODULE_SPEC 0xce534368UL
-
-/* NSS trust attributes */
-#define CKA_TRUST_DIGITAL_SIGNATURE 0xce536351UL
-#define CKA_TRUST_NON_REPUDIATION 0xce536352UL
-#define CKA_TRUST_KEY_ENCIPHERMENT 0xce536353UL
-#define CKA_TRUST_DATA_ENCIPHERMENT 0xce536354UL
-#define CKA_TRUST_KEY_AGREEMENT 0xce536355UL
-#define CKA_TRUST_KEY_CERT_SIGN 0xce536356UL
-#define CKA_TRUST_CRL_SIGN 0xce536357UL
-#define CKA_TRUST_SERVER_AUTH 0xce536358UL
-#define CKA_TRUST_CLIENT_AUTH 0xce536359UL
-#define CKA_TRUST_CODE_SIGNING 0xce53635aUL
-#define CKA_TRUST_EMAIL_PROTECTION 0xce53635bUL
-#define CKA_TRUST_IPSEC_END_SYSTEM 0xce53635cUL
-#define CKA_TRUST_IPSEC_TUNNEL 0xce53635dUL
-#define CKA_TRUST_IPSEC_USER 0xce53635eUL
-#define CKA_TRUST_TIME_STAMPING 0xce53635fUL
-#define CKA_TRUST_STEP_UP_APPROVED 0xce536360UL
-#define CKA_CERT_SHA1_HASH 0xce5363b4UL
-#define CKA_CERT_MD5_HASH 0xce5363b5UL
-
-/* NSS trust values */
-typedef CK_ULONG CK_TRUST;
-#define CKT_NSS_TRUSTED 0xce534351UL
-#define CKT_NSS_TRUSTED_DELEGATOR 0xce534352UL
-#define CKT_NSS_MUST_VERIFY_TRUST 0xce534353UL
-#define CKT_NSS_NOT_TRUSTED 0xce53435AUL
-#define CKT_NSS_TRUST_UNKNOWN 0xce534355UL
-#define CKT_NSS_VALID_DELEGATOR 0xce53435BUL
-
-/* NSS specific mechanisms */
-#define CKM_NSS_AES_KEY_WRAP 0xce534351UL
-#define CKM_NSS_AES_KEY_WRAP_PAD 0xce534352UL
-
-/* NSS specific return values */
-#define CKR_NSS_CERTDB_FAILED 0xce534351UL
-#define CKR_NSS_KEYDB_FAILED 0xce534352UL
-
-#endif /* CRYPTOKI_NSS_VENDOR_DEFINED */
-
-/* Define this if you want the vendor specific symbols */
-#define CRYPTOKI_X_VENDOR_DEFINED 1
-#ifdef CRYPTOKI_X_VENDOR_DEFINED
-
-#define CKA_X_VENDOR (CKA_VENDOR_DEFINED | 0x58444700UL)
-#define CKO_X_VENDOR (CKA_VENDOR_DEFINED | 0x58444700UL)
-
-/* -------------------------------------------------------------------
- * BLACKLISTS
- */
-
-#define CKA_X_DISTRUSTED (CKA_X_VENDOR + 100)
-
-/* -------------------------------------------------------------------
- * CERTIFICATE EXTENSIONS
- *
- * For attaching certificate extensions to certificates
- */
-
-#define CKO_X_CERTIFICATE_EXTENSION (CKO_X_VENDOR + 200)
-
-/* From the 2.40 draft */
-#ifndef CKA_PUBLIC_KEY_INFO
-#define CKA_PUBLIC_KEY_INFO 0x00000129UL
-#endif
-
-#endif /* CRYPTOKI_X_VENDOR_DEFINED */
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* PKCS11_X_H_ */
diff --git a/common/test-array.c b/common/test-array.c
deleted file mode 100644
index 695917a..0000000
--- a/common/test-array.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "array.h"
-#include "test.h"
-
-static void
-test_create (void)
-{
- p11_array *array;
-
- array = p11_array_new (NULL);
- assert_ptr_not_null (array);
- p11_array_free (array);
-}
-
-static void
-test_free_null (void)
-{
- p11_array_free (NULL);
-}
-
-static void
-destroy_value (void *data)
-{
- int *value = data;
- *value = 2;
-}
-
-static void
-test_free_destroys (void)
-{
- p11_array *array;
- int value = 0;
-
- array = p11_array_new (destroy_value);
- assert_ptr_not_null (array);
- if (!p11_array_push (array, &value))
- assert_not_reached ();
- p11_array_free (array);
-
- assert_num_eq (2, value);
-}
-
-static void
-test_add (void)
-{
- char *value = "VALUE";
- p11_array *array;
-
- array = p11_array_new (NULL);
- if (!p11_array_push (array, value))
- assert_not_reached ();
-
- assert_num_eq (1, array->num);
- assert_ptr_eq (array->elem[0], value);
-
- p11_array_free (array);
-}
-
-static void
-test_add_remove (void)
-{
- char *value = "VALUE";
- p11_array *array;
-
- array = p11_array_new (NULL);
- if (!p11_array_push (array, value))
- assert_not_reached ();
-
- assert_num_eq (1, array->num);
-
- assert_ptr_eq (array->elem[0], value);
-
- p11_array_remove (array, 0);
-
- assert_num_eq (0, array->num);
-
- p11_array_free (array);
-}
-
-static void
-test_remove_destroys (void)
-{
- p11_array *array;
- int value = 0;
-
- array = p11_array_new (destroy_value);
- if (!p11_array_push (array, &value))
- assert_not_reached ();
-
- p11_array_remove (array, 0);
-
- assert_num_eq (2, value);
-
- /* should not be destroyed again */
- value = 0;
-
- p11_array_free (array);
-
- assert_num_eq (0, value);
-}
-
-static void
-test_remove_and_count (void)
-{
- p11_array *array;
- int *value;
- int i;
-
- array = p11_array_new (free);
-
- assert_num_eq (0, array->num);
-
- for (i = 0; i < 20000; ++i) {
- value = malloc (sizeof (int));
- assert (value != NULL);
- *value = i;
- if (!p11_array_push (array, value))
- assert_not_reached ();
- assert_num_eq (i + 1, array->num);
- }
-
- for (i = 10; i < 20000; ++i) {
- p11_array_remove (array, 10);
- assert_num_eq (20010 - (i + 1), array->num);
- }
-
- assert_num_eq (10, array->num);
-
- p11_array_free (array);
-}
-
-static void
-test_clear_destroys (void)
-{
- p11_array *array;
- int value = 0;
-
- array = p11_array_new (destroy_value);
- if (!p11_array_push (array, &value))
- assert_not_reached ();
-
- assert_num_eq (1, array->num);
-
- p11_array_clear (array);
-
- assert_num_eq (2, value);
- assert_num_eq (0, array->num);
-
- /* should not be destroyed again */
- value = 0;
-
- p11_array_free (array);
-
- assert_num_eq (0, value);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_create, "/array/create");
- p11_test (test_add, "/array/add");
- p11_test (test_add_remove, "/array/add-remove");
- p11_test (test_remove_destroys, "/array/remove-destroys");
- p11_test (test_remove_and_count, "/array/remove-and-count");
- p11_test (test_free_null, "/array/free-null");
- p11_test (test_free_destroys, "/array/free-destroys");
- p11_test (test_clear_destroys, "/array/clear-destroys");
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-attrs.c b/common/test-attrs.c
deleted file mode 100644
index 79895e2..0000000
--- a/common/test-attrs.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@gnome.org>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "attrs.h"
-#include "debug.h"
-
-static void
-test_terminator (void)
-{
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_LABEL, NULL, 0 },
- { CKA_INVALID },
- };
-
- assert_num_eq (true, p11_attrs_terminator (attrs + 2));
- assert_num_eq (true, p11_attrs_terminator (NULL));
- assert_num_eq (false, p11_attrs_terminator (attrs));
- assert_num_eq (false, p11_attrs_terminator (attrs + 1));
-}
-
-static void
-test_count (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_INVALID },
- };
-
- CK_ATTRIBUTE empty[] = {
- { CKA_INVALID },
- };
-
- assert_num_eq (2, p11_attrs_count (attrs));
- assert_num_eq (0, p11_attrs_count (NULL));
- assert_num_eq (0, p11_attrs_count (empty));
-}
-
-static void
-test_build_one (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE add = { CKA_LABEL, "yay", 3 };
-
- attrs = p11_attrs_build (NULL, &add, NULL);
-
- /* Test the first attribute */
- assert_ptr_not_null (attrs);
- assert (attrs->type == CKA_LABEL);
- assert_num_eq (3, attrs->ulValueLen);
- assert (memcmp (attrs->pValue, "yay", 3) == 0);
-
- assert (attrs[1].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_build_two (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE two = { CKA_VALUE, "eight", 5 };
-
- attrs = p11_attrs_build (NULL, &one, &two, NULL);
-
- assert_ptr_not_null (attrs);
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (3, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "yay", 3) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (5, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "eight", 5) == 0);
-
- assert (attrs[2].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_build_invalid (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE invalid = { CKA_INVALID };
- CK_ATTRIBUTE two = { CKA_VALUE, "eight", 5 };
-
- attrs = p11_attrs_build (NULL, &one, &invalid, &two, NULL);
-
- assert_ptr_not_null (attrs);
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (3, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "yay", 3) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (5, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "eight", 5) == 0);
-
- assert (attrs[2].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_buildn_two (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE add[] = {
- { CKA_LABEL, "yay", 3 },
- { CKA_VALUE, "eight", 5 }
- };
-
- attrs = p11_attrs_buildn (NULL, add, 2);
-
- /* Test the first attribute */
- assert_ptr_not_null (attrs);
- assert (attrs->type == CKA_LABEL);
- assert_num_eq (3, attrs->ulValueLen);
- assert (memcmp (attrs->pValue, "yay", 3) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (5, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "eight", 5) == 0);
-
- assert (attrs[2].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_buildn_one (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE add = { CKA_LABEL, "yay", 3 };
-
- attrs = p11_attrs_buildn (NULL, &add, 1);
-
- /* Test the first attribute */
- assert_ptr_not_null (attrs);
- assert (attrs->type == CKA_LABEL);
- assert_num_eq (3, attrs->ulValueLen);
- assert (memcmp (attrs->pValue, "yay", 3) == 0);
-
- assert (attrs[1].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_build_add (void)
-{
- CK_ATTRIBUTE initial[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_VALUE, "nine", 4 },
- };
-
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE two = { CKA_TOKEN, "\x01", 1 };
-
- attrs = p11_attrs_buildn (NULL, initial, 2);
- attrs = p11_attrs_build (attrs, &one, &two, NULL);
-
- assert_ptr_not_null (attrs);
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (3, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "yay", 3) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (4, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "nine", 4) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[2].type == CKA_TOKEN);
- assert_num_eq (1, attrs[2].ulValueLen);
- assert (memcmp (attrs[2].pValue, "\x01", 1) == 0);
-
- assert (attrs[3].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_build_null (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE add = { CKA_LABEL, NULL, (CK_ULONG)-1 };
-
- attrs = p11_attrs_build (NULL, &add, NULL);
-
- /* Test the first attribute */
- assert_ptr_not_null (attrs);
- assert (attrs->type == CKA_LABEL);
- assert (attrs->ulValueLen == (CK_ULONG)-1);
- assert_ptr_eq (NULL, attrs->pValue);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_dup (void)
-{
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE original[] = {
- { CKA_LABEL, "yay", 3 },
- { CKA_VALUE, "eight", 5 },
- { CKA_INVALID }
- };
-
- attrs = p11_attrs_dup (original);
-
- /* Test the first attribute */
- assert_ptr_not_null (attrs);
- assert (attrs->type == CKA_LABEL);
- assert_num_eq (3, attrs->ulValueLen);
- assert (memcmp (attrs->pValue, "yay", 3) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (5, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "eight", 5) == 0);
-
- assert (attrs[2].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_take (void)
-{
- CK_ATTRIBUTE initial[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_VALUE, "nine", 4 },
- };
-
- CK_ATTRIBUTE *attrs;
-
- attrs = p11_attrs_buildn (NULL, initial, 2);
- attrs = p11_attrs_take (attrs, CKA_LABEL, strdup ("boooyah"), 7);
- attrs = p11_attrs_take (attrs, CKA_TOKEN, strdup ("\x01"), 1);
- assert_ptr_not_null (attrs);
-
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (7, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "boooyah", 7) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (4, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "nine", 4) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[2].type == CKA_TOKEN);
- assert_num_eq (1, attrs[2].ulValueLen);
- assert (memcmp (attrs[2].pValue, "\x01", 1) == 0);
-
- assert (attrs[3].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-
-static void
-test_merge_replace (void)
-{
- CK_ATTRIBUTE initial[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_VALUE, "nine", 4 },
- };
-
- CK_ATTRIBUTE extra[] = {
- { CKA_LABEL, "boooyah", 7 },
- { CKA_APPLICATION, "disco", 5 },
- };
-
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE *merge;
-
- attrs = p11_attrs_buildn (NULL, initial, 2);
- merge = p11_attrs_buildn (NULL, extra, 2);
- attrs = p11_attrs_merge (attrs, merge, true);
- assert_ptr_not_null (attrs);
-
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (7, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "boooyah", 7) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (4, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "nine", 4) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[2].type == CKA_APPLICATION);
- assert_num_eq (5, attrs[2].ulValueLen);
- assert (memcmp (attrs[2].pValue, "disco", 5) == 0);
-
- assert (attrs[3].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_merge_empty (void)
-{
- CK_ATTRIBUTE extra[] = {
- { CKA_LABEL, "boooyah", 7 },
- { CKA_APPLICATION, "disco", 5 },
- };
-
- CK_ATTRIBUTE *attrs = NULL;
- CK_ATTRIBUTE *merge;
-
- merge = p11_attrs_buildn (NULL, extra, 2);
- attrs = p11_attrs_merge (attrs, merge, true);
- assert_ptr_not_null (attrs);
- assert_ptr_eq (merge, attrs);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_merge_augment (void)
-{
- CK_ATTRIBUTE initial[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_VALUE, "nine", 4 },
- };
-
- CK_ATTRIBUTE extra[] = {
- { CKA_LABEL, "boooyah", 7 },
- { CKA_APPLICATION, "disco", 5 },
- };
-
- CK_ATTRIBUTE *attrs;
- CK_ATTRIBUTE *merge;
-
- attrs = p11_attrs_buildn (NULL, initial, 2);
- merge = p11_attrs_buildn (NULL, extra, 2);
- attrs = p11_attrs_merge (attrs, merge, false);
- assert_ptr_not_null (attrs);
-
- assert (attrs[0].type == CKA_LABEL);
- assert_num_eq (5, attrs[0].ulValueLen);
- assert (memcmp (attrs[0].pValue, "label", 5) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[1].type == CKA_VALUE);
- assert_num_eq (4, attrs[1].ulValueLen);
- assert (memcmp (attrs[1].pValue, "nine", 4) == 0);
-
- assert_ptr_not_null (attrs);
- assert (attrs[2].type == CKA_APPLICATION);
- assert_num_eq (5, attrs[2].ulValueLen);
- assert (memcmp (attrs[2].pValue, "disco", 5) == 0);
-
- assert (attrs[3].type == CKA_INVALID);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_free_null (void)
-{
- p11_attrs_free (NULL);
-}
-
-static void
-test_equal (void)
-{
- char *data = "extra attribute";
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE null = { CKA_LABEL, NULL, 3 };
- CK_ATTRIBUTE two = { CKA_VALUE, "yay", 3 };
- CK_ATTRIBUTE other = { CKA_VALUE, data, 5 };
- CK_ATTRIBUTE overflow = { CKA_VALUE, data, 5 };
- CK_ATTRIBUTE content = { CKA_VALUE, "conte", 5 };
-
- assert (p11_attr_equal (&one, &one));
- assert (!p11_attr_equal (&one, NULL));
- assert (!p11_attr_equal (NULL, &one));
- assert (!p11_attr_equal (&one, &two));
- assert (!p11_attr_equal (&two, &other));
- assert (p11_attr_equal (&other, &overflow));
- assert (!p11_attr_equal (&one, &null));
- assert (!p11_attr_equal (&one, &null));
- assert (!p11_attr_equal (&other, &content));
-}
-
-static void
-test_hash (void)
-{
- char *data = "extra attribute";
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE null = { CKA_LABEL, NULL, 3 };
- CK_ATTRIBUTE two = { CKA_VALUE, "yay", 3 };
- CK_ATTRIBUTE other = { CKA_VALUE, data, 5 };
- CK_ATTRIBUTE overflow = { CKA_VALUE, data, 5 };
- CK_ATTRIBUTE content = { CKA_VALUE, "conte", 5 };
- unsigned int hash;
-
- hash = p11_attr_hash (&one);
- assert (hash != 0);
-
- assert (p11_attr_hash (&one) == hash);
- assert (p11_attr_hash (&two) != hash);
- assert (p11_attr_hash (&other) != hash);
- assert (p11_attr_hash (&overflow) != hash);
- assert (p11_attr_hash (&null) != hash);
- assert (p11_attr_hash (&content) != hash);
-
- hash = p11_attr_hash (NULL);
- assert (hash == 0);
-}
-
-static void
-test_to_string (void)
-{
- char *data = "extra attribute";
- CK_ATTRIBUTE one = { CKA_LABEL, "yay", 3 };
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "yay", 3 },
- { CKA_VALUE, data, 5 },
- { CKA_INVALID },
- };
-
- char *string;
-
-
- string = p11_attr_to_string (&one, CKA_INVALID);
- assert_str_eq ("{ CKA_LABEL = (3) \"yay\" }", string);
- free (string);
-
- string = p11_attrs_to_string (attrs, -1);
- assert_str_eq ("(2) [ { CKA_LABEL = (3) \"yay\" }, { CKA_VALUE = (5) NOT-PRINTED } ]", string);
- free (string);
-
- string = p11_attrs_to_string (attrs, 1);
- assert_str_eq ("(1) [ { CKA_LABEL = (3) \"yay\" } ]", string);
- free (string);
-}
-
-static void
-test_find (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
- CK_ATTRIBUTE *attr;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_INVALID },
- };
-
- attr = p11_attrs_find (attrs, CKA_LABEL);
- assert_ptr_eq (attrs + 0, attr);
-
- attr = p11_attrs_find (attrs, CKA_TOKEN);
- assert_ptr_eq (attrs + 1, attr);
-
- attr = p11_attrs_find (attrs, CKA_VALUE);
- assert_ptr_eq (NULL, attr);
-}
-
-static void
-test_findn (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
- CK_ATTRIBUTE *attr;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- };
-
- attr = p11_attrs_findn (attrs, 2, CKA_LABEL);
- assert_ptr_eq (attrs + 0, attr);
-
- attr = p11_attrs_findn (attrs, 2, CKA_TOKEN);
- assert_ptr_eq (attrs + 1, attr);
-
- attr = p11_attrs_findn (attrs, 2, CKA_VALUE);
- assert_ptr_eq (NULL, attr);
-
- attr = p11_attrs_findn (attrs, 1, CKA_TOKEN);
- assert_ptr_eq (NULL, attr);
-}
-
-static void
-test_remove (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
- CK_ATTRIBUTE *attr;
- CK_ATTRIBUTE *attrs;
- CK_BBOOL ret;
-
- CK_ATTRIBUTE initial[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- };
-
- attrs = p11_attrs_buildn (NULL, initial, 2);
- assert_ptr_not_null (attrs);
-
- attr = p11_attrs_find (attrs, CKA_LABEL);
- assert_ptr_eq (attrs + 0, attr);
-
- ret = p11_attrs_remove (attrs, CKA_LABEL);
- assert_num_eq (CK_TRUE, ret);
-
- attr = p11_attrs_find (attrs, CKA_LABEL);
- assert_ptr_eq (NULL, attr);
-
- ret = p11_attrs_remove (attrs, CKA_LABEL);
- assert_num_eq (CK_FALSE, ret);
-
- p11_attrs_free (attrs);
-}
-
-static void
-test_match (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_INVALID },
- };
-
- CK_ATTRIBUTE subset[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_INVALID },
- };
-
- CK_ATTRIBUTE different[] = {
- { CKA_LABEL, "other", 5 },
- { CKA_INVALID },
- };
-
- CK_ATTRIBUTE extra[] = {
- { CKA_VALUE, "the value", 9 },
- { CKA_LABEL, "other", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_INVALID },
- };
-
- assert (p11_attrs_match (attrs, attrs));
- assert (p11_attrs_match (attrs, subset));
- assert (!p11_attrs_match (attrs, different));
- assert (!p11_attrs_match (attrs, extra));
-}
-
-static void
-test_matchn (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "label", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_INVALID },
- };
-
- CK_ATTRIBUTE subset[] = {
- { CKA_LABEL, "label", 5 },
- };
-
- CK_ATTRIBUTE different[] = {
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- { CKA_LABEL, "other", 5 },
- };
-
- CK_ATTRIBUTE extra[] = {
- { CKA_VALUE, "the value", 9 },
- { CKA_LABEL, "other", 5 },
- { CKA_TOKEN, &vtrue, sizeof (vtrue) },
- };
-
- assert (p11_attrs_matchn (attrs, subset, 1));
- assert (!p11_attrs_matchn (attrs, different, 2));
- assert (!p11_attrs_matchn (attrs, extra, 3));
-}
-
-static void
-test_find_bool (void)
-{
- CK_BBOOL vtrue = CK_TRUE;
- CK_BBOOL vfalse = CK_FALSE;
- CK_BBOOL value;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "\x01yy", 3 },
- { CKA_VALUE, &vtrue, (CK_ULONG)-1 },
- { CKA_TOKEN, &vtrue, sizeof (CK_BBOOL) },
- { CKA_TOKEN, &vfalse, sizeof (CK_BBOOL) },
- { CKA_INVALID },
- };
-
- assert (p11_attrs_find_bool (attrs, CKA_TOKEN, &value) && value == CK_TRUE);
- assert (!p11_attrs_find_bool (attrs, CKA_LABEL, &value));
- assert (!p11_attrs_find_bool (attrs, CKA_VALUE, &value));
-}
-
-static void
-test_find_ulong (void)
-{
- CK_ULONG v33 = 33UL;
- CK_ULONG v45 = 45UL;
- CK_ULONG value;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, &v33, 2 },
- { CKA_VALUE, &v45, (CK_ULONG)-1 },
- { CKA_BITS_PER_PIXEL, &v33, sizeof (CK_ULONG) },
- { CKA_BITS_PER_PIXEL, &v45, sizeof (CK_ULONG) },
- { CKA_INVALID },
- };
-
- assert (p11_attrs_find_ulong (attrs, CKA_BITS_PER_PIXEL, &value) && value == v33);
- assert (!p11_attrs_find_ulong (attrs, CKA_LABEL, &value));
- assert (!p11_attrs_find_ulong (attrs, CKA_VALUE, &value));
-}
-
-static void
-test_find_value (void)
-{
- void *value;
- size_t length;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "", (CK_ULONG)-1 },
- { CKA_LABEL, NULL, 5 },
- { CKA_LABEL, "", 0 },
- { CKA_LABEL, "test", 4 },
- { CKA_VALUE, NULL, 0 },
- { CKA_INVALID },
- };
-
- value = p11_attrs_find_value (attrs, CKA_LABEL, &length);
- assert_ptr_eq (attrs[3].pValue, value);
- assert_num_eq (4, length);
-
- value = p11_attrs_find_value (attrs, CKA_LABEL, NULL);
- assert_ptr_eq (attrs[3].pValue, value);
-
- value = p11_attrs_find_value (attrs, CKA_VALUE, &length);
- assert_ptr_eq (NULL, value);
-
- value = p11_attrs_find_value (attrs, CKA_TOKEN, &length);
- assert_ptr_eq (NULL, value);
-}
-
-static void
-test_find_valid (void)
-{
- CK_ATTRIBUTE *attr;
-
- CK_ATTRIBUTE attrs[] = {
- { CKA_LABEL, "", (CK_ULONG)-1 },
- { CKA_LABEL, NULL, 5 },
- { CKA_LABEL, "", 0 },
- { CKA_LABEL, "test", 4 },
- { CKA_VALUE, "value", 5 },
- { CKA_INVALID },
- };
-
- attr = p11_attrs_find_valid (attrs, CKA_LABEL);
- assert_ptr_eq (attrs + 3, attr);
-
- attr = p11_attrs_find_valid (attrs, CKA_VALUE);
- assert_ptr_eq (attrs + 4, attr);
-
- attr = p11_attrs_find_valid (attrs, CKA_TOKEN);
- assert_ptr_eq (NULL, attr);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_equal, "/attrs/equal");
- p11_test (test_hash, "/attrs/hash");
- p11_test (test_to_string, "/attrs/to-string");
-
- p11_test (test_terminator, "/attrs/terminator");
- p11_test (test_count, "/attrs/count");
- p11_test (test_build_one, "/attrs/build-one");
- p11_test (test_build_two, "/attrs/build-two");
- p11_test (test_build_invalid, "/attrs/build-invalid");
- p11_test (test_buildn_one, "/attrs/buildn-one");
- p11_test (test_buildn_two, "/attrs/buildn-two");
- p11_test (test_build_add, "/attrs/build-add");
- p11_test (test_build_null, "/attrs/build-null");
- p11_test (test_dup, "/attrs/dup");
- p11_test (test_take, "/attrs/take");
- p11_test (test_merge_replace, "/attrs/merge-replace");
- p11_test (test_merge_augment, "/attrs/merge-augment");
- p11_test (test_merge_empty, "/attrs/merge-empty");
- p11_test (test_free_null, "/attrs/free-null");
- p11_test (test_match, "/attrs/match");
- p11_test (test_matchn, "/attrs/matchn");
- p11_test (test_find, "/attrs/find");
- p11_test (test_findn, "/attrs/findn");
- p11_test (test_find_bool, "/attrs/find-bool");
- p11_test (test_find_ulong, "/attrs/find-ulong");
- p11_test (test_find_value, "/attrs/find-value");
- p11_test (test_find_valid, "/attrs/find-valid");
- p11_test (test_remove, "/attrs/remove");
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-buffer.c b/common/test-buffer.c
deleted file mode 100644
index 4fd060d..0000000
--- a/common/test-buffer.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stef@thewalter.net>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "debug.h"
-#include "buffer.h"
-
-static void
-test_init_uninit (void)
-{
- p11_buffer buffer;
-
- p11_buffer_init (&buffer, 10);
- assert_ptr_not_null (buffer.data);
- assert_num_eq (0, buffer.len);
- assert_num_eq (0, buffer.flags);
- assert (buffer.size >= 10);
- assert_ptr_not_null (buffer.ffree);
- assert_ptr_not_null (buffer.frealloc);
-
- p11_buffer_uninit (&buffer);
-}
-
-static void
-test_append (void)
-{
- p11_buffer buffer;
-
- p11_buffer_init (&buffer, 10);
- buffer.len = 5;
- p11_buffer_append (&buffer, 35);
- assert_num_eq (5 + 35, buffer.len);
- assert (buffer.size >= 35 + 5);
-
- p11_buffer_append (&buffer, 15);
- assert_num_eq (5 + 35 + 15, buffer.len);
- assert (buffer.size >= 5 + 35 + 15);
-
- p11_buffer_uninit (&buffer);
-}
-
-static void
-test_null (void)
-{
- p11_buffer buffer;
-
- p11_buffer_init_null (&buffer, 10);
- p11_buffer_add (&buffer, "Blah", -1);
- p11_buffer_add (&buffer, " blah", -1);
-
- assert_str_eq ("Blah blah", buffer.data);
-
- p11_buffer_uninit (&buffer);
-}
-
-static int mock_realloced = 0;
-static int mock_freed = 0;
-
-static void *
-mock_realloc (void *data,
- size_t size)
-{
- mock_realloced++;
- return realloc (data, size);
-}
-
-static void
-mock_free (void *data)
-{
- mock_freed++;
- free (data);
-}
-
-static void
-test_init_for_data (void)
-{
- p11_buffer buffer;
- unsigned char *ret;
- size_t len;
-
- mock_realloced = 0;
- mock_freed = 0;
-
- p11_buffer_init_full (&buffer, (unsigned char *)strdup ("blah"), 4, 0,
- mock_realloc, mock_free);
-
- assert_ptr_not_null (buffer.data);
- assert_str_eq ("blah", (char *)buffer.data);
- assert_num_eq (4, buffer.len);
- assert_num_eq (0, buffer.flags);
- assert_num_eq (4, buffer.size);
- assert_ptr_eq (mock_free, buffer.ffree);
- assert_ptr_eq (mock_realloc, buffer.frealloc);
-
- assert_num_eq (0, mock_realloced);
- assert_num_eq (0, mock_freed);
-
- len = buffer.len;
- ret = p11_buffer_append (&buffer, 1024);
- assert_ptr_eq ((char *)buffer.data + len, ret);
- assert_num_eq (1, mock_realloced);
-
- p11_buffer_uninit (&buffer);
- assert_num_eq (1, mock_realloced);
- assert_num_eq (1, mock_freed);
-}
-
-static void
-test_steal (void)
-{
- p11_buffer buffer;
- char *string;
- size_t length;
-
- mock_freed = 0;
-
- p11_buffer_init_full (&buffer, (unsigned char *)strdup ("blah"), 4,
- P11_BUFFER_NULL, mock_realloc, mock_free);
-
- assert_ptr_not_null (buffer.data);
- assert_str_eq ("blah", buffer.data);
-
- p11_buffer_add (&buffer, " yada", -1);
- assert_str_eq ("blah yada", buffer.data);
-
- string = p11_buffer_steal (&buffer, &length);
- p11_buffer_uninit (&buffer);
-
- assert_str_eq ("blah yada", string);
- assert_num_eq (9, length);
- assert_num_eq (0, mock_freed);
-
- free (string);
-}
-
-static void
-test_add (void)
-{
- p11_buffer buffer;
-
- p11_buffer_init (&buffer, 10);
-
- p11_buffer_add (&buffer, (unsigned char *)"Planet Express", 15);
- assert_num_eq (15, buffer.len);
- assert_str_eq ("Planet Express", (char *)buffer.data);
- assert (p11_buffer_ok (&buffer));
-
- p11_buffer_uninit (&buffer);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_init_uninit, "/buffer/init-uninit");
- p11_test (test_init_for_data, "/buffer/init-for-data");
- p11_test (test_append, "/buffer/append");
- p11_test (test_null, "/buffer/null");
- p11_test (test_add, "/buffer/add");
- p11_test (test_steal, "/buffer/steal");
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-compat.c b/common/test-compat.c
deleted file mode 100644
index e28698e..0000000
--- a/common/test-compat.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@redhat.com>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "compat.h"
-
-static void
-test_strndup (void)
-{
- char unterminated[] = { 't', 'e', 's', 't', 'e', 'r', 'o', 'n', 'i', 'o' };
- char *res;
-
- res = strndup (unterminated, 6);
- assert_str_eq (res, "tester");
- free (res);
-
- res = strndup ("test", 6);
- assert_str_eq (res, "test");
- free (res);
-}
-
-#ifdef OS_UNIX
-
-static void
-test_getauxval (void)
-{
- /* 23 is AT_SECURE */
- const char *args[] = { BUILDDIR "/frob-getauxval", "23", NULL };
- char *path;
- int ret;
-
- ret = p11_test_run_child (args, true);
- assert_num_eq (ret, 0);
-
- path = p11_test_copy_setgid (args[0]);
- if (path == NULL)
- return;
-
- args[0] = path;
- ret = p11_test_run_child (args, true);
- assert_num_cmp (ret, !=, 0);
-
- if (unlink (path) < 0)
- assert_fail ("unlink failed", strerror (errno));
- free (path);
-}
-
-static void
-test_secure_getenv (void)
-{
- const char *args[] = { BUILDDIR "/frob-getenv", "BLAH", NULL };
- char *path;
- int ret;
-
- setenv ("BLAH", "5", 1);
-
- ret = p11_test_run_child (args, true);
- assert_num_eq (ret, 5);
-
- path = p11_test_copy_setgid (args[0]);
- if (path == NULL)
- return;
-
- args[0] = path;
- ret = p11_test_run_child (args, true);
- assert_num_cmp (ret, ==, 0);
-
-/* if (unlink (path) < 0)
- assert_fail ("unlink failed", strerror (errno));
- */
- free (path);
-}
-
-static void
-test_mmap (void)
-{
- p11_mmap *map;
- void *data;
- size_t size;
- char file[] = "emptyfileXXXXXX";
- int fd = mkstemp (file);
- assert (fd >= 0);
- close (fd);
- /* mmap on empty file should work */
- map = p11_mmap_open (file, NULL, &data, &size);
- unlink (file);
- assert_ptr_not_null (map);
- p11_mmap_close (map);
-}
-
-#endif /* OS_UNIX */
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_strndup, "/compat/strndup");
-#ifdef OS_UNIX
- /* Don't run this test when under fakeroot */
- if (!getenv ("FAKED_MODE")) {
- p11_test (test_getauxval, "/compat/getauxval");
- p11_test (test_secure_getenv, "/compat/secure_getenv");
- }
- p11_test (test_mmap, "/compat/mmap");
-#endif
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-constants.c b/common/test-constants.c
deleted file mode 100644
index 577d611..0000000
--- a/common/test-constants.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@gnome.org>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "attrs.h"
-#include "constants.h"
-#include "debug.h"
-
-static void
-test_constants (void *arg)
-{
- const p11_constant *constant = arg;
- p11_dict *nicks, *names;
- CK_ULONG check;
- int i, j;
-
- nicks = p11_constant_reverse (true);
- names = p11_constant_reverse (false);
-
- for (i = 1; constant[i].value != CKA_INVALID; i++) {
- if (constant[i].value < constant[i - 1].value)
- assert_fail ("attr constant out of order", constant[i].name);
- }
- for (i = 0; constant[i].value != CKA_INVALID; i++) {
- assert_ptr_not_null (constant[i].name);
-
- if (constant[i].nicks[0]) {
- assert_str_eq (constant[i].nicks[0],
- p11_constant_nick (constant, constant[i].value));
- }
-
- assert_str_eq (constant[i].name,
- p11_constant_name (constant, constant[i].value));
-
- for (j = 0; constant[i].nicks[j] != NULL; j++) {
- check = p11_constant_resolve (nicks, constant[i].nicks[j]);
- assert_num_eq (constant[i].value, check);
- }
-
- check = p11_constant_resolve (names, constant[i].name);
- assert_num_eq (constant[i].value, check);
- }
-
- p11_dict_free (names);
- p11_dict_free (nicks);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_testx (test_constants, (void *)p11_constant_types, "/constants/types");
- p11_testx (test_constants, (void *)p11_constant_classes, "/constants/classes");
- p11_testx (test_constants, (void *)p11_constant_trusts, "/constants/trusts");
- p11_testx (test_constants, (void *)p11_constant_certs, "/constants/certs");
- p11_testx (test_constants, (void *)p11_constant_keys, "/constants/keys");
- p11_testx (test_constants, (void *)p11_constant_asserts, "/constants/asserts");
- p11_testx (test_constants, (void *)p11_constant_categories, "/constants/categories");
- p11_testx (test_constants, (void *)p11_constant_mechanisms, "/constants/mechanisms");
- p11_testx (test_constants, (void *)p11_constant_users, "/constants/users");
- p11_testx (test_constants, (void *)p11_constant_states, "/constants/states");
- p11_testx (test_constants, (void *)p11_constant_returns, "/constants/returns");
-
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-dict.c b/common/test-dict.c
deleted file mode 100644
index f12a34e..0000000
--- a/common/test-dict.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- * Copyright (c) 2011, Collabora Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "dict.h"
-
-static void
-test_create (void)
-{
- p11_dict *map;
-
- map = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal, NULL, NULL);
- assert_ptr_not_null (map);
- p11_dict_free (map);
-}
-
-static void
-test_free_null (void)
-{
- p11_dict_free (NULL);
-}
-
-typedef struct {
- int value;
- bool freed;
-} Key;
-
-static unsigned int
-key_hash (const void *ptr)
-{
- const Key *k = ptr;
- assert (!k->freed);
- return p11_dict_intptr_hash (&k->value);
-}
-
-static bool
-key_equal (const void *one,
- const void *two)
-{
- const Key *k1 = one;
- const Key *k2 = two;
- assert (!k1->freed);
- assert (!k2->freed);
- return p11_dict_intptr_equal (&k1->value, &k2->value);
-}
-
-static void
-key_destroy (void *data)
-{
- Key *k = data;
- assert (!k->freed);
- k->freed = true;
-}
-
-static void
-value_destroy (void *data)
-{
- int *value = data;
- *value = 2;
-}
-
-static void
-test_free_destroys (void)
-{
- p11_dict *map;
- Key key = { 8, 0 };
- int value = 0;
-
- map = p11_dict_new (key_hash, key_equal, key_destroy, value_destroy);
- assert_ptr_not_null (map);
- if (!p11_dict_set (map, &key, &value))
- assert_not_reached ();
- p11_dict_free (map);
-
- assert_num_eq (true, key.freed);
- assert_num_eq (2, value);
-}
-
-static void
-test_iterate (void)
-{
- p11_dict *map;
- p11_dictiter iter;
- int key = 1;
- int value = 2;
- void *pkey;
- void *pvalue;
- int ret;
-
- map = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal, NULL, NULL);
- assert_ptr_not_null (map);
- if (!p11_dict_set (map, &key, &value))
- assert_not_reached ();
-
- p11_dict_iterate (map, &iter);
-
- ret = p11_dict_next (&iter, &pkey, &pvalue);
- assert_num_eq (1, ret);
- assert_ptr_eq (pkey, &key);
- assert_ptr_eq (pvalue, &value);
-
- ret = p11_dict_next (&iter, &pkey, &pvalue);
- assert_num_eq (0, ret);
-
- p11_dict_free (map);
-}
-
-static int
-compar_strings (const void *one,
- const void *two)
-{
- char **p1 = (char **)one;
- char **p2 = (char **)two;
- return strcmp (*p1, *p2);
-}
-
-static void
-test_iterate_remove (void)
-{
- p11_dict *map;
- p11_dictiter iter;
- char *keys[] = { "111", "222", "333" };
- char *values[] = { "444", "555", "666" };
- void *okeys[3];
- void *ovalues[3];
- bool ret;
- int i;
-
- map = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, NULL, NULL);
- assert_ptr_not_null (map);
-
- for (i = 0; i < 3; i++) {
- if (!p11_dict_set (map, keys[i], values[i]))
- assert_not_reached ();
- }
-
- p11_dict_iterate (map, &iter);
-
- ret = p11_dict_next (&iter, &okeys[0], &ovalues[0]);
- assert_num_eq (true, ret);
-
- ret = p11_dict_next (&iter, &okeys[1], &ovalues[1]);
- assert_num_eq (true, ret);
- if (!p11_dict_remove (map, okeys[1]))
- assert_not_reached ();
-
- ret = p11_dict_next (&iter, &okeys[2], &ovalues[2]);
- assert_num_eq (true, ret);
-
- ret = p11_dict_next (&iter, NULL, NULL);
- assert_num_eq (false, ret);
-
- assert_num_eq (2, p11_dict_size (map));
- p11_dict_free (map);
-
- qsort (okeys, 3, sizeof (void *), compar_strings);
- qsort (ovalues, 3, sizeof (void *), compar_strings);
-
- for (i = 0; i < 3; i++) {
- assert_str_eq (keys[i], okeys[i]);
- assert_ptr_eq (keys[i], okeys[i]);
- assert_str_eq (values[i], ovalues[i]);
- assert_ptr_eq (values[i], ovalues[i]);
- }
-}
-
-static void
-test_set_get (void)
-{
- char *key = "KEY";
- char *value = "VALUE";
- char *check;
- p11_dict *map;
-
- map = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, NULL, NULL);
- p11_dict_set (map, key, value);
- check = p11_dict_get (map, key);
- assert_ptr_eq (check, value);
-
- p11_dict_free (map);
-}
-
-static void
-test_set_get_remove (void)
-{
- char *key = "KEY";
- char *value = "VALUE";
- char *check;
- p11_dict *map;
- bool ret;
-
- map = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, NULL, NULL);
-
- if (!p11_dict_set (map, key, value))
- assert_not_reached ();
-
- check = p11_dict_get (map, key);
- assert_ptr_eq (check, value);
-
- ret = p11_dict_remove (map, key);
- assert_num_eq (true, ret);
- ret = p11_dict_remove (map, key);
- assert_num_eq (false, ret);
-
- check = p11_dict_get (map, key);
- assert (check == NULL);
-
- p11_dict_free (map);
-}
-
-static void
-test_set_clear (void)
-{
- char *key = "KEY";
- char *value = "VALUE";
- char *check;
- p11_dict *map;
-
- map = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal, NULL, NULL);
-
- if (!p11_dict_set (map, key, value))
- assert_not_reached ();
-
- p11_dict_clear (map);
-
- check = p11_dict_get (map, key);
- assert (check == NULL);
-
- p11_dict_free (map);
-}
-
-static void
-test_remove_destroys (void)
-{
- p11_dict *map;
- Key key = { 8, 0 };
- int value = 0;
- bool ret;
-
- map = p11_dict_new (key_hash, key_equal, key_destroy, value_destroy);
- assert_ptr_not_null (map);
- if (!p11_dict_set (map, &key, &value))
- assert_not_reached ();
-
- ret = p11_dict_remove (map, &key);
- assert_num_eq (true, ret);
- assert_num_eq (true, key.freed);
- assert_num_eq (2, value);
-
- /* should not be destroyed again */
- key.freed = false;
- value = 0;
-
- ret = p11_dict_remove (map, &key);
- assert_num_eq (false, ret);
- assert_num_eq (false, key.freed);
- assert_num_eq (0, value);
-
- /* should not be destroyed again */
- key.freed = false;
- value = 0;
-
- p11_dict_free (map);
-
- assert_num_eq (false, key.freed);
- assert_num_eq (0, value);
-}
-
-static void
-test_set_destroys (void)
-{
- p11_dict *map;
- Key key = { 8, 0 };
- Key key2 = { 8, 0 };
- int value, value2;
- bool ret;
-
- map = p11_dict_new (key_hash, key_equal, key_destroy, value_destroy);
- assert_ptr_not_null (map);
- if (!p11_dict_set (map, &key, &value))
- assert_not_reached ();
-
- key.freed = key2.freed = false;
- value = value2 = 0;
-
- /* Setting same key and value, should not be destroyed */
- ret = p11_dict_set (map, &key, &value);
- assert_num_eq (true, ret);
- assert_num_eq (false, key.freed);
- assert_num_eq (false, key2.freed);
- assert_num_eq (0, value);
- assert_num_eq (0, value2);
-
- key.freed = key2.freed = false;
- value = value2 = 0;
-
- /* Setting a new key same value, key should be destroyed */
- ret = p11_dict_set (map, &key2, &value);
- assert_num_eq (true, ret);
- assert_num_eq (true, key.freed);
- assert_num_eq (false, key2.freed);
- assert_num_eq (0, value);
- assert_num_eq (0, value2);
-
- key.freed = key2.freed = false;
- value = value2 = 0;
-
- /* Setting same key, new value, value should be destroyed */
- ret = p11_dict_set (map, &key2, &value2);
- assert_num_eq (true, ret);
- assert_num_eq (false, key.freed);
- assert_num_eq (false, key2.freed);
- assert_num_eq (2, value);
- assert_num_eq (0, value2);
-
- key.freed = key2.freed = false;
- value = value2 = 0;
-
- /* Setting new key new value, both should be destroyed */
- ret = p11_dict_set (map, &key, &value);
- assert_num_eq (true, ret);
- assert_num_eq (false, key.freed);
- assert_num_eq (true, key2.freed);
- assert_num_eq (0, value);
- assert_num_eq (2, value2);
-
- key.freed = key2.freed = false;
- value = value2 = 0;
-
- p11_dict_free (map);
- assert_num_eq (true, key.freed);
- assert_num_eq (2, value);
- assert_num_eq (false, key2.freed);
- assert_num_eq (0, value2);
-}
-
-
-static void
-test_clear_destroys (void)
-{
- p11_dict *map;
- Key key = { 18, 0 };
- int value = 0;
-
- map = p11_dict_new (key_hash, key_equal, key_destroy, value_destroy);
- assert_ptr_not_null (map);
- if (!p11_dict_set (map, &key, &value))
- assert_not_reached ();
-
- p11_dict_clear (map);
- assert_num_eq (true, key.freed);
- assert_num_eq (2, value);
-
- /* should not be destroyed again */
- key.freed = false;
- value = 0;
-
- p11_dict_clear (map);
- assert_num_eq (false, key.freed);
- assert_num_eq (0, value);
-
- /* should not be destroyed again */
- key.freed = false;
- value = 0;
-
- p11_dict_free (map);
-
- assert_num_eq (false, key.freed);
- assert_num_eq (0, value);
-}
-
-static unsigned int
-test_hash_intptr_with_collisions (const void *data)
-{
- /* lots and lots of collisions, only returns 100 values */
- return (unsigned int)(*((int*)data) % 100);
-}
-
-static void
-test_hash_add_check_lots_and_collisions (void)
-{
- p11_dict *map;
- int *value;
- int i;
-
- map = p11_dict_new (test_hash_intptr_with_collisions,
- p11_dict_intptr_equal, NULL, free);
-
- for (i = 0; i < 20000; ++i) {
- value = malloc (sizeof (int));
- assert (value != NULL);
- *value = i;
- if (!p11_dict_set (map, value, value))
- assert_not_reached ();
- }
-
- for (i = 0; i < 20000; ++i) {
- value = p11_dict_get (map, &i);
- assert_ptr_not_null (value);
- assert_num_eq (i, *value);
- }
-
- p11_dict_free (map);
-}
-
-static void
-test_hash_count (void)
-{
- p11_dict *map;
- int *value;
- int i;
- bool ret;
-
- map = p11_dict_new (p11_dict_intptr_hash, p11_dict_intptr_equal, NULL, free);
-
- assert_num_eq (0, p11_dict_size (map));
-
- for (i = 0; i < 20000; ++i) {
- value = malloc (sizeof (int));
- assert (value != NULL);
- *value = i;
- if (!p11_dict_set (map, value, value))
- assert_not_reached ();
- assert_num_eq (i + 1, p11_dict_size (map));
- }
-
- for (i = 0; i < 20000; ++i) {
- ret = p11_dict_remove (map, &i);
- assert_num_eq (true, ret);
- assert_num_eq (20000 - (i + 1), p11_dict_size (map));
- }
-
- p11_dict_clear (map);
- assert_num_eq (0, p11_dict_size (map));
-
- p11_dict_free (map);
-}
-
-static void
-test_hash_ulongptr (void)
-{
- p11_dict *map;
- unsigned long *value;
- unsigned long i;
-
- map = p11_dict_new (p11_dict_ulongptr_hash, p11_dict_ulongptr_equal, NULL, free);
-
- for (i = 0; i < 20000; ++i) {
- value = malloc (sizeof (unsigned long));
- assert (value != NULL);
- *value = i;
- if (!p11_dict_set (map, value, value))
- assert_not_reached ();
- }
-
- for (i = 0; i < 20000; ++i) {
- value = p11_dict_get (map, &i);
- assert_ptr_not_null (value);
- assert_num_eq (i, *value);
- }
-
- p11_dict_free (map);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_create, "/dict/create");
- p11_test (test_set_get, "/dict/set-get");
- p11_test (test_set_get_remove, "/dict/set-get-remove");
- p11_test (test_remove_destroys, "/dict/remove-destroys");
- p11_test (test_set_clear, "/dict/set-clear");
- p11_test (test_set_destroys, "/dict/set-destroys");
- p11_test (test_clear_destroys, "/dict/clear-destroys");
- p11_test (test_free_null, "/dict/free-null");
- p11_test (test_free_destroys, "/dict/free-destroys");
- p11_test (test_iterate, "/dict/iterate");
- p11_test (test_iterate_remove, "/dict/iterate-remove");
- p11_test (test_hash_add_check_lots_and_collisions, "/dict/add-check-lots-and-collisions");
- p11_test (test_hash_count, "/dict/count");
- p11_test (test_hash_ulongptr, "/dict/ulongptr");
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-hash.c b/common/test-hash.c
deleted file mode 100644
index a12d5a4..0000000
--- a/common/test-hash.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2012 Red Hat Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * Author: Stef Walter <stefw@gnome.org>
- */
-
-#include "config.h"
-#include "test.h"
-
-#include <assert.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "hash.h"
-
-static void
-test_murmur3 (void)
-{
- uint32_t one, two, four, seven, eleven, split;
-
- assert (sizeof (one) == P11_HASH_MURMUR3_LEN);
-
- p11_hash_murmur3 ((unsigned char *)&one, "one", 3, NULL);
- p11_hash_murmur3 ((unsigned char *)&two, "two", 3, NULL);
- p11_hash_murmur3 ((unsigned char *)&four, "four", 4, NULL);
- p11_hash_murmur3 ((unsigned char *)&seven, "seven", 5, NULL);
- p11_hash_murmur3 ((unsigned char *)&eleven, "eleven", 6, NULL);
- p11_hash_murmur3 ((unsigned char *)&split, "ele", 3, "ven", 3, NULL);
-
- assert (one != two);
- assert (one != four);
- assert (one != seven);
- assert (one != eleven);
-
- assert (two != four);
- assert (two != seven);
- assert (two != eleven);
-
- assert (four != seven);
- assert (four != eleven);
-
- assert (split == eleven);
-}
-
-static void
-test_murmur3_incr (void)
-{
- uint32_t first, second;
-
- p11_hash_murmur3 ((unsigned char *)&first,
- "this is the long input!", (size_t)23,
- NULL);
-
- p11_hash_murmur3 ((unsigned char *)&second,
- "this", (size_t)4,
- " ", (size_t)1,
- "is ", (size_t)3,
- "the long ", (size_t)9,
- "in", (size_t)2,
- "p", (size_t)1,
- "u", (size_t)1,
- "t", (size_t)1,
- "!", (size_t)1,
- NULL);
-
- assert_num_eq (first, second);
-}
-
-int
-main (int argc,
- char *argv[])
-{
- p11_test (test_murmur3, "/hash/murmur3");
- p11_test (test_murmur3_incr, "/hash/murmur3-incr");
- return p11_test_run (argc, argv);
-}
diff --git a/common/test-lexer.c b/common/test-lexer.c
deleted file mode 100644
index 7d18e87..0000000
--- a/common/test-lexer.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright (c) 2013 Red Hat Inc.
- *
- * Redistribution and