#ifndef CLIENT_STORE_H
#define CLIENT_STORE_H
#include "cipher_store.h"
#include "key_store.h"
#include "mac_store.h"
#include "object_store.h"
#include "sa_types.h"
#include "svp_store.h"
#include "ta_sa_types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct client_s client_t;
key_store_t* client_get_key_store(const client_t* client);
cipher_store_t* client_get_cipher_store(const client_t* client);
mac_store_t* client_get_mac_store(const client_t* client);
svp_store_t* client_get_svp_store(const client_t* client);
typedef object_store_t client_store_t;
client_store_t* client_store_global();
sa_status client_store_add(
ta_client* client_slot,
client_store_t* store,
const sa_uuid* caller_uuid);
sa_status client_store_remove(
client_store_t* store,
ta_client client_slot,
const sa_uuid* caller_uuid);
sa_status client_store_acquire(
client_t** client,
client_store_t* store,
ta_client client_slot,
const sa_uuid* caller_uuid);
sa_status client_store_release(
client_store_t* store,
ta_client client_slot,
client_t* client,
const sa_uuid* caller_uuid);
#ifdef __cplusplus
}
#endif
#endif