Skip to content

ECDH-ES+A256KW + A256GCM error #590

Closed
@parsibox

Description

@parsibox

Description

hi
i want to create jwe same as this image
image
this is my php code

<?php

require 'vendor/autoload.php';

use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA256KW;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM;
use Jose\Component\Encryption\Compression\CompressionMethodManager;
use Jose\Component\Encryption\JWEBuilder;
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\KeyManagement\JWKFactory;
$privateKey = <<<EOD
-----BEGIN EC PRIVATE KEY-----
MIHcAgEBBEIBVJmxxvH8Kp2bKVZHzr9W576vdSxnPdnk7X5+Cb53gQXJIS53IaoZ
8W7JIB2BJTgBGqa8WC5X8tX32SEgjF6YuxugBwYFK4EEACOhgYkDgYYABABDpgDm
15S3O/PywiKeW0LN1gu05xqJB3huWt+5qQxK16mwkAWQTmofW8+FBKEM9jzOUW/3
SStW90PMcXBtxpT0FAF5Kjq5LkIjAW9NIbQtr+PGS5HYBEBKcmCiFa1hA5hRyM97
y/XzZx+EZsDmBdL7p9sQkNb/MVexHr3eoH19VZrb7g==
-----END EC PRIVATE KEY-----
EOD;

// Define the payload
$payload = [
    'data' => 'eyJhbGciOiJFUzUxMiIsImNsaWVudElEIjoiYzVkNzhmMTAtMmY3NS00ZmM5LWE2ZTAtNmQ0YzViNWM0ZTU5In0.eyJwYXRoIjoiL3NlcnZpY2UxIiwiZGF0YSI6IntcclxuICAgIFwicmVxdWVzdElkXCI6IFwiMTIzNDU2Nzg5MFwiXHJcbn0iLCJtZXRob2QiOiJQT1NUIiwiaWF0IjoxNzMxNTc1NjEyfQ.AQZoZJSi75hHyQDGc6zQMn05yWe9pdA-BNRgUfLwWXmM_6LNrbLuANeXTkJvJfmMCwCvAoNSOVefvKHyrnjv6P9yAV05RRHIgl6vtpNruYGFXdVfQaYygIDeUhbZlv_l4ETmfmxwhMWr9POxMmmokuIloNoNzy86W3lfA0TZIKLwOmzU',
    'iat' => 1731575612,
];


$publicKeyPem = <<<EOD
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtB7W2BLDBSjJv1danzZeOjQGhCOe
u3u/JIIVXFrdbfi3vi7t+EQJY5H7df1YcO0tu9LstL260DJba72IQQZDCg==
-----END PUBLIC KEY-----
EOD;
$recipientPublicKeyJWK = JWKFactory::createFromKey($publicKeyPem);

// Set up algorithms
$keyEncryptionAlgorithmManager = new AlgorithmManager([new ECDHESA256KW()]);
$contentEncryptionAlgorithmManager = new AlgorithmManager([new A256GCM()]);
$compressionMethodManager = new CompressionMethodManager([]); // No compression


// Initialize JWE Builder
$jweBuilder = new JWEBuilder(
    $keyEncryptionAlgorithmManager,
    $contentEncryptionAlgorithmManager
    , $compressionMethodManager
);

// Build the JWE
$jwe = $jweBuilder
    ->create()
    ->withPayload(json_encode($payload))
    ->withSharedProtectedHeader([
        'alg' => 'ECDH-ES+A256KW',
        'enc' => 'A256GCM',
    ])
    ->addRecipient($recipientPublicKeyJWK)
    ->build();

but it say:

<html>
<body>
<!--StartFragment-->
( ! ) Fatal error: Uncaught RuntimeException: Unable to create the key in  \php\vendor\web-token\jwt-framework\src\Component\Core\Util\ECKey.php on line 148
--


<br class="Apple-interchange-newline"><!--EndFragment-->
</body>
</html>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions