final public function generateKeypair($keybits = 512, $digest_alg = 'sha512')
    {
        try {
            /* see: http://www.php.net/manual/en/function.openssl-pkey-new.php */
            if (function_exists('openssl_pkey_new')) {
                $keypair = array();

                /* openssl keysize can't be smaller than 384 bits */
                if ((int) $keybits < 384) {
                    $keybits = 384;
                }

                if (!isset($digest_alg) || trim($digest_alg) == '') {
                    $digest_alg = 'sha512';
                }

                /*
                 * RSA is the only supported key type at this time
                 * http://www.php.net/manual/en/function.openssl-csr-new.php
                 */
                $config = array(
                                'digest_alg'       => $digest_alg,
                                'private_key_bits' => (int) $keybits,
                                'private_key_type' => OPENSSL_KEYTYPE_RSA,
                                );

                $resource = openssl_pkey_new($config);

                if (!$resource) {
                    throw new \Exception('Error in generateOpenSSLKeypair: Could not create new OpenSSL resource.');

                    /* with the openssl extension, you also have it's own errors returned */
                    while ($msg = openssl_error_string()) {
                        throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
                    }

                    return false;
                }

                if (openssl_pkey_export($resource, $keypair['pri'])) {
                    $publickey      = openssl_pkey_get_details($resource);
                    $keypair['pub'] = $publickey['key'];
                } else {
                    throw new \Exception('Error in generateOpenSSLKeypair: Private key could not be determined from OpenSSL key resource.');

                    while ($msg = openssl_error_string()) {
                        throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
                    }

                    return false;
                }

                openssl_pkey_free($resource);

                return $keypair;
            } else {
                throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL PHP extension missing. Cannot continue.');

                return false;
            }
        } catch (\Exception $e) {
            while ($msg = openssl_error_string()) {
                throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
            }

            throw $e;

            return false;
        }
    }
final public function generateKeypair($keybits = 512, $digest_alg = 'sha512')
    {
        try {
            /* see: http://www.php.net/manual/en/function.openssl-pkey-new.php */
            if (function_exists('openssl_pkey_new')) {
                $keypair = array();

                /* openssl keysize can't be smaller than 384 bits */
                if ((int) $keybits < 384) {
                    $keybits = 384;
                }

                if (!isset($digest_alg) || trim($digest_alg) == '') {
                    $digest_alg = 'sha512';
                }

                /*
                 * RSA is the only supported key type at this time
                 * http://www.php.net/manual/en/function.openssl-csr-new.php
                 */
                $config = array(
                                'digest_alg'       => $digest_alg,
                                'private_key_bits' => (int) $keybits,
                                'private_key_type' => OPENSSL_KEYTYPE_RSA,
                                );

                $resource = openssl_pkey_new($config);

                if (!$resource) {
                    throw new \Exception('Error in generateOpenSSLKeypair: Could not create new OpenSSL resource.');

                    /* with the openssl extension, you also have it's own errors returned */
                    while ($msg = openssl_error_string()) {
                        throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
                    }

                    return false;
                }

                if (openssl_pkey_export($resource, $keypair['pri'])) {
                    $publickey      = openssl_pkey_get_details($resource);
                    $keypair['pub'] = $publickey['key'];
                } else {
                    throw new \Exception('Error in generateOpenSSLKeypair: Private key could not be determined from OpenSSL key resource.');

                    while ($msg = openssl_error_string()) {
                        throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
                    }

                    return false;
                }

                openssl_pkey_free($resource);

                return $keypair;
            } else {
                throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL PHP extension missing. Cannot continue.');

                return false;
            }
        } catch (\Exception $e) {
            while ($msg = openssl_error_string()) {
                throw new \Exception('Error in generateOpenSSLKeypair: OpenSSL reported error: '.$msg);
            }

            throw $e;

            return false;
        }
    }
final public function generateKeypair ( $ keybits = 512 , $ digest_alg = 'sha512' ) { try { /* see: http://www.php.net/manual/en/function.openssl-pkey-new.php */ if ( function_exists ( 'openssl_pkey_new' ) ) { $ keypair = array ( ) ; /* openssl keysize can't be smaller than 384 bits */ if ( ( int ) $ keybits < 384 ) { $ keybits = 384 ; } if ( ! isset ( $ digest_alg ) || trim ( $ digest_alg ) == '' ) { $ digest_alg = 'sha512' ; } /*
                 * RSA is the only supported key type at this time
                 * http://www.php.net/manual/en/function.openssl-csr-new.php
                 */ $ config = array ( 'digest_alg' => $ digest_alg , 'private_key_bits' => ( int ) $ keybits , 'private_key_type' => OPENSSL_KEYTYPE_RSA , ) ; $ resource = openssl_pkey_new ( $ config ) ; if ( ! $ resource ) { throw new \ Exception ( 'Error in generateOpenSSLKeypair: Could not create new OpenSSL resource.' ) ; /* with the openssl extension, you also have it's own errors returned */ while ( $ msg = openssl_error_string ( ) ) { throw new \ Exception ( 'Error in generateOpenSSLKeypair: OpenSSL reported error: ' . $ msg ) ; } return false ; } if ( openssl_pkey_export ( $ resource , $ keypair [ 'pri' ] ) ) { $ publickey = openssl_pkey_get_details ( $ resource ) ; $ keypair [ 'pub' ] = $ publickey [ 'key' ] ; } else { throw new \ Exception ( 'Error in generateOpenSSLKeypair: Private key could not be determined from OpenSSL key resource.' ) ; while ( $ msg = openssl_error_string ( ) ) { throw new \ Exception ( 'Error in generateOpenSSLKeypair: OpenSSL reported error: ' . $ msg ) ; } return false ; } openssl_pkey_free ( $ resource ) ; return $ keypair ; } else { throw new \ Exception ( 'Error in generateOpenSSLKeypair: OpenSSL PHP extension missing. Cannot continue.' ) ; return false ; } } catch ( \ Exception $ e ) { while ( $ msg = openssl_error_string ( ) ) { throw new \ Exception ( 'Error in generateOpenSSLKeypair: OpenSSL reported error: ' . $ msg ) ; } throw $ e ; return false ; } }
Function to generate a new RSA keypair. This is not
used for point derivation or for generating signatures.
Only used for assymetric data encryption, as needed.

@param int
@param string
@return array|boolean array of keys on success, boolean false on failure
Function to generate a new RSA keypair . This is not used for point derivation or for generating signatures . Only used for assymetric data encryption as needed .