include/oxs_sign_ctx.h (108 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OXS_SIGN_CTX_H #define OXS_SIGN_CTX_H /** * @file oxs_sign_ctx.h * @brief Keeps information relavent for a single node of signing. */ /** * @defgroup oxs_sign_ctx Signature Context * @ingroup oxs * @{ */ #include <axis2_defines.h> #include <axutil_env.h> #include <axiom_node.h> #include <oxs_x509_cert.h> #include <oxs_key.h> #include <openssl_pkey.h> #ifdef __cplusplus extern "C" { #endif /*The type of operation*/ typedef enum { OXS_SIGN_OPERATION_NONE = 0, OXS_SIGN_OPERATION_SIGN, OXS_SIGN_OPERATION_VERIFY } oxs_sign_operation_t; typedef struct oxs_sign_ctx_t oxs_sign_ctx_t; /** * Create a signature context * @env the environemnt struct * @return created signature context * */ AXIS2_EXTERN oxs_sign_ctx_t *AXIS2_CALL oxs_sign_ctx_create(const axutil_env_t *env); /** * Free a signature context. * @ctx signature context * @env the environemnt struct * @return AXIS2_SUCCESS on success or AXIS2_FAILURE on failure * **/ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_free(oxs_sign_ctx_t *ctx, const axutil_env_t *env); /**********************Getter functions******************************************/ /** * Get signature algorithm of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return signature algorithm */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sign_mtd_algo( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get cannocanicalization method of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return cannocanicalization method */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_c14n_mtd( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get sginature valueof the signature context * @sign_ctx the signature context * @env the environemnt struct * @return signature value */ AXIS2_EXTERN axis2_char_t *AXIS2_CALL oxs_sign_ctx_get_sig_val( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get signature parts of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return sgnature parts as a list */ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL oxs_sign_ctx_get_sign_parts( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get x509 certificate of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return x509 certificate */ AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL oxs_sign_ctx_get_certificate( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get private key of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return private key */ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_private_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get public key of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return public key */ AXIS2_EXTERN openssl_pkey_t *AXIS2_CALL oxs_sign_ctx_get_public_key( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get shared secret of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return the shared secret */ AXIS2_EXTERN oxs_key_t *AXIS2_CALL oxs_sign_ctx_get_secret( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /** * Get the operation of the signature context * @sign_ctx the signature context * @env the environemnt struct * @return operation SIGN/VERIFY/NONE */ AXIS2_EXTERN oxs_sign_operation_t AXIS2_CALL oxs_sign_ctx_get_operation( const oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env); /**********************Setter functions******************************************/ /** * Set Signature algorithm of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sign_mtd_algo Signature algorithm * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_mtd_algo( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sign_mtd_algo); /** * Set Cannocanicalization method of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @c14n_mtd Cannocanicalization method * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_c14n_mtd( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *c14n_mtd); /** * Set signature value of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sig_val signature value * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sig_val( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axis2_char_t *sig_val); /** * Set signature parts of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @sign_parts signature parts * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_sign_parts( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, axutil_array_list_t *sign_parts); /** * Set the x509 certificate of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @certificate the x509 certificate * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_certificate( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_x509_cert_t *certificate); /** * Set private key of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @prv_key private key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_private_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *prv_key); /** * Set the public key of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @pub_key the public key * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_public_key( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, openssl_pkey_t *pub_key); /** * Set the shared secret of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @secret the shared secret * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_secret( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_key_t *secret); /** * Set the operation of the signature context @sign_ctx * @sign_ctx the signature context * @env the environemnt struct * @operation the operation * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL oxs_sign_ctx_set_operation( oxs_sign_ctx_t *sign_ctx, const axutil_env_t *env, oxs_sign_operation_t operation); /** @} */ #ifdef __cplusplus } #endif #endif /* OXS_SIGN_CTX_H */