|
Lines 1208-1216
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1208 |
Key *key; |
1208 |
Key *key; |
| 1209 |
u_char *signature, *data, *blob; |
1209 |
u_char *signature, *data, *blob; |
| 1210 |
u_int signaturelen, datalen, bloblen; |
1210 |
u_int signaturelen, datalen, bloblen; |
|
|
1211 |
int type = 0; |
| 1211 |
int verified = 0; |
1212 |
int verified = 0; |
| 1212 |
int valid_data = 0; |
1213 |
int valid_data = 0; |
| 1213 |
|
1214 |
|
|
|
1215 |
type = buffer_get_int(m); |
| 1214 |
blob = buffer_get_string(m, &bloblen); |
1216 |
blob = buffer_get_string(m, &bloblen); |
| 1215 |
signature = buffer_get_string(m, &signaturelen); |
1217 |
signature = buffer_get_string(m, &signaturelen); |
| 1216 |
data = buffer_get_string(m, &datalen); |
1218 |
data = buffer_get_string(m, &datalen); |
|
Lines 1218-1223
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1218 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
1220 |
if (hostbased_cuser == NULL || hostbased_chost == NULL || |
| 1219 |
!monitor_allowed_key(blob, bloblen)) |
1221 |
!monitor_allowed_key(blob, bloblen)) |
| 1220 |
fatal("%s: bad key, not previously allowed", __func__); |
1222 |
fatal("%s: bad key, not previously allowed", __func__); |
|
|
1223 |
if (type != key_blobtype) |
| 1224 |
fatal("%s: bad key type", __func__); |
| 1221 |
|
1225 |
|
| 1222 |
key = key_from_blob(blob, bloblen); |
1226 |
key = key_from_blob(blob, bloblen); |
| 1223 |
if (key == NULL) |
1227 |
if (key == NULL) |
|
Lines 1238-1244
mm_answer_keyverify(int sock, Buffer *m)
Link Here
|
| 1238 |
if (!valid_data) |
1242 |
if (!valid_data) |
| 1239 |
fatal("%s: bad signature data blob", __func__); |
1243 |
fatal("%s: bad signature data blob", __func__); |
| 1240 |
|
1244 |
|
| 1241 |
verified = key_verify(key, signature, signaturelen, data, datalen); |
1245 |
switch (key_blobtype) { |
|
|
1246 |
case MM_USERKEY: |
| 1247 |
verified = user_key_verify(key, signature, signaturelen, data, datalen); |
| 1248 |
break; |
| 1249 |
case MM_HOSTKEY: |
| 1250 |
verified = hostbased_key_verify(key, signature, signaturelen, data, datalen); |
| 1251 |
break; |
| 1252 |
default: |
| 1253 |
verified = 0; |
| 1254 |
break; |
| 1255 |
} |
| 1242 |
debug3("%s: key %p signature %s", |
1256 |
debug3("%s: key %p signature %s", |
| 1243 |
__func__, key, (verified == 1) ? "verified" : "unverified"); |
1257 |
__func__, key, (verified == 1) ? "verified" : "unverified"); |
| 1244 |
|
1258 |
|