public static function createRSAKey(array $values)
{
Assertion::keyExists($values, 'size', 'The key size is not set.');
$size = $values['size'];
unset($values['size']);
Assertion::true(0 === $size % 8, 'Invalid key size.');
Assertion::greaterOrEqualThan($size, 384, 'Key length is too short. It needs to be at least 384 bits.');
$key = openssl_pkey_new(['private_key_bits' => $size, 'private_key_type' => OPENSSL_KEYTYPE_RSA]);
openssl_pkey_export($key, $out);
$rsa = new RSAKey($out);
$values = array_merge($values, $rsa->toArray());
return new JWK($values);
}