version 1.2.4.2, 2020/04/08 14:03:18 |
version 1.3, 2020/12/04 18:42:50 |
|
|
/* $NetBSD$ */ |
/* $NetBSD$ */ |
/* $OpenBSD: ssh-sk-helper.c,v 1.9 2020/01/25 23:13:09 djm Exp $ */ |
/* $OpenBSD: ssh-sk-helper.c,v 1.10 2020/05/26 01:59:46 djm Exp $ */ |
|
|
/* |
/* |
* Copyright (c) 2019 Google LLC |
* Copyright (c) 2019 Google LLC |
* |
* |
Line 93 process_sign(struct sshbuf *req) |
|
Line 94 process_sign(struct sshbuf *req) |
|
{ |
{ |
int r = SSH_ERR_INTERNAL_ERROR; |
int r = SSH_ERR_INTERNAL_ERROR; |
struct sshbuf *resp, *kbuf; |
struct sshbuf *resp, *kbuf; |
struct sshkey *key; |
struct sshkey *key = NULL; |
uint32_t compat; |
uint32_t compat; |
const u_char *message; |
const u_char *message; |
u_char *sig; |
u_char *sig = NULL; |
size_t msglen, siglen; |
size_t msglen, siglen = 0; |
char *provider, *pin; |
char *provider = NULL, *pin = NULL; |
|
|
if ((r = sshbuf_froms(req, &kbuf)) != 0 || |
if ((r = sshbuf_froms(req, &kbuf)) != 0 || |
(r = sshbuf_get_cstring(req, &provider, NULL)) != 0 || |
(r = sshbuf_get_cstring(req, &provider, NULL)) != 0 || |
Line 134 process_sign(struct sshbuf *req) |
|
Line 135 process_sign(struct sshbuf *req) |
|
(r = sshbuf_put_string(resp, sig, siglen)) != 0) |
(r = sshbuf_put_string(resp, sig, siglen)) != 0) |
fatal("%s: buffer error: %s", __progname, ssh_err(r)); |
fatal("%s: buffer error: %s", __progname, ssh_err(r)); |
out: |
out: |
|
sshkey_free(key); |
sshbuf_free(kbuf); |
sshbuf_free(kbuf); |
free(provider); |
free(provider); |
|
if (sig != NULL) |
|
freezero(sig, siglen); |
if (pin != NULL) |
if (pin != NULL) |
freezero(pin, strlen(pin)); |
freezero(pin, strlen(pin)); |
return resp; |
return resp; |