version 1.48, 2017/04/30 23:18:44 |
version 1.49, 2017/05/07 23:15:59 |
|
|
BIGNUM *f4 = NULL; |
BIGNUM *f4 = NULL; |
int ret = SSH_ERR_INTERNAL_ERROR; |
int ret = SSH_ERR_INTERNAL_ERROR; |
|
|
if (rsap == NULL || |
if (rsap == NULL) |
bits < SSH_RSA_MINIMUM_MODULUS_SIZE || |
|
bits > SSHBUF_MAX_BIGNUM * 8) |
|
return SSH_ERR_INVALID_ARGUMENT; |
return SSH_ERR_INVALID_ARGUMENT; |
|
if (bits < SSH_RSA_MINIMUM_MODULUS_SIZE || |
|
bits > SSHBUF_MAX_BIGNUM * 8) |
|
return SSH_ERR_KEY_LENGTH; |
*rsap = NULL; |
*rsap = NULL; |
if ((private = RSA_new()) == NULL || (f4 = BN_new()) == NULL) { |
if ((private = RSA_new()) == NULL || (f4 = BN_new()) == NULL) { |
ret = SSH_ERR_ALLOC_FAIL; |
ret = SSH_ERR_ALLOC_FAIL; |
|
|
DSA *private; |
DSA *private; |
int ret = SSH_ERR_INTERNAL_ERROR; |
int ret = SSH_ERR_INTERNAL_ERROR; |
|
|
if (dsap == NULL || bits != 1024) |
if (dsap == NULL) |
return SSH_ERR_INVALID_ARGUMENT; |
return SSH_ERR_INVALID_ARGUMENT; |
|
if (bits != 1024) |
|
return SSH_ERR_KEY_LENGTH; |
if ((private = DSA_new()) == NULL) { |
if ((private = DSA_new()) == NULL) { |
ret = SSH_ERR_ALLOC_FAIL; |
ret = SSH_ERR_ALLOC_FAIL; |
goto out; |
goto out; |
|
|
ret = SSH_ERR_INVALID_FORMAT; |
ret = SSH_ERR_INVALID_FORMAT; |
goto out; |
goto out; |
} |
} |
|
if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { |
|
ret = SSH_ERR_KEY_LENGTH; |
|
goto out; |
|
} |
#ifdef DEBUG_PK |
#ifdef DEBUG_PK |
RSA_print_fp(stderr, key->rsa, 8); |
RSA_print_fp(stderr, key->rsa, 8); |
#endif |
#endif |
|
|
(r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || |
(r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || |
(r = rsa_generate_additional_parameters(k->rsa)) != 0) |
(r = rsa_generate_additional_parameters(k->rsa)) != 0) |
goto out; |
goto out; |
|
if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { |
|
r = SSH_ERR_KEY_LENGTH; |
|
goto out; |
|
} |
break; |
break; |
case KEY_RSA_CERT: |
case KEY_RSA_CERT: |
if ((r = sshkey_froms(buf, &k)) != 0 || |
if ((r = sshkey_froms(buf, &k)) != 0 || |
|
|
(r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || |
(r = sshbuf_get_bignum2(buf, k->rsa->q)) != 0 || |
(r = rsa_generate_additional_parameters(k->rsa)) != 0) |
(r = rsa_generate_additional_parameters(k->rsa)) != 0) |
goto out; |
goto out; |
|
if (BN_num_bits(k->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { |
|
r = SSH_ERR_KEY_LENGTH; |
|
goto out; |
|
} |
break; |
break; |
#endif /* WITH_OPENSSL */ |
#endif /* WITH_OPENSSL */ |
case KEY_ED25519: |
case KEY_ED25519: |
|
|
#endif |
#endif |
if (RSA_blinding_on(prv->rsa, NULL) != 1) { |
if (RSA_blinding_on(prv->rsa, NULL) != 1) { |
r = SSH_ERR_LIBCRYPTO_ERROR; |
r = SSH_ERR_LIBCRYPTO_ERROR; |
|
goto out; |
|
} |
|
if (BN_num_bits(prv->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) { |
|
r = SSH_ERR_KEY_LENGTH; |
goto out; |
goto out; |
} |
} |
} else if (pk->type == EVP_PKEY_DSA && |
} else if (pk->type == EVP_PKEY_DSA && |