]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Added self-test for PKCS #8 key conversion and reading
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 3 Apr 2014 18:47:39 +0000 (20:47 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 3 Apr 2014 18:48:24 +0000 (20:48 +0200)
14 files changed:
configure.ac
tests/Makefile.am
tests/key-tests/Makefile.am [moved from tests/key-id/Makefile.am with 89% similarity]
tests/key-tests/README [moved from tests/key-id/README with 100% similarity]
tests/key-tests/ca-gnutls-keyid.pem [moved from tests/key-id/ca-gnutls-keyid.pem with 100% similarity]
tests/key-tests/ca-no-keyid.pem [moved from tests/key-id/ca-no-keyid.pem with 100% similarity]
tests/key-tests/ca-weird-keyid.pem [moved from tests/key-id/ca-weird-keyid.pem with 100% similarity]
tests/key-tests/key-ca-1234.p8 [new file with mode: 0644]
tests/key-tests/key-ca-empty.p8 [new file with mode: 0644]
tests/key-tests/key-ca-null.p8 [new file with mode: 0644]
tests/key-tests/key-ca.pem [moved from tests/key-id/key-ca.pem with 100% similarity]
tests/key-tests/key-id [moved from tests/key-id/key-id with 100% similarity]
tests/key-tests/key-user.pem [moved from tests/key-id/key-user.pem with 100% similarity]
tests/key-tests/pkcs8 [new file with mode: 0755]

index e3bb3c900f9250afb614f8ea471e67df8550b294..daa9bd9c6a1f72aa2a8febf9eef47f8a5d860fe3 100644 (file)
@@ -742,7 +742,7 @@ AC_CONFIG_FILES([
   tests/dtls/Makefile
   tests/srp/Makefile
   tests/ecdsa/Makefile
-  tests/key-id/Makefile
+  tests/key-tests/Makefile
   tests/openpgp-certs/Makefile
   tests/pkcs1-padding/Makefile
   tests/pkcs12-decode/Makefile
index 04bf44770f38b0c3b7e67a1066a65e11ab2f5b22..2bb033156f5d098bb321907129a820bb3c2a8cba 100644 (file)
@@ -20,7 +20,7 @@
 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 SUBDIRS = . rsa-md5-collision pkcs1-padding pkcs8-decode pkcs12-decode \
-       userid cert-tests key-id sha2 safe-renegotiation dsa scripts ecdsa \
+       userid cert-tests key-tests sha2 safe-renegotiation dsa scripts ecdsa \
        slow dtls srp
 
 if ENABLE_OPENPGP
similarity index 89%
rename from tests/key-id/Makefile.am
rename to tests/key-tests/Makefile.am
index 8f20670b4e99f3a53d87524e5d167d0d611c30ce..ec0962cc2ca8ca8a7fe5b2dd9711aa958c526189 100644 (file)
 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 EXTRA_DIST = README key-ca.pem key-user.pem \
-       ca-gnutls-keyid.pem ca-no-keyid.pem ca-weird-keyid.pem
+       ca-gnutls-keyid.pem ca-no-keyid.pem ca-weird-keyid.pem \
+       key-ca-1234.p8 key-ca-empty.p8 key-ca-null.p8 
 
 dist_check_SCRIPTS = key-id
 
-TESTS = key-id
+TESTS = key-id pkcs8
 
 TESTS_ENVIRONMENT = EXEEXT=$(EXEEXT) \
        LC_ALL="C"                                              \
similarity index 100%
rename from tests/key-id/README
rename to tests/key-tests/README
diff --git a/tests/key-tests/key-ca-1234.p8 b/tests/key-tests/key-ca-1234.p8
new file mode 100644 (file)
index 0000000..dc6b1da
--- /dev/null
@@ -0,0 +1,10 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBfDAcBgoqhkiG9w0BDAEBMA4ECPvbksad11k/AgIBYASCAVqpBTCoK88VT4i2
+SP14VJrMGLz/QfnwH0MYpfPqCfYKy7GF7mF0LOV4KIG98J0l14R0sgS7666CAxvV
+ByvdGafE77C2NdxoIzVwdC+wXISj8weztvOu8rkHizzouw0UYeoZgvcRg1TO1EUq
+CnFRf4Ksmo47n6Pkz0OsyNFqXZEgC0E5ymu8frQtTlV30UPgzSMiPbP1aK45H7uc
+7ccpXL+bZ1ycYyyVv1WLxHl8G65CUtEcDMMGSnSbSkId4EE2Obmwhy00FfvS4w8o
+BugeBJhFpF8TnyyChoBDzXKerpiY934zNhUuk3B3Ayz2JHLJ6tSCwvdMEKaLDLl5
+4iLxuVNPpavBlIvsq9zHELfVjuYV4ZPEv2eHzEzgyUgtGRdmuL1TvsM3kOG4Beo3
+/9MAiJDmvY3CuzkqfFqdeJd6VzO3Z66Cqydvy3NnlmfpQarE2+6qi7CcQ5tvhW/I
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/key-tests/key-ca-empty.p8 b/tests/key-tests/key-ca-empty.p8
new file mode 100644 (file)
index 0000000..f86433f
--- /dev/null
@@ -0,0 +1,10 @@
+-----BEGIN PRIVATE KEY-----
+MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAxpQGKKdRJDmxWgFU
+m1DUFwxN36xCAAflcjDciC2CFoDaI0eoRnzIiE8PatK0hpfblIeFNS9R5xwzfmsc
+AAcbuwIDAQABAkA/9SUWqu0jccGBb7REYgAtfDUIuX54bBKmeL5Ozfl8LWoRgKyN
+LADN425xXm6tedNOaxugc0iKDngyfBsvVKdhAiEAy12kK1sWKVx2J1gF6AJrcAyu
+TFB82yLyTV+6FhcRhmUCIQD5+SyPI0fK26dGOfBboQhE0JZ+LKd89aiJmFtg4Kpn
+nwIhAKQL+5xFs9DVlzIRnWIUYZpXgFprKuySeibUK4YaQbbJAiEAqdMq/qPNZngM
+EJ3UOawRXg8H7viPYUnUEoa7rfl0S6kCIQC2sU2pHtU6b2S36aNyx6dTMldpqsWd
+GiD8T2oCOC5T9Q==
+-----END PRIVATE KEY-----
diff --git a/tests/key-tests/key-ca-null.p8 b/tests/key-tests/key-ca-null.p8
new file mode 100644 (file)
index 0000000..e58483e
--- /dev/null
@@ -0,0 +1,10 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBfDAcBgoqhkiG9w0BDAEBMA4ECOxO+XewS2/+AgIBBQSCAVqE1UFN8VmjMRbS
+BNL/J+bUCtOy/4i14m5MBzCTlPqx/Fs2ecD1VoaLJof0qO/v6YBhGEJeTi2v9Xld
+5mXzUBjCKC7ETdfWkUhzdX2rGc1pe9sMMpNFD3UK92QG5KUBFZ32MBdBmb/RGmNW
+Z3zM6JEZwkTP9drrZRyQSsCTkjRcRODsv6sS+ftWljDteeQaWFDQhxz+kKN7BDpa
+jxYLBoM330OB8wwa4NxPNa9GhtASpxgHuE0crViXh3rR30VF5HNcyQwT3jZW69CB
+szFuV2n53WowjhgkUAXx+EQCxlTREoIX7FxZofl/IVtZNkfzXTZ9MT3yZxW1EDkO
+B2RhEDbEEv1A4k073xmmFZMEP0lDgy+ufLFfDjJZoacq1lcWpySQBbIDCta3s1Tz
+GbPRkJGGAIVa8O+T6O++rcI7o/kRZMr9B3/hvOemFcWxx0RZzMP870x83xLBmcyM
+-----END ENCRYPTED PRIVATE KEY-----
similarity index 100%
rename from tests/key-id/key-id
rename to tests/key-tests/key-id
diff --git a/tests/key-tests/pkcs8 b/tests/key-tests/pkcs8
new file mode 100755 (executable)
index 0000000..05f82c7
--- /dev/null
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+# Copyright (C) 2014 Nikos Mavrogiannopoulos
+#
+# This file is part of GnuTLS.
+#
+# GnuTLS is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GnuTLS is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GnuTLS; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+srcdir=${srcdir:-.}
+CERTTOOL=${CERTTOOL:-../../src/certtool$EXEEXT}
+GREP=${GREP:-grep}
+
+# check keys with password
+$CERTTOOL --to-p8 --load-privkey  $srcdir/key-ca.pem --password "1234" \
+    --outfile tmp-key-ca.p8 2>/dev/null
+
+$GREP "BEGIN ENCRYPTED PRIVATE KEY" tmp-key-ca.p8  >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in converting key to PKCS #8 with password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca.pem --password "1234" >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading PKCS #8 key with password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca-1234.p8 --password "1234" >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading saved PKCS #8 key with password"
+  exit $rc
+fi
+
+#keys encrypted with empty password
+$CERTTOOL --to-p8 --load-privkey  $srcdir/key-ca.pem --password "" \
+    --outfile tmp-key-ca.p8 2>/dev/null
+
+$GREP "BEGIN PRIVATE KEY" tmp-key-ca.p8  >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in converting key to PKCS #8 with empty password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca.pem --password "" >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading PKCS #8 key with empty password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca-empty.p8 --password "" >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading saved PKCS #8 key with empty password"
+  exit $rc
+fi
+
+#keys encrypted with null password
+$CERTTOOL --to-p8 --load-privkey  $srcdir/key-ca.pem --null-password \
+    --outfile tmp-key-ca.p8 2>/dev/null
+
+$GREP "BEGIN ENCRYPTED PRIVATE KEY" tmp-key-ca.p8 >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in converting key to PKCS #8 with null password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca.pem --null-password >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading PKCS #8 key with null password"
+  exit $rc
+fi
+
+$CERTTOOL -k --pkcs8 --infile $srcdir/key-ca-null.p8 --null-password >/dev/null 2>&1
+rc=$?
+# We're done.
+if test "$rc" != "0"; then
+  echo "Error in reading saved PKCS #8 key with null password"
+  exit $rc
+fi
+
+rm -f tmp-key-ca.p8
+
+exit 0