Alert: This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

JWK::createPemFromModulusAndExponent( string $n, string $e )

Create a public key represented in PEM format from RSA modulus and exponent information

Parameters Parameters


(Required) The RSA modulus encoded in Base64


(Required) The RSA exponent encoded in Base64

Top ↑

Return Return

(string) The RSA public key represented in PEM format

Source Source

File: vendor/firebase/php-jwt/src/JWK.php

    private static function createPemFromModulusAndExponent($n, $e)
        $modulus = JWT::urlsafeB64Decode($n);
        $publicExponent = JWT::urlsafeB64Decode($e);
        $components = array(
            'modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus),
            'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent)
        $rsaPublicKey = \pack(
            self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])),
        // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption.
        $rsaOID = \pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA
        $rsaPublicKey = \chr(0) . $rsaPublicKey;
        $rsaPublicKey = \chr(3) . self::encodeLength(\strlen($rsaPublicKey)) . $rsaPublicKey;
        $rsaPublicKey = \pack(
            self::encodeLength(\strlen($rsaOID . $rsaPublicKey)),
            $rsaOID . $rsaPublicKey
        $rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" .
            \chunk_split(\base64_encode($rsaPublicKey), 64) .
            '-----END PUBLIC KEY-----';
        return $rsaPublicKey;