PHP хэл дээрх хэрэгжүүлэлт

Клиент жишээ кодууд


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;
    }

}