Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Pchol  
#11 Оставлено : 28 мая 2022 г. 2:07:16(UTC)
Pchol

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.05.2022(UTC)
Сообщений: 1
Российская Федерация

Доработал тестовый скрипт

На вход принимает jwt токен и путь до файла сертификата, пример использования:
Цитата:
php verify.php "jwtToken" "./cert.crt"

verify.php
Код:
<?php

function base64url_decode($data) {
  return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}

if (empty($argv[1])) {
  echo "error: input is empty";
  exit(1);
}

$jwt = $argv[1];
$jwtArray = explode(".", $jwt);

if (empty($jwtArray[0]) || empty($jwtArray[1]) || empty ($jwtArray[2])) {
  echo "error: jwt is not valid";
  exit(1);
}

$certPath = $argv[2];
if (!file_exists($certPath)) {
  echo "error: certificate file is not exists";
  exit(1);
}

$data = $jwtArray[0].".".$jwtArray[1];

$signature = $jwtArray[2];
$signatureDecoded = strrev(base64url_decode($signature));
$signatureHex = bin2hex($signatureDecoded);
// Разделяем подпись пробелами группами по 2 цифры на байт
$signatureSplit = implode(" ", str_split($signatureHex, 2));

$cert = new CPCertificate();
$cert->Import(file_get_contents($certPath));

// Вычисляем хэш полученных не зашифрованных данных с помощью cadesphp
$hashedData = new CPHashedData();
$hashedData->set_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
$hashedData->set_DataEncoding(BASE64_TO_BINARY);
$hashedData->Hash(base64_encode($data));

$rawSignature = new CPRawSignature();
try {
    $rawSignature->VerifyHash($hashedData, $signatureSplit, $cert);
    echo "success";
} catch(Exception $e) {
    echo "error: {$e->getMessage()}";
    exit(1);
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.