# README
PKCS#11
This is a Go implementation of the PKCS#11 API. It wraps the library closely, but uses Go idiom where it makes sense. It has been tested with SoftHSM.
SoftHSM
-
Make it use a custom configuration file
export SOFTHSM_CONF=$PWD/softhsm.conf
-
Then use
softhsm
to init itsofthsm --init-token --slot 0 --label test --pin 1234
-
Then use
libsofthsm2.so
as the pkcs11 module:p := pkcs11.New("/usr/lib/softhsm/libsofthsm2.so")
Examples
A skeleton program would look somewhat like this (yes, pkcs#11 is verbose):
p := pkcs11.New("/usr/lib/softhsm/libsofthsm2.so")
err := p.Initialize()
if err != nil {
panic(err)
}
defer p.Destroy()
defer p.Finalize()
slots, err := p.GetSlotList(true)
if err != nil {
panic(err)
}
session, err := p.OpenSession(slots[0], pkcs11.CKF_SERIAL_SESSION|pkcs11.CKF_RW_SESSION)
if err != nil {
panic(err)
}
defer p.CloseSession(session)
err = p.Login(session, pkcs11.CKU_USER, "1234")
if err != nil {
panic(err)
}
defer p.Logout(session)
p.DigestInit(session, []*pkcs11.Mechanism{pkcs11.NewMechanism(pkcs11.CKM_SHA_1, nil)})
hash, err := p.Digest(session, []byte("this is a string"))
if err != nil {
panic(err)
}
for _, d := range hash {
fmt.Printf("%x", d)
}
fmt.Println()
Further examples are included in the tests.
To expose PKCS#11 keys using the crypto.Signer interface, please see github.com/thalesignite/crypto11.
# Packages
Package p11 wraps `miekg/pkcs11` to make it easier to use and more idiomatic to Go, as compared with the more straightforward C wrapper that `miekg/pkcs11` presents.
# Constants
Deprecated.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Deprecated.
Vendor specific range for Ncipher network HSM.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Deprecated.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific range for Mozilla NSS.
Deprecated.
Deprecated.
Vendor specific range for Ncipher network HSM.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Deprecated.
Deprecated.
Deprecated.
Deprecated.
Deprecated.
no params */.
no params */.
no params */.
no params */.
no params */.
no params */.
Vendor specific range for Ncipher network HSM.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Deprecated.
Deprecated.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific range for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific values for Mozilla NSS.
Vendor specific range for Mozilla NSS.
Vendor specific range for Ncipher network HSM.
Vendor specific range for Mozilla NSS.