diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-07-16 19:34:24 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-07-16 19:34:24 +0000 |
| commit | 21ca128532e76be7461d049d8913a17f75f971eb (patch) | |
| tree | 069a54f5d66870814b0d75683002a53a90e9fd75 | |
| parent | f8ce6b25e5aab36a82017a6dfd4229cbeabbc5dc (diff) | |
| download | lasso-21ca128532e76be7461d049d8913a17f75f971eb.tar.gz lasso-21ca128532e76be7461d049d8913a17f75f971eb.tar.xz lasso-21ca128532e76be7461d049d8913a17f75f971eb.zip | |
[Core] add password parameter to lasso_sign_node
| -rw-r--r-- | lasso/xml/private.h | 3 | ||||
| -rw-r--r-- | lasso/xml/saml-2.0/saml2_assertion.c | 4 | ||||
| -rw-r--r-- | lasso/xml/tools.c | 17 |
3 files changed, 16 insertions, 8 deletions
diff --git a/lasso/xml/private.h b/lasso/xml/private.h index a9220307..a2262f38 100644 --- a/lasso/xml/private.h +++ b/lasso/xml/private.h @@ -138,7 +138,8 @@ char* lasso_sha1(const char *str); char** urlencoded_to_strings(const char *str); int lasso_sign_node(xmlNode *xmlnode, const char *id_attr_name, const char *id_value, - const char *private_key_file, const char *certificate_file); + const char *private_key_file, const char *private_key_password, + const char *certificate_file); int lasso_verify_signature(xmlNode *signed_node, xmlDoc *doc, const char *id_attr_name, xmlSecKeysMngr *keys_manager, xmlSecKey *public_key, diff --git a/lasso/xml/saml-2.0/saml2_assertion.c b/lasso/xml/saml-2.0/saml2_assertion.c index b3e728f3..aa0dfbb3 100644 --- a/lasso/xml/saml-2.0/saml2_assertion.c +++ b/lasso/xml/saml-2.0/saml2_assertion.c @@ -113,8 +113,6 @@ static struct XmlSnippet schema_snippets[] = { static LassoNodeClass *parent_class = NULL; - - static xmlNode* get_xmlNode(LassoNode *node, gboolean lasso_dump) { @@ -162,7 +160,7 @@ class_init(LassoSaml2AssertionClass *klass) nclass->get_xmlNode = get_xmlNode; nclass->node_data = g_new0(LassoNodeClassData, 1); lasso_node_class_set_nodename(nclass, "Assertion"); - lasso_node_class_set_ns(nclass, LASSO_SAML2_ASSERTION_HREF, LASSO_SAML2_ASSERTION_PREFIX); + lasso_node_class_set_ns(nclass,LASSO_SAML2_ASSERTION_HREF, LASSO_SAML2_ASSERTION_PREFIX); lasso_node_class_add_snippets(nclass, schema_snippets); nclass->node_data->id_attribute_name = "ID"; diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c index dae8a9f4..08a35963 100644 --- a/lasso/xml/tools.c +++ b/lasso/xml/tools.c @@ -943,6 +943,9 @@ urlencoded_to_strings(const char *str) return result; } +void _lasso_xmlsec_password_callback() { +} + /** * lasso_sign_node: * @xmlnode: the xmlnode to sign @@ -960,12 +963,14 @@ urlencoded_to_strings(const char *str) */ int lasso_sign_node(xmlNode *xmlnode, const char *id_attr_name, const char *id_value, - const char *private_key_file, const char *certificate_file) + const char *private_key_file, const char *private_key_password, + const char *certificate_file) { xmlDoc *doc; xmlNode *sign_tmpl, *old_parent; xmlSecDSigCtx *dsig_ctx; xmlAttr *id_attr = NULL; + void *password_callback = NULL; if (private_key_file == NULL || xmlnode == NULL) return LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ; @@ -985,14 +990,18 @@ lasso_sign_node(xmlNode *xmlnode, const char *id_attr_name, const char *id_value } dsig_ctx = xmlSecDSigCtxCreate(NULL); + if (! private_key_password) { + password_callback = _lasso_openssl_pwd_callback; + } if (access(private_key_file, R_OK) == 0) { dsig_ctx->signKey = xmlSecCryptoAppKeyLoad(private_key_file, - xmlSecKeyDataFormatPem, - NULL, NULL, NULL); + xmlSecKeyDataFormatPem, private_key_password, + password_callback, NULL /* password_callback_ctx */); } else { int len = private_key_file ? strlen(private_key_file) : 0; dsig_ctx->signKey = xmlSecCryptoAppKeyLoadMemory((xmlSecByte*)private_key_file, len, - xmlSecKeyDataFormatPem, NULL, NULL, NULL); + xmlSecKeyDataFormatPem, private_key_password, + password_callback, NULL /* password_callback_ctx */); } if (dsig_ctx->signKey == NULL) { xmlSecDSigCtxDestroy(dsig_ctx); |
