|
Lines 1318-1326
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1318 |
Key *key; |
1318 |
Key *key; |
| 1319 |
u_char *signature, *data, *blob; |
1319 |
u_char *signature, *data, *blob; |
| 1320 |
u_int signaturelen, datalen, bloblen; |
1320 |
u_int signaturelen, datalen, bloblen; |
|
|
1321 |
int type = 0; |
| 1321 |
int verified = 0; |
1322 |
int verified = 0; |
| 1322 |
int valid_data = 0; |
1323 |
int valid_data = 0; |
| 1323 |
|
1324 |
|
|
|
1325 |
type = buffer_get_int(m); |
| 1324 |
blob = buffer_get_string(m, &bloblen); |
1326 |
blob = buffer_get_string(m, &bloblen); |
| 1325 |
signature = buffer_get_string(m, &signaturelen); |
1327 |
signature = buffer_get_string(m, &signaturelen); |
| 1326 |
data = buffer_get_string(m, &datalen); |
1328 |
data = buffer_get_string(m, &datalen); |
|
Lines 1328-1333
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1328 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
1330 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
| 1329 |
!monitor_allowed_key(blob, bloblen)) |
1331 |
!monitor_allowed_key(blob, bloblen)) |
| 1330 |
fatal("%s: bad key, not previously allowed", __func__); |
1332 |
fatal("%s: bad key, not previously allowed", __func__); |
|
|
1333 |
if (type != key_blobtype) |
| 1334 |
fatal("%s: bad key type", __func__); |
| 1331 |
|
1335 |
|
| 1332 |
key = key_from_blob(blob, bloblen); |
1336 |
key = key_from_blob(blob, bloblen); |
| 1333 |
if (key == NULL) |
1337 |
if (key == NULL) |
|
Lines 1348-1354
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1348 |
if (!valid_data) |
1352 |
if (!valid_data) |
| 1349 |
fatal("%s: bad signature data blob", __func__); |
1353 |
fatal("%s: bad signature data blob", __func__); |
| 1350 |
|
1354 |
|
| 1351 |
verified = key_verify(key, signature, signaturelen, data, datalen); |
1355 |
switch (key_blobtype) { |
|
|
1356 |
case MM_USERKEY: |
| 1357 |
verified = user_key_verify(key, signature, signaturelen, data, datalen); |
| 1358 |
break; |
| 1359 |
case MM_HOSTKEY: |
| 1360 |
verified = hostbased_key_verify(key, signature, signaturelen, data, datalen); |
| 1361 |
break; |
| 1362 |
default: |
| 1363 |
verified = 0; |
| 1364 |
break; |
| 1365 |
} |
| 1352 |
debug3("%s: key %p signature %s", |
1366 |
debug3("%s: key %p signature %s", |
| 1353 |
__func__, key, (verified == 1) ? "verified" : "unverified"); |
1367 |
__func__, key, (verified == 1) ? "verified" : "unverified"); |
| 1354 |
|
1368 |
|