"Fossies" - the Fresh Open Source Software Archive

Member "opendnssec-2.1.4/enforcer/src/hsmkey/hsm_key_factory.h" (16 May 2019, 4292 Bytes) of package /linux/misc/dns/opendnssec-2.1.4.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "hsm_key_factory.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright (c) 2014 .SE (The Internet Infrastructure Foundation).
    3  * Copyright (c) 2014 OpenDNSSEC AB (svb)
    4  * All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
   19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   21  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   23  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
   25  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   26  *
   27  */
   28 
   29 #ifndef _HSM_KEY_FACTORY_H_
   30 #define _HSM_KEY_FACTORY_H_
   31 
   32 #include "db/hsm_key.h"
   33 #include "db/policy_key.h"
   34 #include "daemon/engine.h"
   35 
   36 #include <time.h>
   37 
   38 void hsm_key_factory_deinit(void);
   39 /**
   40  * TODO
   41  * \return 0 success, 1 error
   42  */
   43 int hsm_key_factory_generate(engine_type* engine,
   44     const db_connection_t* connection, const policy_t* policy, const policy_key_t* policy_key,
   45     time_t duration);
   46 
   47 /**
   48  * TODO
   49  * \return 0 success, 1 error
   50  */
   51 int hsm_key_factory_generate_policy(engine_type* engine,
   52     const db_connection_t* connection, const policy_t* policy, time_t duration);
   53 
   54 /**
   55  * TODO
   56  * \return 0 success, 1 error
   57  */
   58 int hsm_key_factory_generate_all(engine_type* engine,
   59     const db_connection_t* connection, time_t duration);
   60 
   61 
   62 /**
   63  * Schedule a task to generate keys for a specific policy.
   64  * \param[in] engine an engine_type.
   65  * \prama[in] policy_orig a policy_t pointer to the policy we will generate keys
   66  * for.
   67  * \param[in] duration a time_t specifying the duration to generate keys from,
   68  * if its zero then the duration from conf.xml is taken.
   69  * \return non-zero on error.
   70  */
   71 int hsm_key_factory_schedule_generate_policy(engine_type* engine,
   72     const policy_t* policy_orig, time_t duration);
   73 
   74 /**
   75  * Schedule a task to generate keys for all policies and policy keys we
   76  * currently have.
   77  * \param[in] engine an engine_type.
   78  * \param[in] duration a time_t specifying the duration to generate keys from,
   79  * if its zero then the duration from conf.xml is taken.
   80  * \return non-zero on error.
   81  */
   82 int hsm_key_factory_schedule_generate_all(engine_type* engine, time_t duration);
   83 
   84 /**
   85  * Allocate a private or shared HSM key for the policy key provided. This will
   86  * also schedule a task for generating more keys if needed.
   87  * \param[in] engine an engine_type.
   88  * \param[in] connection a database connection.
   89  * \param[in] policy_key a policy key.
   90  * \param[in] hsm_key_state indicate if its a private or shared key that should
   91  * be fetched (HSM_KEY_STATE_PRIVATE | HSM_KEY_STATE_SHARED).
   92  * \return an allocated HSM key or NULL on error or if there are no unused keys
   93  * available for allocation right now.
   94  */
   95 hsm_key_t* hsm_key_factory_get_key(engine_type* engine,
   96     const db_connection_t* connection, const policy_key_t* policy_key,
   97     hsm_key_state_t hsm_key_state);
   98 
   99 /**
  100  * Release a key, if its not used anyore it will be marked DELETE.
  101  * \param[in] hsm_key_id a db_value_t pointer with the hsm_key database id.
  102  * \return non-zero on error.
  103  */
  104 int hsm_key_factory_release_key_id(const db_value_t* hsm_key_id,
  105     const db_connection_t* connection);
  106 
  107 /**
  108  * Release a key, if its not used anyore it will be marked DELETE.
  109  * \param[in] hsm_key a hsm_key_t pointer with the hsm_key to release.
  110  * \return non-zero on error.
  111  */
  112 int hsm_key_factory_release_key(hsm_key_t* hsm_key,
  113     const db_connection_t* connection);
  114 
  115 #endif /* _HSM_KEY_FACTORY_H_ */