Parser/KeyParser.php
public function parse(Key $key)
    {
        try {
            $resource = $key->getResource();
        } catch (KeyFormatException $e) {
            throw new KeyParsingException('Fail to load resource for key', 0, $e);
        }

        $rawData = openssl_pkey_get_details($resource);
        openssl_free_key($resource);

        if (!\is_array($rawData)) {
            throw new KeyParsingException(sprintf('Fail to parse key with error: %s', openssl_error_string()));
        }

        foreach (['type', 'key', 'bits'] as $requiredKey) {
            if (!isset($rawData[$requiredKey])) {
                throw new KeyParsingException(sprintf('Missing expected key "%s" in OpenSSL key', $requiredKey));
            }
        }

        $details = [];

        if (OPENSSL_KEYTYPE_RSA === $rawData['type']) {
            $details = $rawData['rsa'];
        } elseif (OPENSSL_KEYTYPE_DSA === $rawData['type']) {
            $details = $rawData['dsa'];
        } elseif (OPENSSL_KEYTYPE_DH === $rawData['type']) {
            $details = $rawData['dh'];
        } elseif (OPENSSL_KEYTYPE_EC === $rawData['type']) {
            $details = $rawData['ec'];
        }

        return new ParsedKey($key, $rawData['key'], $rawData['bits'], $rawData['type'], $details);
    }
public function parse(Key $key)
    {
        try {
            $resource = $key->getResource();
        } catch (KeyFormatException $e) {
            throw new KeyParsingException('Fail to load resource for key', 0, $e);
        }

        $rawData = openssl_pkey_get_details($resource);
        openssl_free_key($resource);

        if (!\is_array($rawData)) {
            throw new KeyParsingException(sprintf('Fail to parse key with error: %s', openssl_error_string()));
        }

        foreach (['type', 'key', 'bits'] as $requiredKey) {
            if (!isset($rawData[$requiredKey])) {
                throw new KeyParsingException(sprintf('Missing expected key "%s" in OpenSSL key', $requiredKey));
            }
        }

        $details = [];

        if (OPENSSL_KEYTYPE_RSA === $rawData['type']) {
            $details = $rawData['rsa'];
        } elseif (OPENSSL_KEYTYPE_DSA === $rawData['type']) {
            $details = $rawData['dsa'];
        } elseif (OPENSSL_KEYTYPE_DH === $rawData['type']) {
            $details = $rawData['dh'];
        } elseif (OPENSSL_KEYTYPE_EC === $rawData['type']) {
            $details = $rawData['ec'];
        }

        return new ParsedKey($key, $rawData['key'], $rawData['bits'], $rawData['type'], $details);
    }
public function parse ( Key $ key ) { try { $ resource = $ key -> getResource ( ) ; } catch ( KeyFormatException $ e ) { throw new KeyParsingException ( 'Fail to load resource for key' , 0 , $ e ) ; } $ rawData = openssl_pkey_get_details ( $ resource ) ; openssl_free_key ( $ resource ) ; if ( ! \ is_array ( $ rawData ) ) { throw new KeyParsingException ( sprintf ( 'Fail to parse key with error: %s' , openssl_error_string ( ) ) ) ; } foreach ( [ 'type' , 'key' , 'bits' ] as $ requiredKey ) { if ( ! isset ( $ rawData [ $ requiredKey ] ) ) { throw new KeyParsingException ( sprintf ( 'Missing expected key "%s" in OpenSSL key' , $ requiredKey ) ) ; } } $ details = [ ] ; if ( OPENSSL_KEYTYPE_RSA === $ rawData [ 'type' ] ) { $ details = $ rawData [ 'rsa' ] ; } elseif ( OPENSSL_KEYTYPE_DSA === $ rawData [ 'type' ] ) { $ details = $ rawData [ 'dsa' ] ; } elseif ( OPENSSL_KEYTYPE_DH === $ rawData [ 'type' ] ) { $ details = $ rawData [ 'dh' ] ; } elseif ( OPENSSL_KEYTYPE_EC === $ rawData [ 'type' ] ) { $ details = $ rawData [ 'ec' ] ; } return new ParsedKey ( $ key , $ rawData [ 'key' ] , $ rawData [ 'bits' ] , $ rawData [ 'type' ] , $ details ) ; }
Parse the key.

@param Key $key

@return ParsedKey
Parse the key .