add feature-key-keeper

This commit is contained in:
崔一鸣
2018-09-04 15:47:41 +08:00
parent b87a9db3dc
commit 636e41cfca
7 changed files with 904 additions and 167 deletions

View File

@@ -1,8 +1,10 @@
#pragma once
#include <openssl/ssl.h>
#include "ssl_utils.h"
#include <pthread.h>
#include <tfe_future.h>
#include "tfe_future.h"
#include "tfe_utils.h"
#include "MESA/MESA_htable.h"
#include "event2/event.h"
struct keyring
{
@@ -10,11 +12,41 @@ struct keyring
X509 *cert;
STACK_OF(X509) * chain;
};
struct key_keeper;
struct key_keeper
{
unsigned int mode;
char cert_store_host[TFE_STRING_MAX];
unsigned int cert_store_port;
MESA_htable_handle htable;
void* logger;
};
struct key_keeper * key_keeper_init(const char * profile, const char* section, void* logger);
struct key_keeper * key_keeper_destroy(struct key_keeper *keeper);
struct keyring* key_keeper_release_cert(future_result_t* result);
struct keyring* key_keeper_keyring_new(void);
struct keyring* key_keeper_keyring_new3(EVP_PKEY *key, X509 *cert, STACK_OF(X509) *chain);
void key_keeper_free_keyring(struct keyring* cert);
void key_keeper_async_ask(struct future * f, struct key_keeper * keeper, int keyring_id,
X509 * origin_cert, int is_cert_valid, struct event_base * evbase);
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();

View File

@@ -0,0 +1,35 @@
#pragma once
#include "tfe_future.h"
#include "event2/event.h"
struct tfe_rpc_response_result{
int status_code;
const char* status_msg;
const char* data;
int len;
};
enum TFE_RPC_FLAG
{
CHUNK_CB = 0,
DONE_CB,
};
enum TFE_RPC_METHOD
{
GET = 0,
POST,
};
struct tfe_rpc
{
void* logger;
};
struct tfe_rpc* tfe_rpc_init(const char * profile, const char* section, void* logger);
struct tfe_rpc* tfe_rpc_destroy(struct tfe_rpc *rpc);
struct tfe_rpc_response_result* tfe_rpc_release(void* result);
void tfe_rpc_async_ask(struct future* f, struct tfe_rpc* rpc, const char* url, int method, int flag, const char* data, int data_len, struct event_base * evbase);