diff options
| author | Michael Biebl <biebl@debian.org> | 2011-04-21 10:42:53 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2011-04-21 10:42:53 +0200 |
| commit | 8baa1aca8dfd35e3190d7d5655eb83b5b901e263 (patch) | |
| tree | a9ac1e67d0c22a48330c76f08fc5291f85307055 /libnm-util/tests | |
| parent | f75dd6fd1975146623052b843b182dc32c3fbe46 (diff) | |
Imported Upstream version 0.8.4.0 upstream/0.8.4.0
Diffstat (limited to 'libnm-util/tests')
| -rw-r--r-- | libnm-util/tests/Makefile.am | 52 | ||||
| -rw-r--r-- | libnm-util/tests/Makefile.in | 102 | ||||
| -rw-r--r-- | libnm-util/tests/certs/Makefile.in | 48 | ||||
| -rw-r--r-- | libnm-util/tests/test-crypto.c | 145 | ||||
| -rw-r--r-- | libnm-util/tests/test-general.c | 602 | ||||
| -rw-r--r-- | libnm-util/tests/test-secrets.c | 314 | ||||
| -rw-r--r-- | libnm-util/tests/test-setting-8021x.c | 356 |
7 files changed, 379 insertions, 1240 deletions
diff --git a/libnm-util/tests/Makefile.am b/libnm-util/tests/Makefile.am index 4e2a8a78..a0b4779c 100644 --- a/libnm-util/tests/Makefile.am +++ b/libnm-util/tests/Makefile.am @@ -79,49 +79,61 @@ check-local: test-settings-defaults test-crypto test-secrets $(abs_builddir)/test-general # Private key and CA certificate in the same file (PEM) - $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test_key_and_cert.pem "test" + $(abs_builddir)/test-setting-8021x \ + $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem \ + "test" \ + $(top_srcdir)/libnm-util/tests/certs/test-key-only-decrypted.der # Private key by itself (PEM) - $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" + $(abs_builddir)/test-setting-8021x \ + $(top_srcdir)/libnm-util/tests/certs/test-key-only.pem \ + "test" \ + $(top_srcdir)/libnm-util/tests/certs/test-key-only-decrypted.der # Private key and CA certificate in the same file (pkcs12) - $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" + $(abs_builddir)/test-setting-8021x \ + $(top_srcdir)/libnm-util/tests/certs/test-cert.p12 \ + "test" # Normal CA certificate - $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.pem + $(abs_builddir)/test-crypto --cert \ + $(top_srcdir)/libnm-util/tests/certs/test_ca_cert.pem # Another CA certificate - $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_ca_cert.pem + $(abs_builddir)/test-crypto --cert \ + $(top_srcdir)/libnm-util/tests/certs/test2_ca_cert.pem # CA certificate without an ending newline - $(abs_builddir)/test-crypto --cert $(srcdir)/certs/ca-no-ending-newline.pem + $(abs_builddir)/test-crypto --cert \ + $(top_srcdir)/libnm-util/tests/certs/ca-no-ending-newline.pem # Combined user cert and private key - $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_key_and_cert.pem + $(abs_builddir)/test-crypto --cert \ + $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem # Another combined user cert and private key - $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_key_and_cert.pem + $(abs_builddir)/test-crypto --cert \ + $(top_srcdir)/libnm-util/tests/certs/test2_key_and_cert.pem # Private key with 8 bytes of tail padding $(abs_builddir)/test-crypto --key \ - $(srcdir)/certs/test_key_and_cert.pem \ - "test" \ - $(srcdir)/certs/test-key-only-decrypted.der - -# Private key only (not combined with a cert) - $(abs_builddir)/test-crypto --key \ - $(srcdir)/certs/test-key-only.pem \ - "test" \ - $(srcdir)/certs/test-key-only-decrypted.der + $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem \ + "test" # Private key with 6 bytes of tail padding - $(abs_builddir)/test-crypto --key $(srcdir)/certs/test2_key_and_cert.pem "12345testing" + $(abs_builddir)/test-crypto --key \ + $(top_srcdir)/libnm-util/tests/certs/test2_key_and_cert.pem \ + "12345testing" # PKCS#12 file - $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test-cert.p12 "test" + $(abs_builddir)/test-crypto --p12 \ + $(top_srcdir)/libnm-util/tests/certs/test-cert.p12 \ + "test" # Another PKCS#12 file - $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" + $(abs_builddir)/test-crypto --p12 \ + $(top_srcdir)/libnm-util/tests/certs/test2-cert.p12 \ + "12345testing" endif diff --git a/libnm-util/tests/Makefile.in b/libnm-util/tests/Makefile.in index 42c80c65..ab69399a 100644 --- a/libnm-util/tests/Makefile.in +++ b/libnm-util/tests/Makefile.in @@ -41,16 +41,11 @@ subdir = libnm-util/tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -88,7 +83,7 @@ test_settings_defaults_DEPENDENCIES = \ $(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -161,6 +156,7 @@ am__relativize = \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -169,6 +165,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @@ -185,7 +183,6 @@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCLIENT_VERSION = @DHCLIENT_VERSION@ DHCPCD_PATH = @DHCPCD_PATH@ DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ -DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -194,7 +191,6 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -203,8 +199,8 @@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GMODULE_CFLAGS = @GMODULE_CFLAGS@ GMODULE_LIBS = @GMODULE_LIBS@ +GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ @@ -219,23 +215,13 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ IPTABLES_PATH = @IPTABLES_PATH@ -IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@ -IWMX_SDK_LIBS = @IWMX_SDK_LIBS@ KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ @@ -243,8 +229,6 @@ LIBDL = @LIBDL@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ LIBM = @LIBM@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ @@ -253,15 +237,13 @@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ +MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ @@ -287,9 +269,12 @@ PKGCONFIG_PATH = @PKGCONFIG_PATH@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ POLKIT_CFLAGS = @POLKIT_CFLAGS@ POLKIT_LIBS = @POLKIT_LIBS@ POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ RANLIB = @RANLIB@ RESOLVCONF_PATH = @RESOLVCONF_PATH@ @@ -304,13 +289,10 @@ UUID_CFLAGS = @UUID_CFLAGS@ UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ @@ -929,49 +911,61 @@ uninstall-am: @WITH_TESTS_TRUE@ $(abs_builddir)/test-general # Private key and CA certificate in the same file (PEM) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test_key_and_cert.pem "test" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem \ +@WITH_TESTS_TRUE@ "test" \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test-key-only-decrypted.der # Private key by itself (PEM) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test-key-only.pem \ +@WITH_TESTS_TRUE@ "test" \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test-key-only-decrypted.der # Private key and CA certificate in the same file (pkcs12) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test-cert.p12 \ +@WITH_TESTS_TRUE@ "test" # Normal CA certificate -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_ca_cert.pem +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test_ca_cert.pem # Another CA certificate -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_ca_cert.pem +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test2_ca_cert.pem # CA certificate without an ending newline -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/ca-no-ending-newline.pem +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/ca-no-ending-newline.pem # Combined user cert and private key -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test_key_and_cert.pem +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem # Another combined user cert and private key -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert $(srcdir)/certs/test2_key_and_cert.pem +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --cert \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test2_key_and_cert.pem # Private key with 8 bytes of tail padding @WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test_key_and_cert.pem \ -@WITH_TESTS_TRUE@ "test" \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der - -# Private key only (not combined with a cert) -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only.pem \ -@WITH_TESTS_TRUE@ "test" \ -@WITH_TESTS_TRUE@ $(srcdir)/certs/test-key-only-decrypted.der +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test_key_and_cert.pem \ +@WITH_TESTS_TRUE@ "test" # Private key with 6 bytes of tail padding -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key $(srcdir)/certs/test2_key_and_cert.pem "12345testing" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --key \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test2_key_and_cert.pem \ +@WITH_TESTS_TRUE@ "12345testing" # PKCS#12 file -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test-cert.p12 "test" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test-cert.p12 \ +@WITH_TESTS_TRUE@ "test" # Another PKCS#12 file -@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 \ +@WITH_TESTS_TRUE@ $(top_srcdir)/libnm-util/tests/certs/test2-cert.p12 \ +@WITH_TESTS_TRUE@ "12345testing" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libnm-util/tests/certs/Makefile.in b/libnm-util/tests/certs/Makefile.in index fe5156ce..0821f71d 100644 --- a/libnm-util/tests/certs/Makefile.in +++ b/libnm-util/tests/certs/Makefile.in @@ -46,16 +46,11 @@ subdir = libnm-util/tests/certs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -72,6 +67,7 @@ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -80,6 +76,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @@ -96,7 +94,6 @@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCLIENT_VERSION = @DHCLIENT_VERSION@ DHCPCD_PATH = @DHCPCD_PATH@ DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ -DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -105,7 +102,6 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -114,8 +110,8 @@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GMODULE_CFLAGS = @GMODULE_CFLAGS@ GMODULE_LIBS = @GMODULE_LIBS@ +GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ @@ -130,23 +126,13 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ IPTABLES_PATH = @IPTABLES_PATH@ -IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@ -IWMX_SDK_LIBS = @IWMX_SDK_LIBS@ KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ @@ -154,8 +140,6 @@ LIBDL = @LIBDL@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ LIBM = @LIBM@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ @@ -164,15 +148,13 @@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ +MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ @@ -198,9 +180,12 @@ PKGCONFIG_PATH = @PKGCONFIG_PATH@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ POLKIT_CFLAGS = @POLKIT_CFLAGS@ POLKIT_LIBS = @POLKIT_LIBS@ POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@ RANLIB = @RANLIB@ RESOLVCONF_PATH = @RESOLVCONF_PATH@ @@ -215,13 +200,10 @@ UUID_CFLAGS = @UUID_CFLAGS@ UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ diff --git a/libnm-util/tests/test-crypto.c b/libnm-util/tests/test-crypto.c index 6cfb6ac2..a5466bc8 100644 --- a/libnm-util/tests/test-crypto.c +++ b/libnm-util/tests/test-crypto.c @@ -18,7 +18,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * (C) Copyright 2007 - 2011 Red Hat, Inc. + * (C) Copyright 2007 - 2009 Red Hat, Inc. */ #include <glib.h> @@ -113,46 +113,28 @@ test_load_cert (const char *path, const char *desc) g_byte_array_free (array, TRUE); } -static GByteArray * -file_to_byte_array (const char *filename) -{ - char *contents; - GByteArray *array = NULL; - gsize length = 0; - - if (g_file_get_contents (filename, &contents, &length, NULL)) { - array = g_byte_array_sized_new (length); - if (array) { - g_byte_array_append (array, (guint8 *) contents, length); - g_assert (array->len == length); - } - g_free (contents); - } - return array; -} - static void test_load_private_key (const char *path, const char *password, - const char *decrypted_path, gboolean expect_fail, const char *desc) { NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN; - GByteArray *array, *decrypted; + NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; + GByteArray *array; GError *error = NULL; - array = crypto_decrypt_private_key (path, password, &key_type, &error); + array = crypto_get_private_key (path, password, &key_type, &format, &error); if (expect_fail) { ASSERT (array == NULL, desc, "unexpected success reading private key file '%s' with " "invalid password", path); - ASSERT (key_type != NM_CRYPTO_KEY_TYPE_UNKNOWN, desc, - "unexpected failure determining private key file '%s' " - "type with invalid password (expected %d, got %d)", - path, NM_CRYPTO_KEY_TYPE_UNKNOWN, key_type); + ASSERT (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN, desc, + "unexpected success determining private key file '%s' " + "format with invalid password (expected %d, got %d)", + path, NM_CRYPTO_FILE_FORMAT_UNKNOWN, format); return; } @@ -160,28 +142,13 @@ test_load_private_key (const char *path, "couldn't read private key file '%s': %d %s", path, error->code, error->message); + ASSERT (format == NM_CRYPTO_FILE_FORMAT_RAW_KEY, desc, + "%s: unexpected private key file format (expected %d, got %d)", + path, NM_CRYPTO_FILE_FORMAT_RAW_KEY, format); + ASSERT (key_type == NM_CRYPTO_KEY_TYPE_RSA, desc, "%s: unexpected private key type (expected %d, got %d)", - path, NM_CRYPTO_KEY_TYPE_RSA, key_type); - - if (decrypted_path) { - /* Compare the crypto decrypted key against a known-good decryption */ - decrypted = file_to_byte_array (decrypted_path); - ASSERT (decrypted != NULL, desc, - "couldn't read decrypted private key file '%s': %d %s", - decrypted_path, error->code, error->message); - - ASSERT (decrypted->len > 0, desc, "decrypted key file invalid (size 0)"); - - ASSERT (decrypted->len == array->len, - desc, "decrypted key file (%d) and decrypted key data (%d) lengths don't match", - decrypted->len, array->len); - - ASSERT (memcmp (decrypted->data, array->data, array->len) == 0, - desc, "decrypted key file and decrypted key data don't match"); - - g_byte_array_free (decrypted, TRUE); - } + path, NM_CRYPTO_KEY_TYPE_RSA, format); g_byte_array_free (array, TRUE); } @@ -192,35 +159,46 @@ test_load_pkcs12 (const char *path, gboolean expect_fail, const char *desc) { + NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN; NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; + GByteArray *array; GError *error = NULL; - format = crypto_verify_private_key (path, password, &error); + array = crypto_get_private_key (path, password, &key_type, &format, &error); if (expect_fail) { - ASSERT (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN, desc, + ASSERT (array == NULL, desc, "unexpected success reading PKCS#12 private key file " "'%s' with invalid password", path); - } else { - ASSERT (format == NM_CRYPTO_FILE_FORMAT_PKCS12, desc, - "%s: unexpected PKCS#12 private key file format (expected %d, got " - "%d): %d %s", - path, NM_CRYPTO_FILE_FORMAT_PKCS12, format, error->code, error->message); + + /* PKCS#12 file format can be determined even if the password + * is wrong; check that. + */ + ASSERT (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN, desc, + "unexpected success determining PKCS#12 private key " + "'%s' file format with invalid password (expected %d, " + "got %d)", + path, NM_CRYPTO_FILE_FORMAT_UNKNOWN, format); + ASSERT (key_type == NM_CRYPTO_KEY_TYPE_UNKNOWN, desc, + "unexpected success determining PKCS#12 private key " + "'%s' type with invalid password (expected %d, got %d)", + path, NM_CRYPTO_KEY_TYPE_UNKNOWN, key_type); + return; } -} -static void -test_load_pkcs12_no_password (const char *path, const char *desc) -{ - NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; - GError *error = NULL; + ASSERT (array != NULL, desc, + "couldn't read PKCS#12 private key file '%s': %d %s", + path, error->code, error->message); - /* We should still get a valid returned crypto file format */ - format = crypto_verify_private_key (path, NULL, &error); ASSERT (format == NM_CRYPTO_FILE_FORMAT_PKCS12, desc, - "%s: unexpected PKCS#12 private key file format (expected %d, got " - "%d): %d %s", - path, NM_CRYPTO_FILE_FORMAT_PKCS12, format, error->code, error->message); + "%s: unexpected PKCS#12 private key file format (expected %d, got %d)", + path, NM_CRYPTO_FILE_FORMAT_RAW_KEY, format); + + ASSERT (key_type == NM_CRYPTO_KEY_TYPE_ENCRYPTED, desc, + "%s: unexpected PKCS#12 private key type (expected %d, got %d)", + path, NM_CRYPTO_KEY_TYPE_ENCRYPTED, format); + + g_byte_array_free (array, TRUE); } static void @@ -233,9 +211,10 @@ test_is_pkcs12 (const char *path, gboolean expect_fail, const char *desc) ASSERT (is_pkcs12 == FALSE, desc, "unexpected success reading non-PKCS#12 file '%s'", path); - } else { - ASSERT (is_pkcs12 == TRUE, desc, "couldn't read PKCS#12 file '%s'", path); + return; } + + ASSERT (is_pkcs12 == TRUE, desc, "couldn't read PKCS#12 file '%s'", path); } static void @@ -244,17 +223,23 @@ test_encrypt_private_key (const char *path, const char *desc) { NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN; + NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; GByteArray *array, *encrypted, *re_decrypted; GError *error = NULL; - array = crypto_decrypt_private_key (path, password, &key_type, &error); + array = crypto_get_private_key (path, password, &key_type, &format, &error); + ASSERT (array != NULL, desc, "couldn't read private key file '%s': %d %s", path, error->code, error->message); + ASSERT (format == NM_CRYPTO_FILE_FORMAT_RAW_KEY, desc, + "%s: unexpected private key file format (expected %d, got %d)", + path, NM_CRYPTO_FILE_FORMAT_RAW_KEY, format); + ASSERT (key_type == NM_CRYPTO_KEY_TYPE_RSA, desc, "%s: unexpected private key type (expected %d, got %d)", - path, NM_CRYPTO_KEY_TYPE_RSA, key_type); + path, NM_CRYPTO_KEY_TYPE_RSA, format); /* Now re-encrypt the private key */ encrypted = nm_utils_rsa_key_encrypt (array, password, NULL, &error); @@ -264,14 +249,20 @@ test_encrypt_private_key (const char *path, /* Then re-decrypt the private key */ key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN; - re_decrypted = crypto_decrypt_private_key_data (encrypted, password, &key_type, &error); + format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; + re_decrypted = crypto_get_private_key_data (encrypted, password, &key_type, &format, &error); + ASSERT (re_decrypted != NULL, desc, "couldn't read private key file '%s': %d %s", path, error->code, error->message); + ASSERT (format == NM_CRYPTO_FILE_FORMAT_RAW_KEY, desc, + "%s: unexpected private key file format (expected %d, got %d)", + path, NM_CRYPTO_FILE_FORMAT_RAW_KEY, format); + ASSERT (key_type == NM_CRYPTO_KEY_TYPE_RSA, desc, "%s: unexpected private key type (expected %d, got %d)", - path, NM_CRYPTO_KEY_TYPE_RSA, key_type); + path, NM_CRYPTO_KEY_TYPE_RSA, format); /* Compare the original decrypted key with the re-decrypted key */ ASSERT (array->len == re_decrypted->len, desc, @@ -301,21 +292,17 @@ int main (int argc, char **argv) if (!strcmp (argv[1], "--cert")) test_load_cert (argv[2], "cert"); else if (!strcmp (argv[1], "--key")) { - const char *decrypted_path = (argc == 5) ? argv[4] : NULL; - - ASSERT (argc == 4 || argc == 5, "test-crypto", - "wrong number of arguments (--key <key file> <password> [<decrypted key file>])"); + ASSERT (argc == 4, "test-crypto", + "wrong number of arguments (--key <key file> <password>)"); - test_is_pkcs12 (argv[2], TRUE, "not-pkcs12"); - test_load_private_key (argv[2], argv[3], decrypted_path, FALSE, "private-key"); - test_load_private_key (argv[2], "blahblahblah", NULL, TRUE, "private-key-bad-password"); - test_load_private_key (argv[2], NULL, NULL, TRUE, "private-key-no-password"); + test_load_private_key (argv[2], argv[3], FALSE, "private-key"); + test_load_private_key (argv[2], "blahblahblah", TRUE, "private-key-bad-password"); test_encrypt_private_key (argv[2], argv[3], "private-key-rencrypt"); + test_is_pkcs12 (argv[2], TRUE, "is-pkcs12-not-pkcs12"); } else if (!strcmp (argv[1], "--p12")) { test_is_pkcs12 (argv[2], FALSE, "is-pkcs12"); test_load_pkcs12 (argv[2], argv[3], FALSE, "pkcs12-private-key"); test_load_pkcs12 (argv[2], "blahblahblah", TRUE, "pkcs12-private-key-bad-password"); - test_load_pkcs12_no_password (argv[2], "pkcs12-private-key-no-password"); } else { ASSERT (argc > 2, "test-crypto", "unknown test type (not --cert, --key, or --p12)"); } diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c index 1ce80622..c7421faf 100644 --- a/libnm-util/tests/test-general.c +++ b/libnm-util/tests/test-general.c @@ -15,7 +15,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2008 - 2011 Red Hat, Inc. + * Copyright (C) 2008 - 2010 Red Hat, Inc. * */ @@ -29,13 +29,10 @@ #include "nm-setting-connection.h" #include "nm-setting-vpn.h" #include "nm-setting-gsm.h" -#include "nm-setting-cdma.h" #include "nm-setting-wired.h" -#include "nm-setting-wireless-security.h" #include "nm-setting-ip6-config.h" #include "nm-setting-ip4-config.h" #include "nm-setting-pppoe.h" -#include "nm-setting-serial.h" #include "nm-dbus-glib-types.h" static void @@ -136,65 +133,6 @@ test_setting_vpn_items (void) g_object_unref (s_vpn); } -static void -test_setting_vpn_update_secrets (void) -{ - NMConnection *connection; - NMSettingVPN *s_vpn; - GHashTable *settings, *vpn, *secrets; - GValue val = { 0 }; - gboolean success; - GError *error = NULL; - const char *tmp; - const char *key1 = "foobar"; - const char *key2 = "blahblah"; - const char *val1 = "value1"; - const char *val2 = "value2"; - - connection = nm_connection_new (); - ASSERT (connection != NULL, - "vpn-update-secrets", - "error creating connection"); - - s_vpn = (NMSettingVPN *) nm_setting_vpn_new (); - ASSERT (s_vpn != NULL, - "vpn-update-secrets", - "error creating vpn setting"); - nm_connection_add_setting (connection, NM_SETTING (s_vpn)); - - settings = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_hash_table_destroy); - vpn = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_value_unset); - g_hash_table_insert (settings, NM_SETTING_VPN_SETTING_NAME, vpn); - - secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); - g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING); - g_value_take_boxed (&val, secrets); - g_hash_table_insert (vpn, NM_SETTING_VPN_SECRETS, &val); - - /* Add some secrets */ - g_hash_table_insert (secrets, (char *) key1, (char *) val1); - g_hash_table_insert (secrets, (char *) key2, (char *) val2); - - success = nm_connection_update_secrets (connection, NM_SETTING_VPN_SETTING_NAME, settings, &error); - ASSERT (success == TRUE, - "vpn-update-secrets", "failed to update VPN secrets: %s", error->message); - - /* Read the secrets back out */ - tmp = nm_setting_vpn_get_secret (s_vpn, key1); - ASSERT (tmp != NULL, - "vpn-update-secrets", "unexpected failure getting key #1"); - ASSERT (strcmp (tmp, val1) == 0, - "vpn-update-secrets", "unexpected key #1 value"); - - tmp = nm_setting_vpn_get_secret (s_vpn, key2); - ASSERT (tmp != NULL, - "vpn-update-secrets", "unexpected failure getting key #2"); - ASSERT (strcmp (tmp, val2) == 0, - "vpn-update-secrets", "unexpected key #2 value"); - - g_object_unref (connection); -} - #define OLD_DBUS_TYPE_G_IP6_ADDRESS (dbus_g_type_get_struct ("GValueArray", DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_UINT, G_TYPE_INVALID)) #define OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS (dbus_g_type_get_collection ("GPtrArray", OLD_DBUS_TYPE_G_IP6_ADDRESS)) @@ -354,319 +292,6 @@ test_setting_gsm_apn_bad_chars (void) "gsm-apn-bad-chars", "unexpectedly valid GSM setting"); } -static NMSettingWirelessSecurity * -make_test_wsec_setting (const char *detail) -{ - NMSettingWirelessSecurity *s_wsec; - - s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - ASSERT (s_wsec != NULL, detail, "error creating setting"); - - g_object_set (s_wsec, - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", - NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "foobarbaz", - NM_SETTING_WIRELESS_SECURITY_PSK, "random psk", - NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, "aaaaaaaaaa", - NULL); - - return s_wsec; -} - -static void -test_setting_to_hash_all (void) -{ - NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; - - s_wsec = make_test_wsec_setting ("setting-to-hash-all"); - - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ALL); - - /* Make sure all keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), - "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), - "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK), - "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), - "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - - g_hash_table_destroy (hash); - g_object_unref (s_wsec); -} - -static void -test_setting_to_hash_no_secrets (void) -{ - NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; - - s_wsec = make_test_wsec_setting ("setting-to-hash-no-secrets"); - - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_NO_SECRETS); - - /* Make sure non-secret keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), - "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), - "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); - - /* Make sure secrets are not there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK) == NULL, - "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0) == NULL, - "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - - g_hash_table_destroy (hash); - g_object_unref (s_wsec); -} - -static void -test_setting_to_hash_only_secrets (void) -{ - NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; - - s_wsec = make_test_wsec_setting ("setting-to-hash-only-secrets"); - - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ONLY_SECRETS); - - /* Make sure non-secret keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT) == NULL, - "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME) == NULL, - "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); - - /* Make sure secrets are not there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK), - "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), - "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - - g_hash_table_destroy (hash); - g_object_unref (s_wsec); -} - -static void -test_connection_to_hash_setting_name (void) -{ - NMConnection *connection; - NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; - - connection = nm_connection_new (); - s_wsec = make_test_wsec_setting ("connection-to-hash-setting-name"); - nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - - hash = nm_connection_to_hash (connection, NM_SETTING_HASH_FLAG_ALL); - - /* Make sure the keys of the first level hash are setting names, not - * the GType name of the setting objects. - */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) != NULL, - "connection-to-hash-setting-name", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); - - g_hash_table_destroy (hash); - g_object_unref (connection); -} - -static void -check_permission (NMSettingConnection *s_con, - guint32 idx, - const char *expected_uname, - const char *tag) -{ - gboolean success; - const char *ptype = NULL, *pitem = NULL, *detail = NULL; - - success = nm_setting_connection_get_permission (s_con, 0, &ptype, &pitem, &detail); - ASSERT (success == TRUE, tag, "unexpected failure getting added permission"); - - /* Permission type */ - ASSERT (ptype != NULL, tag, "unexpected failure getting permission type"); - ASSERT (strcmp (ptype, "user") == 0, tag, "retrieved unexpected permission type"); - - /* Permission item */ - ASSERT (pitem != NULL, tag, "unexpected failure getting permission item"); - ASSERT (strcmp (pitem, expected_uname) == 0, tag, "retrieved unexpected permission item"); - - ASSERT (detail == NULL, tag, "unexpected success getting permission detail"); -} - -#define TEST_UNAME "asdfasfasdf" - -static void -test_setting_connection_permissions_helpers (void) -{ - NMSettingConnection *s_con; - gboolean success; - char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 }; - GSList *list = NULL; - const char *expected_perm = "user:" TEST_UNAME ":"; - - s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); - - /* Ensure a bad [type] is rejected */ - success = nm_setting_connection_add_permission (s_con, "foobar", "blah", NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission type #1"); - - /* Ensure a bad [type] is rejected */ - success = nm_setting_connection_add_permission (s_con, NULL, "blah", NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission type #2"); - - /* Ensure a bad [item] is rejected */ - success = nm_setting_connection_add_permission (s_con, "user", NULL, NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission item #1"); - - /* Ensure a bad [item] is rejected */ - success = nm_setting_connection_add_permission (s_con, "user", "", NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission item #2"); - - /* Ensure an [item] with ':' is rejected */ - success = nm_setting_connection_add_permission (s_con, "user", "ad:asdf", NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission item #3"); - - /* Ensure a non-UTF-8 [item] is rejected */ - success = nm_setting_connection_add_permission (s_con, "user", buf, NULL); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad permission item #4"); - - /* Ensure a non-NULL [detail] is rejected */ - success = nm_setting_connection_add_permission (s_con, "user", "dafasdf", "asdf"); - ASSERT (success == FALSE, - "setting-connection-permissions-helpers", "unexpected success adding bad detail"); - - /* Ensure a valid call results in success */ - success = nm_setting_connection_add_permission (s_con, "user", TEST_UNAME, NULL); - ASSERT (success == TRUE, - "setting-connection-permissions-helpers", "unexpected failure adding valid user permisson"); - - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1, - "setting-connection-permissions-helpers", "unexpected failure getting number of permissions"); - - check_permission (s_con, 0, TEST_UNAME, "setting-connection-permissions-helpers"); - - /* Check the actual GObject property just to be paranoid */ - g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &list, NULL); - ASSERT (list != NULL, - "setting-connection-permissions-helpers", "unexpected failure getting permissions list"); - ASSERT (g_slist_length (list) == 1, - "setting-connection-permissions-helpers", "unexpected failure getting number of permissions in list"); - ASSERT (strcmp (list->data, expected_perm) == 0, - "setting-connection-permissions-helpers", "unexpected permission property data"); - - /* Now remove that permission and ensure we have 0 permissions */ - nm_setting_connection_remove_permission (s_con, 0); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-helpers", "unexpected failure removing permission"); - - g_object_unref (s_con); -} - -static void -add_permission_property (NMSettingConnection *s_con, - const char *ptype, - const char *pitem, - int pitem_len, - const char *detail) -{ - GString *str; - GSList *list = NULL; - - str = g_string_sized_new (50); - if (ptype) - g_string_append (str, ptype); - g_string_append_c (str, ':'); - - if (pitem) { - if (pitem_len >= 0) - g_string_append_len (str, pitem, pitem_len); - else - g_string_append (str, pitem); - } - - g_string_append_c (str, ':'); - - if (detail) - g_string_append (str, detail); - - list = g_slist_append (list, str->str); - g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, list, NULL); - - g_string_free (str, TRUE); - g_slist_free (list); -} - -static void -test_setting_connection_permissions_property (void) -{ - NMSettingConnection *s_con; - gboolean success; - char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 }; - - s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); - - /* Ensure a bad [type] is rejected */ - add_permission_property (s_con, "foobar", "blah", -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission type #1"); - - /* Ensure a bad [type] is rejected */ - add_permission_property (s_con, NULL, "blah", -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission type #2"); - - /* Ensure a bad [item] is rejected */ - add_permission_property (s_con, "user", NULL, -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission item #1"); - - /* Ensure a bad [item] is rejected */ - add_permission_property (s_con, "user", "", -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission item #2"); - - /* Ensure an [item] with ':' in the middle is rejected */ - add_permission_property (s_con, "user", "ad:asdf", -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission item #3"); - - /* Ensure an [item] with ':' at the end is rejected */ - add_permission_property (s_con, "user", "adasdfaf:", -1, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission item #4"); - - /* Ensure a non-UTF-8 [item] is rejected */ - add_permission_property (s_con, "user", buf, (int) sizeof (buf), NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad permission item #5"); - - /* Ensure a non-NULL [detail] is rejected */ - add_permission_property (s_con, "user", "dafasdf", -1, "asdf"); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected success adding bad detail"); - - /* Ensure a valid call results in success */ - success = nm_setting_connection_add_permission (s_con, "user", TEST_UNAME, NULL); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1, - "setting-connection-permissions-property", "unexpected failure adding valid user permisson"); - - check_permission (s_con, 0, TEST_UNAME, "setting-connection-permissions-property"); - - /* Now remove that permission and ensure we have 0 permissions */ - nm_setting_connection_remove_permission (s_con, 0); - ASSERT (nm_setting_connection_get_num_permissions (s_con) == 0, - "setting-connection-permissions-property", "unexpected failure removing permission"); - - g_object_unref (s_con); -} - static NMConnection * new_test_connection (void) { @@ -760,7 +385,6 @@ test_connection_diff_a_only (void) { NM_SETTING_CONNECTION_TIMESTAMP, NM_SETTING_DIFF_RESULT_IN_A }, { NM_SETTING_CONNECTION_AUTOCONNECT, NM_SETTING_DIFF_RESULT_IN_A }, { NM_SETTING_CONNECTION_READ_ONLY, NM_SETTING_DIFF_RESULT_IN_A }, - { NM_SETTING_CONNECTION_PERMISSIONS, NM_SETTING_DIFF_RESULT_IN_A }, { NULL, NM_SETTING_DIFF_RESULT_UNKNOWN } } }, { NM_SETTING_WIRED_SETTING_NAME, { @@ -902,221 +526,6 @@ test_connection_diff_no_secrets (void) g_object_unref (b); } -static void -add_generic_settings (NMConnection *connection, const char *ctype) -{ - NMSetting *setting; - char *uuid; - - uuid = nm_utils_uuid_generate (); - - setting = nm_setting_connection_new (); - g_object_set (setting, - NM_SETTING_CONNECTION_ID, "asdfasdfadf", - NM_SETTING_CONNECTION_TYPE, ctype, - NM_SETTING_CONNECTION_UUID, uuid, - NULL); - nm_connection_add_setting (connection, setting); - - g_free (uuid); - - setting = nm_setting_ip4_config_new (); - g_object_set (setting, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); - nm_connection_add_setting (connection, setting); - - setting = nm_setting_ip6_config_new (); - g_object_set (setting, NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL); - nm_connection_add_setting (connection, setting); -} - -static void -test_connection_good_base_types (void) -{ - NMConnection *connection; - NMSetting *setting; - gboolean success; - GError *error = NULL; - GByteArray *array; - const guint8 bdaddr[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; - - /* Try a basic wired connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_WIRED_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); - - /* Try a wired PPPoE connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_PPPOE_SETTING_NAME); - setting = nm_setting_pppoe_new (); - g_object_set (setting, NM_SETTING_PPPOE_USERNAME, "bob smith", NULL); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); - - /* Wifi connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_WIRELESS_SETTING_NAME); - - setting = nm_setting_wireless_new (); - array = g_byte_array_new (); - g_byte_array_append (array, (const guint8 *) "1234567", 7); - g_object_set (setting, - NM_SETTING_WIRELESS_SSID, array, - NM_SETTING_WIRELESS_MODE, "infrastructure", - NULL); - g_byte_array_free (array, TRUE); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); - - /* Bluetooth connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_BLUETOOTH_SETTING_NAME); - - setting = nm_setting_bluetooth_new (); - array = g_byte_array_new (); - g_byte_array_append (array, bdaddr, sizeof (bdaddr)); - g_object_set (setting, - NM_SETTING_BLUETOOTH_BDADDR, array, - NM_SETTING_CONNECTION_TYPE, NM_SETTING_BLUETOOTH_TYPE_PANU, - NULL); - g_byte_array_free (array, TRUE); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); - - /* WiMAX connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_WIMAX_SETTING_NAME); - setting = nm_setting_wimax_new (); - g_object_set (setting, NM_SETTING_WIMAX_NETWORK_NAME, "CLEAR", NULL); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); - - /* GSM connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_GSM_SETTING_NAME); - - setting = nm_setting_gsm_new (); - g_object_set (setting, - NM_SETTING_GSM_NUMBER, "*99#", - NM_SETTING_GSM_APN, "metered.billing.sucks", - NULL); - nm_connection_add_setting (connection, setting); - - /* CDMA connection */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_CDMA_SETTING_NAME); - - setting = nm_setting_cdma_new (); - g_object_set (setting, - NM_SETTING_CDMA_NUMBER, "#777", - NM_SETTING_CDMA_USERNAME, "foobar@vzw.com", - NULL); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_no_error (error); - g_assert (success); - g_object_unref (connection); -} - -static void -test_connection_bad_base_types (void) -{ - NMConnection *connection; - NMSetting *setting; - gboolean success; - GError *error = NULL; - - /* Test various non-base connection types to make sure they are rejected; - * using a fake 'wired' connection so the rest of it verifies - */ - - /* Connection setting */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_CONNECTION_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID); - g_assert (success == FALSE); - g_object_unref (connection); - g_clear_error (&error); - - /* PPP setting */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_PPP_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - setting = nm_setting_ppp_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID); - g_assert (success == FALSE); - g_object_unref (connection); - g_clear_error (&error); - - /* Serial setting */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_SERIAL_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - setting = nm_setting_serial_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID); - g_assert (success == FALSE); - g_object_unref (connection); - g_clear_error (&error); - - /* IP4 setting */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_IP4_CONFIG_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID); - g_assert (success == FALSE); - g_object_unref (connection); - g_clear_error (&error); - - /* IP6 setting */ - connection = nm_connection_new (); - add_generic_settings (connection, NM_SETTING_IP6_CONFIG_SETTING_NAME); - setting = nm_setting_wired_new (); - nm_connection_add_setting (connection, setting); - - success = nm_connection_verify (connection, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID); - g_assert (success == FALSE); - g_object_unref (connection); - g_clear_error (&error); -} - int main (int argc, char **argv) { GError *error = NULL; @@ -1131,22 +540,13 @@ int main (int argc, char **argv) /* The tests */ test_setting_vpn_items (); - test_setting_vpn_update_secrets (); test_setting_ip6_config_old_address_array (); test_setting_gsm_apn_spaces (); test_setting_gsm_apn_bad_chars (); - test_setting_to_hash_all (); - test_setting_to_hash_no_secrets (); - test_setting_to_hash_only_secrets (); - test_connection_to_hash_setting_name (); - test_setting_connection_permissions_helpers (); - test_setting_connection_permissions_property (); test_connection_diff_a_only (); test_connection_diff_same (); test_connection_diff_different (); test_connection_diff_no_secrets (); - test_connection_good_base_types (); - test_connection_bad_base_types (); base = g_path_get_basename (argv[0]); fprintf (stdout, "%s: SUCCESS\n", base); diff --git a/libnm-util/tests/test-secrets.c b/libnm-util/tests/test-secrets.c index 6d46f99e..da6f610d 100644 --- a/libnm-util/tests/test-secrets.c +++ b/libnm-util/tests/test-secrets.c @@ -155,6 +155,7 @@ test_need_tls_secrets_path (void) NMConnection *connection; const char *setting_name; GPtrArray *hints = NULL; + NMSetting8021x *s_8021x; connection = make_tls_connection ("need-tls-secrets-path-key", NM_SETTING_802_1X_CK_SCHEME_PATH); ASSERT (connection != NULL, @@ -170,12 +171,44 @@ test_need_tls_secrets_path (void) "need-tls-secrets-path-key", "hints should be NULL since no secrets were required"); - /* Connection is good; clear secrets and ensure private key password is then required */ + /* Connection is good; clear secrets and ensure private key is then required */ nm_connection_clear_secrets (connection); hints = NULL; setting_name = nm_connection_need_secrets (connection, &hints); ASSERT (setting_name != NULL, + "need-tls-secrets-path-key", + "unexpected secrets success"); + ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, + "need-tls-secrets-path-key", + "unexpected setting secrets required"); + + ASSERT (hints != NULL, + "need-tls-secrets-path-key", + "expected returned secrets hints"); + ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PRIVATE_KEY), + "need-tls-secrets-path-key", + "expected to require private key, but it wasn't"); + + g_object_unref (connection); + + /*** Just clear the private key this time ***/ + + connection = make_tls_connection ("need-tls-secrets-path-key-password", NM_SETTING_802_1X_CK_SCHEME_PATH); + ASSERT (connection != NULL, + "need-tls-secrets-path-key-password", + "error creating test connection"); + + s_8021x = (NMSetting8021x *) nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); + ASSERT (s_8021x != NULL, + "need-tls-secrets-path-key-password", + "error getting test 802.1x setting"); + + g_object_set (G_OBJECT (s_8021x), NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, NULL, NULL); + + hints = NULL; + setting_name = nm_connection_need_secrets (connection, &hints); + ASSERT (setting_name != NULL, "need-tls-secrets-path-key-password", "unexpected secrets success"); ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, @@ -198,6 +231,7 @@ test_need_tls_secrets_blob (void) NMConnection *connection; const char *setting_name; GPtrArray *hints = NULL; + NMSetting8021x *s_8021x; connection = make_tls_connection ("need-tls-secrets-blob-key", NM_SETTING_802_1X_CK_SCHEME_BLOB); ASSERT (connection != NULL, @@ -213,24 +247,50 @@ test_need_tls_secrets_blob (void) "need-tls-secrets-blob-key", "hints should be NULL since no secrets were required"); - /* Clear secrets and ensure password is again required */ + /* Connection is good; clear secrets and ensure private key is then required */ nm_connection_clear_secrets (connection); hints = NULL; setting_name = nm_connection_need_secrets (connection, &hints); ASSERT (setting_name != NULL, - "need-tls-secrets-blob-key-password", + "need-tls-secrets-blob-key", "unexpected secrets success"); ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, - "need-tls-secrets-blob-key-password", + "need-tls-secrets-blob-key", "unexpected setting secrets required"); ASSERT (hints != NULL, - "need-tls-secrets-blob-key-password", + "need-tls-secrets-blob-key", "expected returned secrets hints"); - ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD), - "need-tls-secrets-blob-key-password", - "expected to require private key password, but it wasn't"); + ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PRIVATE_KEY), + "need-tls-secrets-blob-key", + "expected to require private key, but it wasn't"); + + g_object_unref (connection); + + /*** Just clear the private key this time ***/ + + connection = make_tls_connection ("need-tls-secrets-blob-key-password", NM_SETTING_802_1X_CK_SCHEME_BLOB); + ASSERT (connection != NULL, + "need-tls-secrets-blob-key-password", + "error creating test connection"); + + s_8021x = (NMSetting8021x *) nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); + ASSERT (s_8021x != NULL, + "need-tls-secrets-blob-key-password", + "error getting test 802.1x setting"); + + g_object_set (G_OBJECT (s_8021x), NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, NULL, NULL); + + /* Blobs are already decrypted and don't need a password */ + hints = NULL; + setting_name = nm_connection_need_secrets (connection, &hints); + ASSERT (setting_name == NULL, + "need-tls-secrets-blob-key-password", + "unexpected secrets failure"); + ASSERT (hints == NULL, + "need-tls-secrets-blob-key-password", + "hints should be NULL since no secrets were required"); g_object_unref (connection); } @@ -337,6 +397,7 @@ test_need_tls_phase2_secrets_path (void) NMConnection *connection; const char *setting_name; GPtrArray *hints = NULL; + NMSetting8021x *s_8021x; connection = make_tls_phase2_connection ("need-tls-phase2-secrets-path-key", NM_SETTING_802_1X_CK_SCHEME_PATH); @@ -353,12 +414,45 @@ test_need_tls_phase2_secrets_path (void) "need-tls-phase2-secrets-path-key", "hints should be NULL since no secrets were required"); - /* Connection is good; clear secrets and ensure private key password is then required */ + /* Connection is good; clear secrets and ensure private key is then required */ nm_connection_clear_secrets (connection); hints = NULL; setting_name = nm_connection_need_secrets (connection, &hints); ASSERT (setting_name != NULL, + "need-tls-phase2-secrets-path-key", + "unexpected secrets success"); + ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, + "need-tls-phase2-secrets-path-key", + "unexpected setting secrets required"); + + ASSERT (hints != NULL, + "need-tls-phase2-secrets-path-key", + "expected returned secrets hints"); + ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY), + "need-tls-phase2-secrets-path-key", + "expected to require private key, but it wasn't"); + + g_object_unref (connection); + + /*** Just clear the private key this time ***/ + + connection = make_tls_phase2_connection ("need-tls-phase2-secrets-path-key-password", + NM_SETTING_802_1X_CK_SCHEME_PATH); + ASSERT (connection != NULL, + "need-tls-phase2-secrets-path-key-password", + "error creating test connection"); + + s_8021x = (NMSetting8021x *) nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); + ASSERT (s_8021x != NULL, + "need-tls-phase2-secrets-path-key-password", + "error getting test 802.1x setting"); + + g_object_set (G_OBJECT (s_8021x), NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, NULL, NULL); + + hints = NULL; + setting_name = nm_connection_need_secrets (connection, &hints); + ASSERT (setting_name != NULL, "need-tls-phase2-secrets-path-key-password", "unexpected secrets success"); ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, @@ -381,6 +475,7 @@ test_need_tls_phase2_secrets_blob (void) NMConnection *connection; const char *setting_name; GPtrArray *hints = NULL; + NMSetting8021x *s_8021x; connection = make_tls_phase2_connection ("need-tls-phase2-secrets-blob-key", NM_SETTING_802_1X_CK_SCHEME_BLOB); @@ -397,79 +492,53 @@ test_need_tls_phase2_secrets_blob (void) "need-tls-phase2-secrets-blob-key", "hints should be NULL since no secrets were required"); - /* Connection is good; clear secrets and ensure private key password is then required */ + /* Connection is good; clear secrets and ensure private key is then required */ nm_connection_clear_secrets (connection); hints = NULL; setting_name = nm_connection_need_secrets (connection, &hints); ASSERT (setting_name != NULL, - "need-tls-phase2-secrets-blob-key-password", + "need-tls-phase2-secrets-blob-key", "unexpected secrets success"); ASSERT (strcmp (setting_name, NM_SETTING_802_1X_SETTING_NAME) == 0, - "need-tls-phase2-secrets-blob-key-password", + "need-tls-phase2-secrets-blob-key", "unexpected setting secrets required"); ASSERT (hints != NULL, - "need-tls-phase2-secrets-blob-key-password", + "need-tls-phase2-secrets-blob-key", "expected returned secrets hints"); - ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD), - "need-tls-phase2-secrets-blob-key-password", - "expected to require private key password, but it wasn't"); + ASSERT (find_hints_item (hints, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY), + "need-tls-phase2-secrets-blob-key", + "expected to require private key, but it wasn't"); g_object_unref (connection); -} - -static NMConnection * -wifi_connection_new (void) -{ - NMConnection *connection; - NMSettingConnection *s_con; - NMSettingWireless *s_wifi; - NMSettingWirelessSecurity *s_wsec; - unsigned char tmpssid[] = { 0x31, 0x33, 0x33, 0x37 }; - char *uuid; - GByteArray *ssid; - - connection = nm_connection_new (); - g_assert (connection); - - /* Connection setting */ - s_con = (NMSettingConnection *) nm_setting_connection_new (); - g_assert (s_con); - uuid = nm_utils_uuid_generate (); - g_object_set (s_con, - NM_SETTING_CONNECTION_ID, "Test Wireless", - NM_SETTING_CONNECTION_UUID, uuid, - NM_SETTING_CONNECTION_AUTOCONNECT, FALSE, - NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, - NULL); - g_free (uuid); - nm_connection_add_setting (connection, NM_SETTING (s_con)); + /*** Just clear the private key this time ***/ - /* Wireless setting */ - s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); - g_assert (s_wifi); + connection = make_tls_phase2_connection ("need-tls-phase2-secrets-blob-key-password", + NM_SETTING_802_1X_CK_SCHEME_BLOB); + ASSERT (connection != NULL, + "need-tls-phase2-secrets-blob-key-password", + "error creating test connection"); - ssid = g_byte_array_sized_new (sizeof (tmpssid)); - g_byte_array_append (ssid, &tmpssid[0], sizeof (tmpssid)); - g_object_set (s_wifi, - NM_SETTING_WIRELESS_SSID, ssid, - NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, - NULL); - g_byte_array_free (ssid, TRUE); - nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + s_8021x = (NMSetting8021x *) nm_connection_get_setting (connection, NM_TYPE_SETTING_802_1X); + ASSERT (s_8021x != NULL, + "need-tls-phase2-secrets-blob-key-password", + "error getting test 802.1x setting"); - /* Wifi security */ - s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); - g_assert (s_wsec); + g_object_set (G_OBJECT (s_8021x), NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, NULL, NULL); - g_object_set (G_OBJECT (s_wsec), - NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", - NULL); - nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + /* Blobs are already decrypted and don't need a password */ + hints = NULL; + setting_name = nm_connection_need_secrets (connection, &hints); + ASSERT (setting_name == NULL, + "need-tls-phase2-secrets-blob-key-password", + "unexpected secrets failure"); + ASSERT (hints == NULL, + "need-tls-phase2-secrets-blob-key-password", + "hints should be NULL since no secrets were required"); - return connection; + g_object_unref (connection); } static void @@ -503,100 +572,77 @@ uint_to_gvalue (guint32 i) } static void -test_update_secrets_wifi_single_setting (void) +test_update_secrets_wifi (void) { NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; NMSettingWirelessSecurity *s_wsec; + unsigned char tmpssid[] = { 0x31, 0x33, 0x33, 0x37 }; + const char *wepkey = "11111111111111111111111111"; GHashTable *secrets; GError *error = NULL; + char *uuid; + GByteArray *ssid; gboolean success; - const char *wepkey = "11111111111111111111111111"; - const char *tmp; - connection = wifi_connection_new (); + connection = nm_connection_new (); + g_assert (connection); - /* Build up the secrets hash */ - secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy); - g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey)); - g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY)); + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + g_assert (s_con); - success = nm_connection_update_secrets (connection, - NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, - secrets, - &error); - g_assert_no_error (error); - g_assert (success); + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Test Wireless", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, FALSE, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + nm_connection_add_setting (connection, NM_SETTING (s_con)); - /* Make sure the secret is now in the connection */ - s_wsec = (NMSettingWirelessSecurity *) nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY); - g_assert (s_wsec); - tmp = nm_setting_wireless_security_get_wep_key (s_wsec, 0); - g_assert_cmpstr (tmp, ==, wepkey); + /* Wireless setting */ + s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); + g_assert (s_wifi); - g_object_unref (connection); -} + ssid = g_byte_array_sized_new (sizeof (tmpssid)); + g_byte_array_append (ssid, &tmpssid[0], sizeof (tmpssid)); + g_object_set (s_wifi, + NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NULL); + g_byte_array_free (ssid, TRUE); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); -static void -test_update_secrets_wifi_full_hash (void) -{ - NMConnection *connection; - NMSettingWirelessSecurity *s_wsec; - GHashTable *secrets, *all; - GError *error = NULL; - gboolean success; - const char *wepkey = "11111111111111111111111111"; - const char *tmp; + /* Wifi security */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + g_assert (s_wsec); - connection = wifi_connection_new (); + g_object_set (G_OBJECT (s_wsec), + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", + NULL); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); /* Build up the secrets hash */ - all = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_hash_table_destroy); secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy); g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey)); g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY)); - g_hash_table_insert (all, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, secrets); success = nm_connection_update_secrets (connection, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, - all, + secrets, &error); - g_assert_no_error (error); + if (!success) { + /* Print the warning message before we assert success */ + g_assert (error); + g_warning ("Error updating connection secrets: %s", error->message); + g_clear_error (&error); + } g_assert (success); - - /* Make sure the secret is now in the connection */ - s_wsec = (NMSettingWirelessSecurity *) nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY); - g_assert (s_wsec); - tmp = nm_setting_wireless_security_get_wep_key (s_wsec, 0); - g_assert_cmpstr (tmp, ==, wepkey); - - g_object_unref (connection); } -static void -test_update_secrets_wifi_bad_setting_name (void) -{ - NMConnection *connection; - GHashTable *secrets; - GError *error = NULL; - gboolean success; - const char *wepkey = "11111111111111111111111111"; - - connection = wifi_connection_new (); - - /* Build up the secrets hash */ - secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy); - g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey)); - g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY)); - - success = nm_connection_update_secrets (connection, - "asdfasdfasdfasf", - secrets, - &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_SETTING_NOT_FOUND); - g_assert (success == FALSE); - - g_object_unref (connection); -} int main (int argc, char **argv) { @@ -616,9 +662,7 @@ int main (int argc, char **argv) test_need_tls_phase2_secrets_path (); test_need_tls_phase2_secrets_blob (); - test_update_secrets_wifi_single_setting (); - test_update_secrets_wifi_full_hash (); - test_update_secrets_wifi_bad_setting_name (); + test_update_secrets_wifi (); base = g_path_get_basename (argv[0]); fprintf (stdout, "%s: SUCCESS\n", base); diff --git a/libnm-util/tests/test-setting-8021x.c b/libnm-util/tests/test-setting-8021x.c index 6d1e3bd0..6202a142 100644 --- a/libnm-util/tests/test-setting-8021x.c +++ b/libnm-util/tests/test-setting-8021x.c @@ -15,7 +15,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2008 - 2011 Red Hat, Inc. + * Copyright (C) 2008 - 2009 Red Hat, Inc. * */ @@ -30,8 +30,8 @@ #include "nm-setting-8021x.h" static void -compare_blob_data (const char *test, - const char *key_path, +compare_decrypted (const char *test, + const char *decrypted_path, const GByteArray *key) { char *contents = NULL; @@ -39,48 +39,32 @@ compare_blob_data (const char *test, GError *error = NULL; gboolean success; - success = g_file_get_contents (key_path, &contents, &len, &error); + success = g_file_get_contents (decrypted_path, &contents, &len, &error); ASSERT (success == TRUE, - test, "failed to read blob key file: %s", error->message); + test, "failed to read decrypted key file: %s", error->message); - ASSERT (len > 0, test, "blob key file invalid (size 0)"); + ASSERT (len > 0, test, "decrypted key file invalid (size 0)"); ASSERT (len == key->len, - test, "blob key file (%d) and setting key data (%d) lengths don't match", + test, "decrypted key file (%d) and decrypted key data (%d) lengths don't match", len, key->len); ASSERT (memcmp (contents, key->data, len) == 0, - test, "blob key file and blob key data don't match"); + test, "decrypted key file and decrypted key data don't match"); g_free (contents); } -#define SCHEME_PATH "file://" - -static void -check_scheme_path (GByteArray *value, const char *path) -{ - guint8 *p = value->data; - - g_assert (memcmp (p, SCHEME_PATH, strlen (SCHEME_PATH)) == 0); - p += strlen (SCHEME_PATH); - g_assert (memcmp (p, path, strlen (path)) == 0); - p += strlen (path); - g_assert (*p == '\0'); -} - static void test_private_key_import (const char *path, const char *password, + const char *decrypted_path, NMSetting8021xCKScheme scheme) { NMSetting8021x *s_8021x; gboolean success; NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - NMSetting8021xCKFormat tmp_fmt; GError *error = NULL; - GByteArray *tmp_key = NULL, *client_cert = NULL; - const char *pw; s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); ASSERT (s_8021x != NULL, "private-key-import", "setting was NULL"); @@ -93,48 +77,16 @@ test_private_key_import (const char *path, &error); ASSERT (success == TRUE, "private-key-import", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "private-key-import", "unexpected private key format (got %d)", format); - tmp_fmt = nm_setting_802_1x_get_private_key_format (s_8021x); - ASSERT (tmp_fmt == format, - "private-key-import", "unexpected re-read private key format (expected %d, got %d)", - format, tmp_fmt); - - /* Make sure the password is what we expect */ - pw = nm_setting_802_1x_get_private_key_password (s_8021x); - ASSERT (pw != NULL, - "private-key-import", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "private-key-import", "failed to compare private key password"); - - if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) { - tmp_key = (GByteArray *) nm_setting_802_1x_get_private_key_blob (s_8021x); - ASSERT (tmp_key != NULL, "private-key-import", "missing private key blob"); - compare_blob_data ("private-key-import", path, tmp_key); - } else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) { - g_object_get (s_8021x, NM_SETTING_802_1X_PRIVATE_KEY, &tmp_key, NULL); - ASSERT (tmp_key != NULL, "private-key-import", "missing private key value"); - check_scheme_path (tmp_key, path); - g_byte_array_free (tmp_key, TRUE); - } else - g_assert_not_reached (); - - /* If it's PKCS#12 ensure the client cert is the same value */ - if (format == NM_SETTING_802_1X_CK_FORMAT_PKCS12) { - g_object_get (s_8021x, NM_SETTING_802_1X_PRIVATE_KEY, &tmp_key, NULL); - ASSERT (tmp_key != NULL, "private-key-import", "missing private key value"); - - g_object_get (s_8021x, NM_SETTING_802_1X_CLIENT_CERT, &client_cert, NULL); - ASSERT (client_cert != NULL, "private-key-import", "missing client certificate value"); - - /* make sure they are the same */ - ASSERT (tmp_key->len == client_cert->len, - "private-key-import", "unexpected different private key and client cert lengths"); - ASSERT (memcmp (tmp_key->data, client_cert->data, tmp_key->len) == 0, - "private-key-import", "unexpected different private key and client cert data"); - - g_byte_array_free (tmp_key, TRUE); - g_byte_array_free (client_cert, TRUE); + + if ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB + && format != NM_SETTING_802_1X_CK_FORMAT_PKCS12) { + const GByteArray *key; + + ASSERT (decrypted_path != NULL, "private-key-import", "missing decrypted key file"); + + key = nm_setting_802_1x_get_private_key_blob (s_8021x); + ASSERT (key != NULL, "private-key-import", "missing private key blob"); + compare_decrypted ("private-key-import", decrypted_path, key); } g_object_unref (s_8021x); @@ -143,15 +95,13 @@ test_private_key_import (const char *path, static void test_phase2_private_key_import (const char *path, const char *password, + const char *decrypted_path, NMSetting8021xCKScheme scheme) { NMSetting8021x *s_8021x; gboolean success; NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - NMSetting8021xCKFormat tmp_fmt; GError *error = NULL; - GByteArray *tmp_key = NULL, *client_cert = NULL; - const char *pw; s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); ASSERT (s_8021x != NULL, "phase2-private-key-import", "setting was NULL"); @@ -164,242 +114,17 @@ test_phase2_private_key_import (const char *path, &error); ASSERT (success == TRUE, "phase2-private-key-import", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "phase2-private-key-import", "unexpected private key format"); - tmp_fmt = nm_setting_802_1x_get_phase2_private_key_format (s_8021x); - ASSERT (tmp_fmt == format, - "phase2-private-key-import", "unexpected re-read private key format (expected %d, got %d)", - format, tmp_fmt); - - /* Make sure the password is what we expect */ - pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x); - ASSERT (pw != NULL, - "phase2-private-key-import", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "phase2-private-key-import", "failed to compare private key password"); - - if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) { - tmp_key = (GByteArray *) nm_setting_802_1x_get_phase2_private_key_blob (s_8021x); - ASSERT (tmp_key != NULL, "phase2-private-key-import", "missing private key blob"); - compare_blob_data ("phase2-private-key-import", path, tmp_key); - } else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) { - g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, &tmp_key, NULL); - ASSERT (tmp_key != NULL, "phase2-private-key-import", "missing private key value"); - check_scheme_path (tmp_key, path); - } else - g_assert_not_reached (); - - /* If it's PKCS#12 ensure the client cert is the same value */ - if (format == NM_SETTING_802_1X_CK_FORMAT_PKCS12) { - g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, &tmp_key, NULL); - ASSERT (tmp_key != NULL, "private-key-import", "missing private key value"); - - g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_CLIENT_CERT, &client_cert, NULL); - ASSERT (client_cert != NULL, "private-key-import", "missing client certificate value"); - - /* make sure they are the same */ - ASSERT (tmp_key->len == client_cert->len, - "private-key-import", "unexpected different private key and client cert lengths"); - ASSERT (memcmp (tmp_key->data, client_cert->data, tmp_key->len) == 0, - "private-key-import", "unexpected different private key and client cert data"); - - g_byte_array_free (tmp_key, TRUE); - g_byte_array_free (client_cert, TRUE); - } - g_object_unref (s_8021x); -} + if ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB + && format != NM_SETTING_802_1X_CK_FORMAT_PKCS12) { + const GByteArray *key; -static void -test_wrong_password_keeps_data (const char *path, const char *password) -{ - NMSetting8021x *s_8021x; - gboolean success; - NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - GError *error = NULL; - const char *pw; - - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, "wrong-password-keeps-data", "setting was NULL"); - - success = nm_setting_802_1x_set_private_key (s_8021x, - path, - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == TRUE, - "wrong-password-keeps-data", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "wrong-password-keeps-data", "unexpected private key format (got %d)", format); + ASSERT (decrypted_path != NULL, "phase2-private-key-import", "missing decrypted key file"); - /* Now try to set it to something that's not a certificate */ - format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - success = nm_setting_802_1x_set_private_key (s_8021x, - "Makefile.am", - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == FALSE, - "wrong-password-keeps-data", "unexpected success reading private key"); - ASSERT (error != NULL, - "wrong-password-keeps-data", "unexpected missing error"); - ASSERT (format == NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "wrong-password-keeps-data", "unexpected success reading private key format"); - - /* Make sure the password hasn't changed */ - pw = nm_setting_802_1x_get_private_key_password (s_8021x); - ASSERT (pw != NULL, - "wrong-password-keeps-data", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "wrong-password-keeps-data", "failed to compare private key password"); - - g_object_unref (s_8021x); -} - -static void -test_clear_private_key (const char *path, const char *password) -{ - NMSetting8021x *s_8021x; - gboolean success; - NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - GError *error = NULL; - const char *pw; - - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, "clear-private-key", "setting was NULL"); - - success = nm_setting_802_1x_set_private_key (s_8021x, - path, - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == TRUE, - "clear-private-key", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "clear-private-key", "unexpected private key format (got %d)", format); - - /* Make sure the password is what we expect */ - pw = nm_setting_802_1x_get_private_key_password (s_8021x); - ASSERT (pw != NULL, - "clear-private-key", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "clear-private-key", "failed to compare private key password"); - - /* Now clear it */ - success = nm_setting_802_1x_set_private_key (s_8021x, - NULL, - NULL, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - NULL, - &error); - ASSERT (success == TRUE, - "clear-private-key", "unexpected failure clearing private key"); - ASSERT (error == NULL, - "clear-private-key", "unexpected error clearing private key"); - - /* Ensure the password is also now clear */ - ASSERT (nm_setting_802_1x_get_private_key_password (s_8021x) == NULL, - "clear-private-key", "unexpected private key password"); - - g_object_unref (s_8021x); -} - -static void -test_wrong_phase2_password_keeps_data (const char *path, const char *password) -{ - NMSetting8021x *s_8021x; - gboolean success; - NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - GError *error = NULL; - const char *pw; - - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, "wrong-phase2-password-keeps-data", "setting was NULL"); - - success = nm_setting_802_1x_set_phase2_private_key (s_8021x, - path, - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == TRUE, - "wrong-phase2-password-keeps-data", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "wrong-phase2-password-keeps-data", "unexpected private key format (got %d)", format); - - /* Now try to set it to something that's not a certificate */ - format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - success = nm_setting_802_1x_set_phase2_private_key (s_8021x, - "Makefile.am", - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == FALSE, - "wrong-phase2-password-keeps-data", "unexpected success reading private key"); - ASSERT (error != NULL, - "wrong-phase2-password-keeps-data", "unexpected missing error"); - ASSERT (format == NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "wrong-phase2-password-keeps-data", "unexpected success reading private key format"); - - /* Make sure the password hasn't changed */ - pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x); - ASSERT (pw != NULL, - "wrong-phase2-password-keeps-data", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "wrong-phase2-password-keeps-data", "failed to compare private key password"); - - g_object_unref (s_8021x); -} - -static void -test_clear_phase2_private_key (const char *path, const char *password) -{ - NMSetting8021x *s_8021x; - gboolean success; - NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN; - GError *error = NULL; - const char *pw; - - s_8021x = (NMSetting8021x *) nm_setting_802_1x_new (); - ASSERT (s_8021x != NULL, "clear-phase2-private-key", "setting was NULL"); - - success = nm_setting_802_1x_set_phase2_private_key (s_8021x, - path, - password, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - &format, - &error); - ASSERT (success == TRUE, - "clear-phase2-private-key", "error reading private key: %s", error->message); - ASSERT (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN, - "clear-phase2-private-key", "unexpected private key format (got %d)", format); - - /* Make sure the password is what we expect */ - pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x); - ASSERT (pw != NULL, - "clear-phase2-private-key", "failed to get previous private key password"); - ASSERT (strcmp (pw, password) == 0, - "clear-phase2-private-key", "failed to compare private key password"); - - /* Now clear it */ - success = nm_setting_802_1x_set_phase2_private_key (s_8021x, - NULL, - NULL, - NM_SETTING_802_1X_CK_SCHEME_BLOB, - NULL, - &error); - ASSERT (success == TRUE, - "clear-phase2-private-key", "unexpected failure clearing private key"); - ASSERT (error == NULL, - "clear-phase2-private-key", "unexpected error clearing private key"); - - /* Ensure the password is also now clear */ - ASSERT (nm_setting_802_1x_get_phase2_private_key_password (s_8021x) == NULL, - "clear-phase2-private-key", "unexpected private key password"); + key = nm_setting_802_1x_get_phase2_private_key_blob (s_8021x); + ASSERT (key != NULL, "phase2-private-key-import", "missing private key blob"); + compare_decrypted ("phase2-private-key-import", decrypted_path, key); + } g_object_unref (s_8021x); } @@ -409,9 +134,13 @@ int main (int argc, char **argv) GError *error = NULL; DBusGConnection *bus; char *base; + const char *decrypted = NULL; if (argc < 3) - FAIL ("init", "need at least two arguments: <path> <password>"); + FAIL ("init", "need at least two arguments: <path> <password> [decrypted private key]"); + + if (argc == 4) + decrypted = argv[3]; g_type_init (); bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); @@ -419,21 +148,12 @@ int main (int argc, char **argv) if (!nm_utils_init (&error)) FAIL ("nm-utils-init", "failed to initialize libnm-util: %s", error->message); - /* Test phase1 and phase2 path scheme */ - test_private_key_import (argv[1], argv[2], NM_SETTING_802_1X_CK_SCHEME_PATH); - test_phase2_private_key_import (argv[1], argv[2], NM_SETTING_802_1X_CK_SCHEME_PATH); - - /* Test phase1 and phase2 blob scheme */ - test_private_key_import (argv[1], argv[2], NM_SETTING_802_1X_CK_SCHEME_BLOB); - test_phase2_private_key_import (argv[1], argv[2], NM_SETTING_802_1X_CK_SCHEME_BLOB); - - /* Test that using a wrong password does not change existing data */ - test_wrong_password_keeps_data (argv[1], argv[2]); - test_wrong_phase2_password_keeps_data (argv[1], argv[2]); + /* The tests */ + test_private_key_import (argv[1], argv[2], NULL, NM_SETTING_802_1X_CK_SCHEME_PATH); + test_phase2_private_key_import (argv[1], argv[2], NULL, NM_SETTING_802_1X_CK_SCHEME_PATH); - /* Test clearing the private key */ - test_clear_private_key (argv[1], argv[2]); - test_clear_phase2_private_key (argv[1], argv[2]); + test_private_key_import (argv[1], argv[2], decrypted, NM_SETTING_802_1X_CK_SCHEME_BLOB); + test_phase2_private_key_import (argv[1], argv[2], decrypted, NM_SETTING_802_1X_CK_SCHEME_BLOB); base = g_path_get_basename (argv[0]); fprintf (stdout, "%s: SUCCESS\n", base); |