|
Lines 2202-2210
newkeys_to_blob(struct sshbuf *m, struct ssh *ssh, int mode)
Link Here
|
| 2202 |
return r; |
2202 |
return r; |
| 2203 |
if ((b = sshbuf_new()) == NULL) |
2203 |
if ((b = sshbuf_new()) == NULL) |
| 2204 |
return SSH_ERR_ALLOC_FAIL; |
2204 |
return SSH_ERR_ALLOC_FAIL; |
| 2205 |
/* The cipher struct is constant and shared, you export pointer */ |
|
|
| 2206 |
if ((r = sshbuf_put_cstring(b, enc->name)) != 0 || |
2205 |
if ((r = sshbuf_put_cstring(b, enc->name)) != 0 || |
| 2207 |
(r = sshbuf_put(b, &enc->cipher, sizeof(enc->cipher))) != 0 || |
|
|
| 2208 |
(r = sshbuf_put_u32(b, enc->enabled)) != 0 || |
2206 |
(r = sshbuf_put_u32(b, enc->enabled)) != 0 || |
| 2209 |
(r = sshbuf_put_u32(b, enc->block_size)) != 0 || |
2207 |
(r = sshbuf_put_u32(b, enc->block_size)) != 0 || |
| 2210 |
(r = sshbuf_put_string(b, enc->key, enc->key_len)) != 0 || |
2208 |
(r = sshbuf_put_string(b, enc->key, enc->key_len)) != 0 || |
|
Lines 2278-2289
newkeys_from_blob(struct sshbuf *m, struct ssh *ssh, int mode)
Link Here
|
| 2278 |
comp = &newkey->comp; |
2276 |
comp = &newkey->comp; |
| 2279 |
|
2277 |
|
| 2280 |
if ((r = sshbuf_get_cstring(b, &enc->name, NULL)) != 0 || |
2278 |
if ((r = sshbuf_get_cstring(b, &enc->name, NULL)) != 0 || |
| 2281 |
(r = sshbuf_get(b, &enc->cipher, sizeof(enc->cipher))) != 0 || |
|
|
| 2282 |
(r = sshbuf_get_u32(b, (u_int *)&enc->enabled)) != 0 || |
2279 |
(r = sshbuf_get_u32(b, (u_int *)&enc->enabled)) != 0 || |
| 2283 |
(r = sshbuf_get_u32(b, &enc->block_size)) != 0 || |
2280 |
(r = sshbuf_get_u32(b, &enc->block_size)) != 0 || |
| 2284 |
(r = sshbuf_get_string(b, &enc->key, &keylen)) != 0 || |
2281 |
(r = sshbuf_get_string(b, &enc->key, &keylen)) != 0 || |
| 2285 |
(r = sshbuf_get_string(b, &enc->iv, &ivlen)) != 0) |
2282 |
(r = sshbuf_get_string(b, &enc->iv, &ivlen)) != 0) |
| 2286 |
goto out; |
2283 |
goto out; |
|
|
2284 |
if ((enc->cipher = cipher_by_name(enc->name)) == NULL) { |
| 2285 |
r = SSH_ERR_INVALID_FORMAT; |
| 2286 |
goto out; |
| 2287 |
} |
| 2287 |
if (cipher_authlen(enc->cipher) == 0) { |
2288 |
if (cipher_authlen(enc->cipher) == 0) { |
| 2288 |
if ((r = sshbuf_get_cstring(b, &mac->name, NULL)) != 0) |
2289 |
if ((r = sshbuf_get_cstring(b, &mac->name, NULL)) != 0) |
| 2289 |
goto out; |
2290 |
goto out; |
|
Lines 2301-2311
newkeys_from_blob(struct sshbuf *m, struct ssh *ssh, int mode)
Link Here
|
| 2301 |
if ((r = sshbuf_get_u32(b, &comp->type)) != 0 || |
2302 |
if ((r = sshbuf_get_u32(b, &comp->type)) != 0 || |
| 2302 |
(r = sshbuf_get_cstring(b, &comp->name, NULL)) != 0) |
2303 |
(r = sshbuf_get_cstring(b, &comp->name, NULL)) != 0) |
| 2303 |
goto out; |
2304 |
goto out; |
| 2304 |
if (enc->name == NULL || |
|
|
| 2305 |
cipher_by_name(enc->name) != enc->cipher) { |
| 2306 |
r = SSH_ERR_INVALID_FORMAT; |
| 2307 |
goto out; |
| 2308 |
} |
| 2309 |
if (sshbuf_len(b) != 0) { |
2305 |
if (sshbuf_len(b) != 0) { |
| 2310 |
r = SSH_ERR_INVALID_FORMAT; |
2306 |
r = SSH_ERR_INVALID_FORMAT; |
| 2311 |
goto out; |
2307 |
goto out; |