Public key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCydbktrOpOllwrLiJtdibnW4lU
aWCjK7Tt629Jss+lMqyD78X0DI9M4xPh1OdwVX3FJB3hTGxhyJW5WLp/QX7wttx9
o9+vM1tqj1gJjVp0GR/XR9FBTMsehvk8gO6Z6XyQzOV1Avb9Ltw19m0j0l1LE2Dz
4ZgQ++cs8rZsOAxG2wIDAQAB
-----END PUBLIC KEY-----
Клиент жишээ код
<?php
class Check
{
private $qrData = "";
function __construct($qrData){
$this->qrData = $qrData;
}
public function check(){
$response = [
"success" => false,
'message' => "Мэдээлэл олдсонгүй",
'info' => null
];
$decoded = base64_decode($this->qrData);
$decoded = json_decode(gzdecode($decoded), true);
$concat = $this->concatString($decoded);
$pemPublicKey = "-----BEGIN PUBLIC KEY-----
**************
**************
**************
-----END PUBLIC KEY-----";
$pubkeyid = openssl_pkey_get_public($pemPublicKey);
$hash = hash('sha256', $concat, true);
if (!openssl_verify($hash, base64_decode($decoded['sign']), $pubkeyid, OPENSSL_ALGO_SHA256))
{
$response["message"] = 'Мэдээлэл зөрүүтэй';
return $response;
}
$response['success'] = true;
$response["message"] = 'Мэдээлэл амжилттай';
$response['info'] = $decoded;
return $response;
}
private function concatString($json){
$basicKeys = ["id", "cc", "time", "tz"];
$personKeys = ["no", "name", "nat"];
$covid19NatKeys = ["inst", "time", "tz", "result"];
$covid19BstKeys = ["inst", "time", "tz", "igg"];
$covid19VaccKeys = ["brand", "type", "1st", "2nd", "tz"];
$concatString = "";
$firstElement = true;
foreach ($basicKeys as $element) {
$data = $json[$element];
if (!$firstElement)
$concatString = $concatString . ",";
else
$firstElement = false;
$concatString = $concatString . "$data";
}
foreach ($personKeys as $element) {
$data = $json['person'][$element];
if (!$firstElement)
$concatString = $concatString . ",";
else
$firstElement = false;
$concatString = $concatString . "$data";
}
foreach ($covid19NatKeys as $element) {
$data = $json['covid19']['nat'][$element];
if (!$firstElement)
$concatString = $concatString . ",";
else
$firstElement = false;
$concatString = $concatString . "$data";
}
foreach ($covid19BstKeys as $element) {
$data = $json['covid19']['bst'][$element];
if (!$firstElement)
$concatString = $concatString . ",";
else
$firstElement = false;
$concatString = $concatString . "$data";
}
foreach ($covid19VaccKeys as $element) {
$data = $json['covid19']['vacc'][$element];
if (!$firstElement)
$concatString = $concatString . ",";
else
$firstElement = false;
$concatString = $concatString . "$data";
}
return $concatString;
}
}