|
Lines 1048-1059
mm_answer_keyverify(int sock, struct sshbuf *m)
Link Here
|
| 1048 |
{ |
1048 |
{ |
| 1049 |
struct sshkey *key; |
1049 |
struct sshkey *key; |
| 1050 |
u_char *signature, *data, *blob; |
1050 |
u_char *signature, *data, *blob; |
|
|
1051 |
char *sigalg; |
| 1051 |
size_t signaturelen, datalen, bloblen; |
1052 |
size_t signaturelen, datalen, bloblen; |
| 1052 |
int r, ret, valid_data = 0, encoded_ret; |
1053 |
int r, ret, valid_data = 0, encoded_ret; |
| 1053 |
|
1054 |
|
| 1054 |
if ((r = sshbuf_get_string(m, &blob, &bloblen)) != 0 || |
1055 |
if ((r = sshbuf_get_string(m, &blob, &bloblen)) != 0 || |
| 1055 |
(r = sshbuf_get_string(m, &signature, &signaturelen)) != 0 || |
1056 |
(r = sshbuf_get_string(m, &signature, &signaturelen)) != 0 || |
| 1056 |
(r = sshbuf_get_string(m, &data, &datalen)) != 0) |
1057 |
(r = sshbuf_get_string(m, &data, &datalen)) != 0 || |
|
|
1058 |
(r = sshbuf_get_cstring(m, &sigalg, NULL)) != 0) |
| 1057 |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
1059 |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
| 1058 |
|
1060 |
|
| 1059 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
1061 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
|
Lines 1082-1088
mm_answer_keyverify(int sock, struct sshbuf *m)
Link Here
|
| 1082 |
fatal("%s: bad signature data blob", __func__); |
1084 |
fatal("%s: bad signature data blob", __func__); |
| 1083 |
|
1085 |
|
| 1084 |
ret = sshkey_verify(key, signature, signaturelen, data, datalen, |
1086 |
ret = sshkey_verify(key, signature, signaturelen, data, datalen, |
| 1085 |
active_state->compat); |
1087 |
sigalg, active_state->compat); |
| 1086 |
debug3("%s: %s %p signature %s", __func__, auth_method, key, |
1088 |
debug3("%s: %s %p signature %s", __func__, auth_method, key, |
| 1087 |
(ret == 0) ? "verified" : "unverified"); |
1089 |
(ret == 0) ? "verified" : "unverified"); |
| 1088 |
auth2_record_key(authctxt, ret == 0, key); |
1090 |
auth2_record_key(authctxt, ret == 0, key); |