#ifndef AWS_IO_PKCS11_H
#define AWS_IO_PKCS11_H
#include <aws/io/io.h>
struct aws_allocator;
struct aws_pkcs11_lib;
enum aws_pkcs11_lib_behavior {
AWS_PKCS11_LIB_DEFAULT_BEHAVIOR,
AWS_PKCS11_LIB_OMIT_INITIALIZE,
AWS_PKCS11_LIB_STRICT_INITIALIZE_FINALIZE,
};
#define aws_pcks11_lib_behavior aws_pkcs11_lib_behavior
struct aws_pkcs11_lib_options {
struct aws_byte_cursor filename;
enum aws_pkcs11_lib_behavior initialize_finalize_behavior;
};
AWS_EXTERN_C_BEGIN
AWS_IO_API
struct aws_pkcs11_lib *aws_pkcs11_lib_new(
struct aws_allocator *allocator,
const struct aws_pkcs11_lib_options *options);
AWS_IO_API
struct aws_pkcs11_lib *aws_pkcs11_lib_acquire(struct aws_pkcs11_lib *pkcs11_lib);
AWS_IO_API
void aws_pkcs11_lib_release(struct aws_pkcs11_lib *pkcs11_lib);
AWS_EXTERN_C_END
#endif