Files
alfa-bank-sdk/tests/Feature/Utils/CryptoTest.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}');
});