Skip to content

Commit bfbe258

Browse files
Merge pull request spacemonkeygo#17 from mendersoftware/engine_load_private_key_unit
Engine load private key unit
2 parents 3c0876f + 84e194b commit bfbe258

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

.gitlab-ci.yml

+18
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ test:unit:
3232

3333
# Install OpenSSL
3434
- apt-get update && apt-get install -yyq liblzma-dev libssl-dev
35+
# Install SoftHSM, OpenSC, GnuTLS
36+
- apt-get install -yyq softhsm2 opensc opensc-pkcs11 libengine-pkcs11-openssl gnutls-bin
37+
- mkdir -p /softhsm/tokens
38+
- echo "directories.tokendir = /softhsm/tokens" > /softhsm/softhsm2.conf
39+
- export SOFTHSM2_CONF=/softhsm/softhsm2.conf
40+
- softhsm2-util --init-token --free --label unittoken1 --pin 0001 --so-pin 0002 --slot 0
41+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so -l -k --key-type rsa:2048 --id 0003 --label unittestkey0 --pin 0001
42+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --show-info
43+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --list-slots
44+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --list-token-slots
45+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --list-mechanisms
46+
- pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --list-objects
47+
- p11tool --login --provider=/usr/lib/softhsm/libsofthsm2.so --set-pin=0001 --list-all
48+
- export TEST_KEY_URI=`p11tool --login --provider=/usr/lib/softhsm/libsofthsm2.so --set-pin=0001 --list-all 2>/dev/null | grep type=private | awk '{print($NF";pin-value=0001");}'`
49+
- echo using $TEST_KEY_URI;
50+
- echo -ne "[openssl_init]\nengines=engine_section\n\n[engine_section]\npkcs11 = pkcs11_section\n\n[pkcs11_section]\nengine_id = pkcs11\nMODULE_PATH = /usr/lib/softhsm/libsofthsm2.so\ninit = 0\n" >> /etc/ssl/openssl.cnf
51+
- openssl req -new -x509 -subj "/CN=MenderUnits" -engine pkcs11 -keyform engine -key "${TEST_KEY_URI}" -out cert.pem
3552

3653
script:
3754
# Test if code was formatted with 'go fmt'
@@ -48,6 +65,7 @@ test:unit:
4865
# Execute go test on every local subpackage (resolved as dependencies) and generate covreage report for each.
4966
# Test packages pararell (xargs -P)
5067
- sed -i -e 's/CipherString = DEFAULT@SECLEVEL=2/# CipherString = DEFAULT@SECLEVEL=2/' /etc/ssl/openssl.cnf
68+
- export TEST_KEY_URI=`p11tool --login --provider=/usr/lib/softhsm/libsofthsm2.so --set-pin=0001 --list-all 2>/dev/null | grep type=private | awk '{print($NF";pin-value=0001");}'`
5169
- go test -parallel 1 -count 1 -v -covermode=atomic -coverprofile=coverage.txt -coverpkg ./... ./... || exit $?
5270

5371
# Collect coverage reports

key_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"encoding/hex"
2424
pem_pkg "encoding/pem"
2525
"io/ioutil"
26+
"os"
2627
"testing"
2728
)
2829

@@ -471,3 +472,23 @@ func TestMarshalEd25519(t *testing.T) {
471472
t.Fatal(err)
472473
}
473474
}
475+
476+
func TestEngineLoadPrivateKey(t *testing.T) {
477+
keyURI := os.Getenv("TEST_KEY_URI")
478+
if len(keyURI) < 1 {
479+
t.Skip()
480+
}
481+
482+
e, err := EngineById("pkcs11")
483+
if err != nil {
484+
t.Fatal(err)
485+
}
486+
487+
clientPrivateKey, err := EngineLoadPrivateKey(e, keyURI)
488+
if err != nil {
489+
t.Fatal(err)
490+
}
491+
if clientPrivateKey == nil {
492+
t.Fatal(err)
493+
}
494+
}

0 commit comments

Comments
 (0)