WiserTheBassist
WiserTheBassist

Reputation: 59

React native RSA encryption with a public PEM or SSLeay key

I am trying to find a working javascript library for react-native that will allow RSA public key encryption in PEM format.

I am not an expert in encryption and just starting out with react-native so please excuse me if i happened to miss something obvious.

So far i have tryed react-native-rsa as recomended by this post and react-native-rsa-util.

I couldn't get react-native-rsa-util to work and react-native-rsa doesn't seem to accept public PEM keys but only keys in the JWK format.

The only reason i am not willing to use the JWK format is that i cannot find a PHP library that will decrypt the incoming message with a JWK key.

I would highly appreciate any help / pointers.

Thanks alot

Upvotes: 0

Views: 2391

Answers (2)

Escalamuros Tuk
Escalamuros Tuk

Reputation: 1

You can use "react-native-rsa-native" how have metods to generate RSA public and private keys... an verify and sing. from https://www.npmjs.com/package/react-native-rsa-native

Upvotes: 0

Spomky-Labs
Spomky-Labs

Reputation: 16775

I wrote a PHP library that supports JWT encryption/decryption with a lot of other useful features including compression.

All algorithms referenced in the RFC7518 and JWK/JWKSet are supported.

What you can do is convert your PEM key into JWK with my library:

<?php
use Jose\Factory\JWKFactory;

$jwk = JWKFactory::createFromKeyFile('/path/to/my/key.pem');

var_dump($jwk->getAll());

And to decrypt a JWT with your JWK and my library:

use Jose\Loader;

$input = 'eyJhbGciOiJS...';
$loader = new Loader();
$jwe = $loader->loadAndDecryptUsingKey($input, $jwk, ['RSA-OAEP-256'], ['A256CBC-HS512']); // The list of accepted key and content encryption algorithms depends on your needs

The variable $jwe is now JWE Object. You can get the payload by calling $jwe->getPayload();

Do not hesitate to contact me on the dedicated Gitter channel if needed.

Upvotes: 0

Related Questions