diff options
Diffstat (limited to 'lasso/xml/ds_signature.c')
-rw-r--r-- | lasso/xml/ds_signature.c | 33 |
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); |