mirror of
https://github.com/friendica/friendica
synced 2025-04-29 11:44:24 +02:00
base64url calls
implement base64UrlEncode and base64UrlDecode functions
This commit is contained in:
parent
0efcbe5d15
commit
6fc9c6de3b
13 changed files with 64 additions and 59 deletions
|
@ -7,6 +7,7 @@ namespace Friendica\Util;
|
|||
use Friendica\Core\Addon;
|
||||
use Friendica\Core\Config;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Util\Strings;
|
||||
use ASN_BASE;
|
||||
use ASNValue;
|
||||
|
||||
|
@ -159,8 +160,8 @@ class Crypto
|
|||
|
||||
$r = ASN_BASE::parseASNString($x);
|
||||
|
||||
$m = base64url_decode($r[0]->asnData[0]->asnData);
|
||||
$e = base64url_decode($r[0]->asnData[1]->asnData);
|
||||
$m = Strings::base64UrlDecode($r[0]->asnData[0]->asnData);
|
||||
$e = Strings::base64UrlDecode($r[0]->asnData[1]->asnData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -198,8 +199,8 @@ class Crypto
|
|||
|
||||
$r = ASN_BASE::parseASNString($x);
|
||||
|
||||
$m = base64url_decode($r[0]->asnData[1]->asnData[0]->asnData[0]->asnData);
|
||||
$e = base64url_decode($r[0]->asnData[1]->asnData[0]->asnData[1]->asnData);
|
||||
$m = Strings::base64UrlDecode($r[0]->asnData[1]->asnData[0]->asnData[0]->asnData);
|
||||
$e = Strings::base64UrlDecode($r[0]->asnData[1]->asnData[0]->asnData[1]->asnData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -355,7 +356,7 @@ class Crypto
|
|||
$result = ['encrypted' => true];
|
||||
$key = random_bytes(256);
|
||||
$iv = random_bytes(256);
|
||||
$result['data'] = base64url_encode(self::$fn($data, $key, $iv), true);
|
||||
$result['data'] = Strings::base64UrlEncode(self::$fn($data, $key, $iv), true);
|
||||
|
||||
// log the offending call so we can track it down
|
||||
if (!openssl_public_encrypt($key, $k, $pubkey)) {
|
||||
|
@ -364,9 +365,9 @@ class Crypto
|
|||
}
|
||||
|
||||
$result['alg'] = $alg;
|
||||
$result['key'] = base64url_encode($k, true);
|
||||
$result['key'] = Strings::base64UrlEncode($k, true);
|
||||
openssl_public_encrypt($iv, $i, $pubkey);
|
||||
$result['iv'] = base64url_encode($i, true);
|
||||
$result['iv'] = Strings::base64UrlEncode($i, true);
|
||||
|
||||
return $result;
|
||||
} else {
|
||||
|
@ -395,7 +396,7 @@ class Crypto
|
|||
$key = random_bytes(32);
|
||||
$iv = random_bytes(16);
|
||||
$result = ['encrypted' => true];
|
||||
$result['data'] = base64url_encode(self::encryptAES256CBC($data, $key, $iv), true);
|
||||
$result['data'] = Strings::base64UrlEncode(self::encryptAES256CBC($data, $key, $iv), true);
|
||||
|
||||
// log the offending call so we can track it down
|
||||
if (!openssl_public_encrypt($key, $k, $pubkey)) {
|
||||
|
@ -404,9 +405,9 @@ class Crypto
|
|||
}
|
||||
|
||||
$result['alg'] = 'aes256cbc';
|
||||
$result['key'] = base64url_encode($k, true);
|
||||
$result['key'] = Strings::base64UrlEncode($k, true);
|
||||
openssl_public_encrypt($iv, $i, $pubkey);
|
||||
$result['iv'] = base64url_encode($i, true);
|
||||
$result['iv'] = Strings::base64UrlEncode($i, true);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
@ -448,10 +449,10 @@ class Crypto
|
|||
$fn = 'decrypt' . strtoupper($alg);
|
||||
|
||||
if (method_exists(__CLASS__, $fn)) {
|
||||
openssl_private_decrypt(base64url_decode($data['key']), $k, $prvkey);
|
||||
openssl_private_decrypt(base64url_decode($data['iv']), $i, $prvkey);
|
||||
openssl_private_decrypt(Strings::base64UrlDecode($data['key']), $k, $prvkey);
|
||||
openssl_private_decrypt(Strings::base64UrlDecode($data['iv']), $i, $prvkey);
|
||||
|
||||
return self::$fn(base64url_decode($data['data']), $k, $i);
|
||||
return self::$fn(Strings::base64UrlDecode($data['data']), $k, $i);
|
||||
} else {
|
||||
$x = ['data' => $data, 'prvkey' => $prvkey, 'alg' => $alg, 'result' => $data];
|
||||
Addon::callHooks('other_unencapsulate', $x);
|
||||
|
@ -471,10 +472,10 @@ class Crypto
|
|||
*/
|
||||
private static function unencapsulateAes($data, $prvkey)
|
||||
{
|
||||
openssl_private_decrypt(base64url_decode($data['key']), $k, $prvkey);
|
||||
openssl_private_decrypt(base64url_decode($data['iv']), $i, $prvkey);
|
||||
openssl_private_decrypt(Strings::base64UrlDecode($data['key']), $k, $prvkey);
|
||||
openssl_private_decrypt(Strings::base64UrlDecode($data['iv']), $i, $prvkey);
|
||||
|
||||
return self::decryptAES256CBC(base64url_decode($data['data']), $k, $i);
|
||||
return self::decryptAES256CBC(Strings::base64UrlDecode($data['data']), $k, $i);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue