diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 22:24:04 +0000 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 22:24:04 +0000 |
commit | e6a07df2bc362d57a422216a4af834d980b1b2d7 (patch) | |
tree | ea56882dd7010b018d3ed9d47b82e6e3fb98d5b6 /tests | |
parent | 38ef0a86d9075f75ae735409d7b59da2da93490d (diff) | |
download | lasso-e6a07df2bc362d57a422216a4af834d980b1b2d7.tar.gz lasso-e6a07df2bc362d57a422216a4af834d980b1b2d7.tar.xz lasso-e6a07df2bc362d57a422216a4af834d980b1b2d7.zip |
Core: Finish support for all XMLDsig key formats
* lasso/xml/tools.c:
xmlsec is not able to load a certificate public key without checking
it against trusted root certificate, so we must work around and load
the key by hand.
lasso_xmlsec_load_private_key_from_buffer is made more robust in the
same (loading of the key was extracted inside
_lasso_xmlsec_load_key_from_buffer) and now can load certificates and
keys directly embedded inside KeyValue nodes (in total opposition to
the XMLDsig specification but...), with or without PEM headers.
* tests/metadata/Makefile.am tests/metadata/metadata_06.xml
tests/metadata_tests.c:
add test case for RSAKeyValue public keys.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/metadata/Makefile.am | 3 | ||||
-rw-r--r-- | tests/metadata/metadata_06.xml | 23 | ||||
-rw-r--r-- | tests/metadata_tests.c | 13 |
3 files changed, 38 insertions, 1 deletions
diff --git a/tests/metadata/Makefile.am b/tests/metadata/Makefile.am index 40d4798b..956054a0 100644 --- a/tests/metadata/Makefile.am +++ b/tests/metadata/Makefile.am @@ -4,4 +4,5 @@ EXTRA_DIST = \ metadata_02.xml \ metadata_03.xml \ metadata_04.xml \ - metadata_05.xml + metadata_05.xml \ + metadata_06.xml diff --git a/tests/metadata/metadata_06.xml b/tests/metadata/metadata_06.xml new file mode 100644 index 00000000..bce00184 --- /dev/null +++ b/tests/metadata/metadata_06.xml @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<EntityDescriptor + providerID="http://test.local/liberty/metadata" + xmlns="urn:liberty:metadata:2003-08"> + +<SPDescriptor protocolSupportEnumeration="urn:liberty:iff:2003-08"> + + <KeyDescriptor use="signing"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:KeyValue> + <ds:RSAKeyValue> + <ds:Modulus>xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6W +jubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpVRgBUwUlV +5foK5hhmbktQhyNdy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U= + </ds:Modulus> + <ds:Exponent>AQAB</ds:Exponent> + </ds:RSAKeyValue> + </ds:KeyValue> + </ds:KeyInfo> + </KeyDescriptor> + +</SPDescriptor> +</EntityDescriptor> diff --git a/tests/metadata_tests.c b/tests/metadata_tests.c index 33096965..6daf31f0 100644 --- a/tests/metadata_tests.c +++ b/tests/metadata_tests.c @@ -74,6 +74,14 @@ START_TEST(test05_metadata_load_public_key_from_x509_cert) } END_TEST +START_TEST(test06_metadata_load_public_key_from_rsa_keyvalue) +{ + LassoProvider *provider = lasso_provider_new(LASSO_PROVIDER_ROLE_SP, + TESTSMETADATADIR "/metadata_06.xml", NULL, NULL); + fail_unless(provider != NULL, "Can't load RSAKeyValue node"); + g_object_unref(provider); +} +END_TEST Suite* metadata_suite() @@ -89,11 +97,14 @@ metadata_suite() tcase_create("Load PEM public key from <ds:KeyValue>"); TCase *tc_metadata_load_public_key_from_x509_cert = tcase_create("Load DER public key from <ds:X509Certificate>"); + TCase *tc_metadata_load_public_key_from_rsa_keyvalue = + tcase_create("Load RSAKeyValue public key"); suite_add_tcase(s, tc_metadata_load_der_certificate_from_x509_cert); suite_add_tcase(s, tc_metadata_load_pem_certificate_from_x509_cert); suite_add_tcase(s, tc_metadata_load_der_public_key_from_keyvalue); suite_add_tcase(s, tc_metadata_load_pem_public_key_from_keyvalue); suite_add_tcase(s, tc_metadata_load_public_key_from_x509_cert); + suite_add_tcase(s, tc_metadata_load_public_key_from_rsa_keyvalue); tcase_add_test(tc_metadata_load_der_certificate_from_x509_cert, test01_metadata_load_der_certificate_from_x509_cert); tcase_add_test(tc_metadata_load_pem_certificate_from_x509_cert, @@ -104,5 +115,7 @@ metadata_suite() test04_metadata_load_pem_public_key_from_keyvalue); tcase_add_test(tc_metadata_load_public_key_from_x509_cert, test05_metadata_load_public_key_from_x509_cert); + tcase_add_test(tc_metadata_load_public_key_from_rsa_keyvalue, + test06_metadata_load_public_key_from_rsa_keyvalue); return s; } |