Второе шифрование
Итак нам нужно зашифровать запрос.
Ключи необходимые для шифрования запроса: https://nanokassa.ru/integration/documentation/publichnye-rsa-klyuchi/
Итак нам нужно зашифровать вот такой запрос:
{    
    "ab":"GYBhagdYGWgahjGDHASgdjhas...ASDGd",     
    "de":"GYBhagdYGWgahjGDHASgdjhas...ASDGd",     
    "kassaid":"123456",     
    "kassatoken":"3212312312312",
    "check_type":"standart",
    "test":"1"
}
Итак вот этот небольшой запрос после второго шифрования должен превратиться вот в такой небольшой запросик:
{
    "aab":"ASDHGSADHgshadgahsGDHAGD..SADGsg",
    "dde":"ASDHGSADHgshadgahsGDHAGD..SADGsg", 
    "test":"1"
}
Объект test - говорит о тесте или не тесте.
В aab также как и в первом шифровании будет ключ для дешифровки пакета aab. aab зашифрован через RSA.
А в dde также как и в первом шифровании будет сам пакет с данными. dde зашифрован через AES256-CTR.
$request2 = '{
"ab": "GYBhagdYGWgahjGDHASgdjhas...ASDGd", "de": "GYBhagdYGWgahjGDHASgdjhas...ASDGd", "kassaid":"123456", "kassatoken": "3212312312312", "test":"1"
}';
$pw2 = random_bytes(32);
$IVdata2 = random_bytes(16);
$pw2 = random_bytes(32);
$mk2 = 'xxx2'; // hmac контроль в формате base64
$dataAES2 = openssl_encrypt($request2, "aes-256-ctr", $pw2, OPENSSL_RAW_DATA, $IVdata2);
$hmac2 = hash_hmac('sha512', $IVdata2.$dataAES2, base64_decode($mk2), true);
$returnDataDE2 = base64_encode($hmac2.$IVdata2.$dataAES2);
То есть строение пакета dde должно быть таким. 64 байта hmac, 16 байт IVDATA, и остальные байты самого пакета.
Теперь перейдем к пакету aab.
Вот функции (на php) (с учетом, что установлен openssl), чтобы грамотно вам зашифровать пакеты для первого шифрования. (pubkey показан обобщенно). Для шифрования RSA используется функция openssl_public_encrypt.
$pubkey2 = "-----BEGIN PUBLIC KEY----- HASGDHJASGDASDSAGD .... SADGHASDHASJGDAHJS== -----END PUBLIC KEY-----"; openssl_public_encrypt($pw2, $aab_rsa, $pubkey2, OPENSSL_PKCS1_OAEP_PADDING) $aab = base64_encode ($aab_rsa); $returnDataAAB = $aab;
Теперь мы можем уже понять, как получить вот такой пакет.
{
    "aab":"ASDHGSADHgshadgahsGDHAGD..SADGsg",
    "dde":"ASDHGSADHgshadgahsGDHAGD..SADGsg", 
    "test":"1"
}
Перейдем к отправке данных.