openssl_pkey_get_details

Returns an array with the key details

&reftitle.description; ``array``false```openssl_pkey_get_details` `OpenSSLAsymmetricKey` `key`

This function returns the key details (bits, key, type).

&reftitle.parameters;

`key`

- Resource holding the key.

&reftitle.returnvalues;

Returns an array with the key details on success or &false; on failure. Returned array has indexes `bits` (number of bits), `key` (string representation of the public key) and `type` (type of the key which is one of `OPENSSL_KEYTYPE_RSA`, `OPENSSL_KEYTYPE_DSA`, `OPENSSL_KEYTYPE_DH`, `OPENSSL_KEYTYPE_EC` or -1 meaning unknown).

Depending on the key type used, additional details may be returned. Note that some elements may not always be available.

- `OPENSSL_KEYTYPE_RSA`, an additional array key named `"rsa"`, containing the key data is returned.

  Key | &Description;
  `"n"` | modulus
  `"e"` | public exponent
  `"d"` | private exponent
  `"p"` | prime 1
  `"q"` | prime 2
  `"dmp1"` | exponent1, d mod (p-1)
  `"dmq1"` | exponent2, d mod (q-1)
  `"iqmp"` | coefficient, (inverse of q) mod p

- `OPENSSL_KEYTYPE_DSA`, an additional array key named `"dsa"`, containing the key data is returned.

  Key | &Description;
  `"p"` | prime number (public)
  `"q"` | 160-bit subprime, q | p-1 (public)
  `"g"` | generator of subgroup (public)
  `"priv_key"` | private key x
  `"pub_key"` | public key y = g^x

- `OPENSSL_KEYTYPE_DH`, an additional array key named `"dh"`, containing the key data is returned.

  Key | &Description;
  `"p"` | prime number (shared)
  `"g"` | generator of Z_p (shared)
  `"priv_key"` | private DH value x
  `"pub_key"` | public DH value g^x

- `OPENSSL_KEYTYPE_EC`, an additional array key named `"ec"`, containing the key data is returned.

  Key | &Description;
  `"curve_name"` | name of curve, see `openssl_get_curve_names`
  `"curve_oid"` | ASN1 Object identifier (OID) for EC curve.
  `"x"` | x coordinate (public)
  `"y"` | y coordinate (public)
  `"d"` | private key

&reftitle.changelog;

&Version; | &Description;
8.0.0 | `key` accepts an `OpenSSLAsymmetricKey` now; previously, a &resource; of type `OpenSSL key` was accepted.