89#define YH_CONTEXT_LEN 16
91#define YH_HOST_CHAL_LEN 8
93#define YH_MSG_BUF_SIZE 2048
101#define YH_CMD_RESP_FLAG 0x80
103#define YH_MAX_ITEMS_COUNT 256
105#define YH_MAX_SESSIONS 16
107#define YH_DEFAULT_ENC_KEY \
108 "\x09\x0b\x47\xdb\xed\x59\x56\x54\x90\x1d\xee\x1c\xc6\x55\xe4\x20"
110#define YH_DEFAULT_MAC_KEY \
111 "\x59\x2f\xd4\x83\xf7\x59\xe2\x99\x09\xa0\x4c\x45\x05\xd2\xce\x0a"
113#define YH_DEFAULT_PASSWORD "password"
115#define YH_DEFAULT_SALT "Yubico"
117#define YH_DEFAULT_ITERS 10000
119#define YH_CAPABILITIES_LEN 8
121#define YH_MAX_LOG_ENTRIES 64
123#define YH_OBJ_LABEL_LEN 40
125#define YH_MAX_DOMAINS 16
127#define YH_LOG_DIGEST_SIZE 16
129#define YH_USB_URL_SCHEME "yhusb://"
133#define YH_VERB_QUIET 0x00
135#define YH_VERB_INTERMEDIATE 0x01
137#define YH_VERB_CRYPTO 0x02
139#define YH_VERB_RAW 0x04
141#define YH_VERB_INFO 0x08
143#define YH_VERB_ERR 0x10
145#define YH_VERB_ALL 0xff
149#define YH_CCM_WRAP_OVERHEAD (1 + 13 + 16)
238#define ADD_COMMAND(c, v) c = v, c##_R = v | YH_CMD_RESP_FLAG
329 ADD_COMMAND(YHC_SIGN_ATTESTATION_CERTIFICATE, 0x64),
383#define YH_MAX_ALGORITHM_COUNT 0xff
568 {
"change-authentication-key", 0x2e},
569 {
"create-otp-aead", 0x1e},
570 {
"decrypt-oaep", 0x0a},
571 {
"decrypt-otp", 0x1d},
572 {
"decrypt-pkcs", 0x09},
573 {
"delete-asymmetric-key", 0x29},
574 {
"delete-authentication-key", 0x28},
575 {
"delete-hmac-key", 0x2b},
576 {
"delete-opaque", 0x27},
577 {
"delete-otp-aead-key", 0x2d},
578 {
"delete-template", 0x2c},
579 {
"delete-wrap-key", 0x2a},
580 {
"derive-ecdh", 0x0b},
581 {
"export-wrapped", 0x0c},
582 {
"exportable-under-wrap", 0x10},
583 {
"generate-asymmetric-key", 0x04},
584 {
"generate-hmac-key", 0x15},
585 {
"generate-otp-aead-key", 0x24},
586 {
"generate-wrap-key", 0x0f},
587 {
"get-log-entries", 0x18},
588 {
"get-opaque", 0x00},
589 {
"get-option", 0x12},
590 {
"get-pseudo-random", 0x13},
591 {
"get-template", 0x1a},
592 {
"import-wrapped", 0x0d},
593 {
"put-asymmetric-key", 0x03},
594 {
"put-authentication-key", 0x02},
595 {
"put-mac-key", 0x14},
596 {
"put-opaque", 0x01},
597 {
"put-otp-aead-key", 0x23},
598 {
"put-template", 0x1b},
599 {
"put-wrap-key", 0x0e},
600 {
"randomize-otp-aead", 0x1f},
601 {
"reset-device", 0x1c},
602 {
"rewrap-from-otp-aead-key", 0x20},
603 {
"rewrap-to-otp-aead-key", 0x21},
604 {
"set-option", 0x11},
605 {
"sign-attestation-certificate", 0x22},
606 {
"sign-ecdsa", 0x07},
607 {
"sign-eddsa", 0x08},
611 {
"sign-ssh-certificate", 0x19},
612 {
"unwrap-data", 0x26},
613 {
"verify-hmac", 0x17},
692#define YH_ORIGIN_GENERATED 0x01
694#define YH_ORIGIN_IMPORTED 0x02
697#define YH_ORIGIN_IMPORTED_WRAPPED 0x10
834 const uint8_t *data,
size_t data_len,
836 size_t *response_len);
853 size_t data_len,
yh_cmd *response_cmd,
854 uint8_t *response,
size_t *response_len);
881 const uint8_t *password,
size_t password_len,
910 const uint8_t *key_enc,
size_t key_enc_len,
911 const uint8_t *key_mac,
size_t key_mac_len,
939 size_t card_cryptogram_len,
971 const uint8_t *key_senc,
size_t key_senc_len,
972 const uint8_t *key_smac,
size_t key_smac_len,
974 size_t key_srmac_len,
976 size_t card_cryptogram_len);
1435 const uint8_t *signature,
size_t signature_len,
1436 const uint8_t *data,
size_t data_len,
bool *verified);
1777 size_t key_enc_len,
const uint8_t *key_mac,
size_t key_mac_len);
1805 size_t password_len);
1831 size_t key_mac_len);
1854 size_t password_len);
1949 const uint8_t *aead,
size_t aead_len,
2219 const char *result[],
size_t *n_result);
2243 const char *capability);
CK_SESSION_HANDLE session
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Capabilities representation.
uint16_t second_key
ID of second Object used.
uint8_t result
Command result.
uint32_t systick
Systick at time of execution.
uint16_t session_key
ID of Authentication Key used.
uint16_t target_key
ID of first Object used.
uint16_t length
Length of in-data.
uint8_t command
What command was executed.
uint16_t number
Monotonically increasing index.
uint16_t domains
Object domains.
yh_algorithm algorithm
Object algorithm.
uint16_t len
Object length.
uint8_t sequence
Object sequence.
yh_capabilities capabilities
Object capabilities.
yh_capabilities delegated_capabilities
Object delegated capabilities.
uint8_t origin
Object origin.
yh_object_type type
Object type.
bool yh_verify_logs(yh_log_entry *logs, size_t n_items, yh_log_entry *last_previous_log)
yh_rc yh_domains_to_string(uint16_t domains, char *string, size_t max_len)
bool yh_is_rsa(yh_algorithm algorithm)
yh_rc yh_util_get_option(yh_session *session, yh_option option, uint8_t *out, size_t *out_len)
yh_rc yh_util_import_opaque(yh_session *session, uint16_t *object_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *in, size_t in_len)
bool yh_connector_has_device(yh_connector *connector)
bool yh_is_ed(yh_algorithm algorithm)
yh_rc yh_get_verbosity(uint8_t *verbosity)
yh_rc yh_util_import_hmac_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *key, size_t key_len)
yh_rc yh_destroy_session(yh_session **session)
yh_rc yh_util_generate_hmac_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm)
yh_rc yh_util_generate_wrap_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const yh_capabilities *delegated_capabilities)
const char * yh_strerror(yh_rc err)
yh_rc yh_set_verbosity(yh_connector *connector, uint8_t verbosity)
#define YH_LOG_DIGEST_SIZE
Size that the log digest is truncated to.
yh_rc yh_util_derive_ecdh(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_begin_create_session_ext(yh_connector *connector, uint16_t authkey_id, uint8_t **context, uint8_t *card_cryptogram, size_t card_cryptogram_len, yh_session **session)
yh_rc yh_algo_to_string(yh_algorithm algo, char const **result)
yh_rc yh_get_connector_version(yh_connector *connector, uint8_t *major, uint8_t *minor, uint8_t *patch)
yh_rc yh_util_generate_ec_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm)
@ YH_OTP_AEAD_KEY
OTP AEAD Key is a secret key used to decrypt Yubico OTP values.
@ YH_HMAC_KEY
HMAC Key is a secret key used when computing and verifying HMAC signatures.
@ YH_ASYMMETRIC_KEY
Asymmetric Key is the private key of an asymmetric key-pair.
@ YH_AUTHENTICATION_KEY
Authentication Key is used to establish Sessions with a device.
bool yh_is_ec(yh_algorithm algorithm)
yh_rc yh_util_decrypt_otp(yh_session *session, uint16_t key_id, const uint8_t *aead, size_t aead_len, const uint8_t *otp, uint16_t *useCtr, uint8_t *sessionCtr, uint8_t *tstph, uint16_t *tstpl)
yh_rc yh_get_key_bitlength(yh_algorithm algorithm, size_t *result)
yh_rc yh_util_import_wrap_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const yh_capabilities *delegated_capabilities, const uint8_t *in, size_t in_len)
yh_rc yh_util_generate_ed_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm)
#define YH_OBJ_LABEL_LEN
Max length of object labels.
yh_rc yh_util_sign_ssh_certificate(yh_session *session, uint16_t key_id, uint16_t template_id, yh_algorithm sig_algo, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_get_template(yh_session *session, uint16_t object_id, uint8_t *out, size_t *out_len)
@ YH_ALGO_MGF1_SHA512
mgf1-sha512
@ YH_ALGO_RSA_PSS_SHA384
rsa-pss-sha384
@ YH_ALGO_RSA_PKCS1_SHA256
rsa-pkcs1-sha256
@ YH_ALGO_RSA_PKCS1_SHA1
rsa-pkcs1-sha1
@ YH_ALGO_RSA_PSS_SHA512
rsa-pss-sha512
@ YH_ALGO_EC_BP384
ecbp384
@ YH_ALGO_RSA_PSS_SHA1
rsa-pss-sha1
@ YH_ALGO_EC_ECDSA_SHA256
ecdsa-sha256
@ YH_ALGO_EC_ECDSA_SHA512
ecdsa-sha512
@ YH_ALGO_AES128_YUBICO_AUTHENTICATION
aes128-yubico-authentication
@ YH_ALGO_RSA_OAEP_SHA256
rsa-oaep-sha256
@ YH_ALGO_OPAQUE_X509_CERTIFICATE
opaque-x509-certificate
@ YH_ALGO_AES192_YUBICO_OTP
aes192-yubico-otp
@ YH_ALGO_AES128_YUBICO_OTP
aes128-yubico-otp
@ YH_ALGO_EC_ECDSA_SHA384
ecdsa-sha384
@ YH_ALGO_EC_ED25519
ed25519
@ YH_ALGO_HMAC_SHA512
hmac-sha512
@ YH_ALGO_HMAC_SHA384
hmac-sha384
@ YH_ALGO_MGF1_SHA384
mgf1-sha384
@ YH_ALGO_RSA_PKCS1_SHA512
rsa-pkcs1-sha512
@ YH_ALGO_AES256_CCM_WRAP
aes256-ccm-wrap
@ YH_ALGO_HMAC_SHA1
hmac-sha1
@ YH_ALGO_RSA_OAEP_SHA512
rsa-oaep-sha512
@ YH_ALGO_RSA_2048
rsa2048
@ YH_ALGO_HMAC_SHA256
hmac-sha256
@ YH_ALGO_RSA_OAEP_SHA384
rsa-oaep-sha384
@ YH_ALGO_OPAQUE_DATA
opaque-data
@ YH_ALGO_AES192_CCM_WRAP
aes192-ccm-wrap
@ YH_ALGO_EC_BP512
ecbp512
@ YH_ALGO_EC_BP256
ecbp256
@ YH_ALGO_RSA_PSS_SHA256
rsa-pss-sha256
@ YH_ALGO_AES256_YUBICO_OTP
aes256-yubico-otp
@ YH_ALGO_TEMPLATE_SSH
template-ssh
@ YH_ALGO_MGF1_SHA1
mgf1-sha1
@ YH_ALGO_AES128_CCM_WRAP
aes128-ccm-wrap
@ YH_ALGO_MGF1_SHA256
mgf1-sha256
@ YH_ALGO_RSA_4096
rsa4096
@ YH_ALGO_EC_ECDSA_SHA1
ecdsa-sha1
@ YH_ALGO_RSA_OAEP_SHA1
rsa-oaep-sha1
@ YH_ALGO_RSA_PKCS1_SHA384
rsa-pkcs1-sha384
@ YH_ALGO_RSA_3072
rsa3072
yh_rc yh_util_randomize_otp_aead(yh_session *session, uint16_t key_id, uint8_t *out, size_t *out_len)
yh_rc yh_send_secure_msg(yh_session *session, yh_cmd cmd, const uint8_t *data, size_t data_len, yh_cmd *response_cmd, uint8_t *response, size_t *response_len)
yh_rc yh_create_session_derived(yh_connector *connector, uint16_t authkey_id, const uint8_t *password, size_t password_len, bool recreate_session, yh_session **session)
yh_rc yh_util_sign_ecdsa(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_string_to_option(const char *string, yh_option *option)
yh_rc yh_util_unwrap_data(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_get_opaque(yh_session *session, uint16_t object_id, uint8_t *out, size_t *out_len)
yh_rc yh_string_to_type(const char *string, yh_object_type *type)
@ YH_CONNECTOR_PROXY_SERVER
yh_rc yh_util_sign_attestation_certificate(yh_session *session, uint16_t key_id, uint16_t attest_id, uint8_t *out, size_t *out_len)
yh_rc yh_util_get_log_entries(yh_session *session, uint16_t *unlogged_boot, uint16_t *unlogged_auth, yh_log_entry *out, size_t *n_items)
yh_rc yh_util_reset_device(yh_session *session)
yh_rc yh_util_decrypt_pkcs1v1_5(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_close_session(yh_session *session)
#define ADD_COMMAND(c, v)
Macro to define command and response command.
yh_rc yh_util_sign_eddsa(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_get_device_info(yh_connector *connector, uint8_t *major, uint8_t *minor, uint8_t *patch, uint32_t *serial, uint8_t *log_total, uint8_t *log_used, yh_algorithm *algorithms, size_t *n_algorithms)
yh_rc yh_authenticate_session(yh_session *session)
yh_rc yh_send_plain_msg(yh_connector *connector, yh_cmd cmd, const uint8_t *data, size_t data_len, yh_cmd *response_cmd, uint8_t *response, size_t *response_len)
yh_rc yh_util_import_ed_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *k)
yh_rc yh_util_get_object_info(yh_session *session, uint16_t id, yh_object_type type, yh_object_descriptor *object)
yh_rc yh_util_wrap_data(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_list_objects(yh_session *session, uint16_t id, yh_object_type type, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const char *label, yh_object_descriptor *objects, size_t *n_objects)
void yh_set_debug_output(yh_connector *connector, FILE *output)
yh_rc yh_util_import_authentication_key_derived(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, const yh_capabilities *delegated_capabilities, const uint8_t *password, size_t password_len)
yh_rc yh_util_create_otp_aead(yh_session *session, uint16_t key_id, const uint8_t *key, const uint8_t *private_id, uint8_t *out, size_t *out_len)
yh_rc yh_util_set_option(yh_session *session, yh_option option, size_t len, uint8_t *val)
yh_rc yh_util_change_authentication_key_derived(yh_session *session, uint16_t *key_id, const uint8_t *password, size_t password_len)
yh_rc yh_util_change_authentication_key(yh_session *session, uint16_t *key_id, const uint8_t *key_enc, size_t key_enc_len, const uint8_t *key_mac, size_t key_mac_len)
yh_rc yh_filter_capabilities(const yh_capabilities *capabilities, const yh_capabilities *filter, yh_capabilities *result)
yh_rc yh_util_sign_hmac(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_util_sign_pss(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len, size_t salt_len, yh_algorithm mgf1Algo)
yh_rc yh_string_to_domains(const char *domains, uint16_t *result)
yh_rc yh_set_connector_option(yh_connector *connector, yh_connector_option opt, const void *val)
yh_rc yh_init_connector(const char *url, yh_connector **connector)
yh_rc yh_util_set_log_index(yh_session *session, uint16_t index)
yh_rc yh_util_generate_otp_aead_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, uint32_t nonce_id)
yh_rc yh_util_sign_pkcs1v1_5(yh_session *session, uint16_t key_id, bool hashed, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
yh_rc yh_connect(yh_connector *connector, int timeout)
yh_rc yh_util_export_wrapped(yh_session *session, uint16_t wrapping_key_id, yh_object_type target_type, uint16_t target_id, uint8_t *out, size_t *out_len)
yh_rc yh_util_get_public_key(yh_session *session, uint16_t id, uint8_t *data, size_t *data_len, yh_algorithm *algorithm)
yh_rc yh_util_decrypt_oaep(yh_session *session, uint16_t key_id, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len, const uint8_t *label, size_t label_len, yh_algorithm mgf1Algo)
yh_rc yh_string_to_capabilities(const char *capability, yh_capabilities *result)
yh_rc yh_string_to_algo(const char *string, yh_algorithm *algo)
yh_rc yh_util_import_rsa_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *p, const uint8_t *q)
yh_rc yh_disconnect(yh_connector *connector)
yh_rc yh_util_generate_rsa_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm)
yh_rc yh_util_verify_hmac(yh_session *session, uint16_t key_id, const uint8_t *signature, size_t signature_len, const uint8_t *data, size_t data_len, bool *verified)
bool yh_check_capability(const yh_capabilities *capabilities, const char *capability)
yh_rc yh_create_session(yh_connector *connector, uint16_t authkey_id, const uint8_t *key_enc, size_t key_enc_len, const uint8_t *key_mac, size_t key_mac_len, bool recreate_session, yh_session **session)
yh_rc yh_util_import_authentication_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, const yh_capabilities *delegated_capabilities, const uint8_t *key_enc, size_t key_enc_len, const uint8_t *key_mac, size_t key_mac_len)
yh_rc yh_capabilities_to_strings(const yh_capabilities *num, const char *result[], size_t *n_result)
bool yh_is_hmac(yh_algorithm algorithm)
yh_rc yh_get_connector_address(yh_connector *connector, char **const address)
@ YH_OPTION_FORCE_AUDIT
Enable/Disable Forced Audit mode.
@ YH_OPTION_COMMAND_AUDIT
Enable/Disable logging of specific commands.
yh_rc yh_util_blink_device(yh_session *session, uint8_t seconds)
#define YH_CAPABILITIES_LEN
Length of capabilities array.
yh_rc yh_util_import_ec_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *s)
yh_rc yh_util_import_otp_aead_key(yh_session *session, uint16_t *key_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, uint32_t nonce_id, const uint8_t *in, size_t in_len)
yh_rc yh_util_import_template(yh_session *session, uint16_t *object_id, const char *label, uint16_t domains, const yh_capabilities *capabilities, yh_algorithm algorithm, const uint8_t *in, size_t in_len)
@ YHR_INIT_ERROR
Returned value when failing to initialize libyubihsm.
@ YHR_DEVICE_INSUFFICIENT_PERMISSIONS
Return value when the permissions to perform the operation are wrong.
@ YHR_DEVICE_INVALID_SESSION
Returned value when the device session is invalid.
@ YHR_GENERIC_ERROR
Return value when encountering an unknown error.
@ YHR_SUCCESS
Returned value when function was successful.
@ YHR_DEVICE_COMMAND_UNEXECUTED
Return value when the command execution has not terminated.
@ YHR_INVALID_PARAMETERS
Returned value when an argument to a function is invalid.
@ YHR_MEMORY_ERROR
Returned value when unable to allocate memory.
@ YHR_DEVICE_INVALID_COMMAND
Returned value when the device receives and invalid command.
@ YHR_DEVICE_SESSIONS_FULL
Return value when no more sessions can be opened on the device.
@ YHR_DEVICE_SESSION_FAILED
Return value when failing to create a device session.
@ YHR_DEVICE_OBJECT_NOT_FOUND
Return value when the object not found on the device.
@ YHR_DEVICE_AUTHENTICATION_FAILED
Return value when the device fails to encrypt or verify the message.
@ YHR_DEVICE_LOG_FULL
Return value when the log buffer is full and forced audit is set.
@ YHR_DEVICE_INVALID_OTP
Return value when an invalid OTP is submitted.
@ YHR_DEVICE_DEMO_MODE
Return value when the device is in demo mode and has to be power cycled.
@ YHR_DEVICE_INVALID_DATA
Returned value when the device receives a malformed command invalid data.
@ YHR_CONNECTOR_NOT_FOUND
Returned value when failing to find a suitable connector.
@ YHR_DEVICE_STORAGE_FAILED
Return value when encountering a storage failure on the device.
@ YHR_DEVICE_OBJECT_EXISTS
Return value when trying to add an object with an ID that already exists.
@ YHR_BUFFER_TOO_SMALL
Returned value when there is not enough space to store data.
@ YHR_CONNECTOR_ERROR
Return value when connector operation failed.
@ YHR_MAC_MISMATCH
Returned value when failing to verify MAC.
@ YHR_DEVICE_WRONG_LENGTH
@ YHR_CONNECTION_ERROR
Returned value when a connection error was encountered.
@ YHR_DEVICE_SSH_CA_CONSTRAINT_VIOLATION
Return value when encountering SSH CA constraint violation.
@ YHR_DEVICE_OK
Returned value when the device returned no error.
@ YHR_DEVICE_INVALID_ID
Return value when an invalid Object ID is used.
@ YHR_SESSION_AUTHENTICATION_FAILED
Returned value when failing to authenticate the session.
@ YHR_CRYPTOGRAM_MISMATCH
Returned value when failing to verify cryptogram.
yh_rc yh_util_import_wrapped(yh_session *session, uint16_t wrapping_key_id, const uint8_t *in, size_t in_len, yh_object_type *target_type, uint16_t *target_id)
yh_rc yh_util_delete_object(yh_session *session, uint16_t id, yh_object_type type)
yh_rc yh_util_get_storage_info(yh_session *session, uint16_t *total_records, uint16_t *free_records, uint16_t *total_pages, uint16_t *free_pages, uint16_t *page_size)
yh_rc yh_get_session_id(yh_session *session, uint8_t *sid)
yh_rc yh_util_get_pseudo_random(yh_session *session, size_t len, uint8_t *out, size_t *out_len)
yh_rc yh_finish_create_session_ext(yh_connector *connector, yh_session *session, const uint8_t *key_senc, size_t key_senc_len, const uint8_t *key_smac, size_t key_smac_len, const uint8_t *key_srmac, size_t key_srmac_len, uint8_t *card_cryptogram, size_t card_cryptogram_len)
yh_rc yh_merge_capabilities(const yh_capabilities *a, const yh_capabilities *b, yh_capabilities *result)
yh_rc yh_type_to_string(yh_object_type type, char const **result)
yh_capabilities capabilities
yh_object_type target_type
session operation op find n_objects
session operation op sign key_len
yh_capabilities delegated_capabilities