version 1.11, 2019/11/13 20:25:45 |
version 1.12, 2019/11/14 21:27:30 |
|
|
uint8_t flags, struct sk_sign_response **sign_response); |
uint8_t flags, struct sk_sign_response **sign_response); |
}; |
}; |
|
|
|
/* Built-in version */ |
|
int ssh_sk_enroll(int alg, const uint8_t *challenge, |
|
size_t challenge_len, const char *application, uint8_t flags, |
|
struct sk_enroll_response **enroll_response); |
|
int ssh_sk_sign(int alg, const uint8_t *message, size_t message_len, |
|
const char *application, |
|
const uint8_t *key_handle, size_t key_handle_len, |
|
uint8_t flags, struct sk_sign_response **sign_response); |
|
|
static void |
static void |
sshsk_free(struct sshsk_provider *p) |
sshsk_free(struct sshsk_provider *p) |
{ |
{ |
|
|
if ((ret->path = strdup(path)) == NULL) { |
if ((ret->path = strdup(path)) == NULL) { |
error("%s: strdup failed", __func__); |
error("%s: strdup failed", __func__); |
goto fail; |
goto fail; |
|
} |
|
/* Skip the rest if we're using the linked in middleware */ |
|
if (strcasecmp(ret->path, "internal") == 0) { |
|
ret->sk_enroll = ssh_sk_enroll; |
|
ret->sk_sign = ssh_sk_sign; |
|
return ret; |
} |
} |
if ((ret->dlhandle = dlopen(path, RTLD_NOW)) == NULL) { |
if ((ret->dlhandle = dlopen(path, RTLD_NOW)) == NULL) { |
error("Security key provider %s dlopen failed: %s", |
error("Security key provider %s dlopen failed: %s", |