|
|
@ -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); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|