summaryrefslogtreecommitdiffstats
path: root/lasso/xml/ds_signature.c
diff options
context:
space:
mode:
Diffstat (limited to 'lasso/xml/ds_signature.c')
-rw-r--r--lasso/xml/ds_signature.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/lasso/xml/ds_signature.c b/lasso/xml/ds_signature.c
index e904ca10..63dc40fd 100644
--- a/lasso/xml/ds_signature.c
+++ b/lasso/xml/ds_signature.c
@@ -41,11 +41,40 @@ lasso_ds_signature_sign(LassoDsSignature *node,
const xmlChar *certificate_file,
GError **err)
{
- xmlNodePtr signature = LASSO_NODE_GET_CLASS(node)->get_xmlNode(LASSO_NODE(node));
+ xmlNodePtr signature;
xmlSecDSigCtxPtr dsig_ctx;
gint ret = 0;
- g_return_val_if_fail (err == NULL || *err == NULL, LASSO_ERR_ERROR_CHECK_FAILED);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL,
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED);
+ }
+ if (LASSO_IS_DS_SIGNATURE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_DS_SIGNATURE(node),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ);
+ }
+ if (private_key_file == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(private_key_file != NULL,
+ LASSO_PARAM_ERROR_INVALID_VALUE);
+ }
+ if (certificate_file == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(certificate_file != NULL,
+ LASSO_PARAM_ERROR_INVALID_VALUE);
+ }
+
+ signature = LASSO_NODE_GET_CLASS(node)->get_xmlNode(LASSO_NODE(node));
/* create signature context */
dsig_ctx = xmlSecDSigCtxCreate(NULL);