2018-08-27 21:10:45 +08:00
|
|
|
#pragma once
|
2018-09-04 15:47:41 +08:00
|
|
|
#include "ssl_utils.h"
|
2018-08-26 18:26:24 +08:00
|
|
|
#include <pthread.h>
|
2018-09-04 15:47:41 +08:00
|
|
|
#include "tfe_future.h"
|
|
|
|
|
#include "tfe_utils.h"
|
|
|
|
|
#include "MESA/MESA_htable.h"
|
|
|
|
|
#include "event2/event.h"
|
2018-08-26 18:26:24 +08:00
|
|
|
|
|
|
|
|
struct keyring
|
|
|
|
|
{
|
|
|
|
|
EVP_PKEY *key;
|
|
|
|
|
X509 *cert;
|
|
|
|
|
STACK_OF(X509) * chain;
|
|
|
|
|
};
|
2018-09-04 15:47:41 +08:00
|
|
|
|
|
|
|
|
struct key_keeper
|
|
|
|
|
{
|
|
|
|
|
unsigned int mode;
|
|
|
|
|
char cert_store_host[TFE_STRING_MAX];
|
|
|
|
|
unsigned int cert_store_port;
|
|
|
|
|
MESA_htable_handle htable;
|
|
|
|
|
void* logger;
|
|
|
|
|
};
|
|
|
|
|
|
2018-08-26 18:26:24 +08:00
|
|
|
struct key_keeper * key_keeper_init(const char * profile, const char* section, void* logger);
|
2018-09-04 15:47:41 +08:00
|
|
|
|
2018-08-26 18:26:24 +08:00
|
|
|
struct key_keeper * key_keeper_destroy(struct key_keeper *keeper);
|
|
|
|
|
|
|
|
|
|
struct keyring* key_keeper_release_cert(future_result_t* result);
|
2018-09-04 15:47:41 +08:00
|
|
|
|
|
|
|
|
struct keyring* key_keeper_keyring_new(void);
|
|
|
|
|
|
|
|
|
|
struct keyring* key_keeper_keyring_new3(EVP_PKEY *key, X509 *cert, STACK_OF(X509) *chain);
|
|
|
|
|
|
2018-08-26 18:26:24 +08:00
|
|
|
void key_keeper_free_keyring(struct keyring* cert);
|
2018-09-04 15:47:41 +08:00
|
|
|
|
2018-08-27 21:10:45 +08:00
|
|
|
void key_keeper_async_ask(struct future * f, struct key_keeper * keeper, int keyring_id,
|
2018-09-04 15:47:41 +08:00
|
|
|
X509 * origin_cert, int is_cert_valid, struct event_base * evbase);
|
|
|
|
|
|
|
|
|
|
void key_keeper_keyring_refcount_inc(struct keyring* ring);
|
|
|
|
|
|
|
|
|
|
void key_keeper_keyring_set_cert(struct keyring* ring, X509 *cert);
|
|
|
|
|
|
|
|
|
|
void key_keeper_keyring_set_key(struct keyring* ring, EVP_PKEY *key);
|
|
|
|
|
|
|
|
|
|
void key_keeper_keyring_set_chain(struct keyring* ring, STACK_OF(X509) *chain);
|
|
|
|
|
|
|
|
|
|
static void key_keeper_free_serialized();
|
|
|
|
|
|
|
|
|
|
static void key_keeper_verify_cb();
|
|
|
|
|
|
|
|
|
|
|