Testing PKCS11 support
----------------------

# Install SoftHSM and OpenSC

I got SoftHSM via MacPorts, and OpenSC from https://github.com/OpenSC/OpenSC#downloads

You need both; softhsm2-util cannot import certificates.

# Initialize SoftHSM

$ softhsm2-util --init-token --slot 0 --label "TestToken" --pin 1234 --so-pin 4567
The token has been initialized and is reassigned to slot 2006661923

# Create a new RSA key and certificate

$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -subj "/CN=MyCertTEST" -nodes

# Import the RSA key pair into the SoftHSM token

$ softhsm2-util --import key.pem --slot 2006661923 --label "testkey" --id 1212 --pin 1234

# Convert the certificate to DER and import it into SoftHSM token

$ openssl x509 -in cert.pem -out cert.der -outform DER
$ pkcs11-tool --module /opt/local/lib/softhsm/libsofthsm2.so -l --id 1212 --label "testcert" -y cert -w cert.der --pin 1234

# Export the RSA public key convert to PEM, and show in SSH format
# (I'm sure this could be done simpler from the original key.pem, but what the heck.)

pkcs11-tool --module /opt/local/lib/softhsm/libsofthsm2.so --slot 2006661923 --read-object --type pubkey --id 1212 -o key.der
openssl rsa -pubin -inform DER -in key.der -outform PEM -out key.pub.pem
ssh-keygen -f key.pub.pem -m pkcs8 -i

# Install that public key at Gerrit (or your git server of choice)

# Have an ~/.ssh/config with a host entry for your git server using the SoftHSM library as PKCS11 provider:

Host gitserver
Hostname git.eclipse.org
Port 29418
User ...
PKCS11Provider /opt/local/lib/softhsm/libsofthsm2.so

# Fetch from your git server! When asked for the PIN, enter 1234.
