forked from apoloz/alfa-bank-sdk
37 lines
939 B
PHP
37 lines
939 B
PHP
<?php
|
|
|
|
use Apoloz\AlfaBank\Utils\CardEncryptor;
|
|
use Apoloz\AlfaBank\Utils\CmsSigner;
|
|
|
|
test('can encrypt card pan', function () {
|
|
// Generate a temporary RSA key for testing
|
|
$res = openssl_pkey_new([
|
|
"private_key_bits" => 2048,
|
|
"private_key_type" => OPENSSL_KEYTYPE_RSA,
|
|
]);
|
|
openssl_pkey_export($res, $privateKey);
|
|
$details = openssl_pkey_get_details($res);
|
|
$publicKey = $details['key'];
|
|
|
|
$pan = '4779642610000010';
|
|
$encrypted = CardEncryptor::encrypt($pan, $publicKey);
|
|
|
|
expect($encrypted)->toBeString()
|
|
->and(base64_decode($encrypted))->not->toBeFalse();
|
|
});
|
|
|
|
test('can canonicalize json', function () {
|
|
$data = [
|
|
'z' => 1,
|
|
'a' => [
|
|
'c' => 3,
|
|
'b' => 2
|
|
]
|
|
];
|
|
|
|
$canonical = CmsSigner::canonicalize($data);
|
|
|
|
// Keys should be sorted: a (then b, c), z
|
|
expect($canonical)->toBe('{"a":{"b":2,"c":3},"z":1}');
|
|
});
|