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

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


Public key


-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCydbktrOpOllwrLiJtdibnW4lU 
aWCjK7Tt629Jss+lMqyD78X0DI9M4xPh1OdwVX3FJB3hTGxhyJW5WLp/QX7wttx9 
o9+vM1tqj1gJjVp0GR/XR9FBTMsehvk8gO6Z6XyQzOV1Avb9Ltw19m0j0l1LE2Dz 
4ZgQ++cs8rZsOAxG2wIDAQAB 
-----END PUBLIC KEY-----

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

    
import base64
import json
import zlib
import hashlib
from OpenSSL.crypto import verify

class CheckQr:

    def __init__(self, qrdata):
        self.qrdata = qrdata
        self._pubkey = '''-----BEGIN PUBLIC KEY-----
        **************
        **************
        **************
        -----END PUBLIC KEY-----'''

    def check(self):
        response = dict()
        response["success"] = False
        response["message"] = "Мэдээлэл олдсонгүй"
        response["info"] = None
        decoded = base64.decodestring(self.qrdata)
        decoded = json.loads(zlib.decompress( decoded ))
        concat = self.concat(decoded)
        hash = hashlib.sha256(concat)

        try:
            crypto.verify(self._pubkey, decoded["sign"], hash, 'sha256')
            response["success"] = True
            response["message"] = "Мэдээлэл амжилттай"
        except:
            response["message"] = "Мэдээлэл зөрүүтэй"

        response["info"] = decoded

        return response

    def concat(self, 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;

        for element in basicKeys:
            data = json[element]
            if not firstElement:
                concatString += ","
            else:
                firstElement = False
            concatString += data

        for element in personKeys:
            data = json["person"][element]
            if not firstElement:
                concatString += ","
            else:
                firstElement = False
            concatString += data

        for element in covid19NatKeys:
            data = json['covid19']['nat'][element]
            if not firstElement:
                concatString += ","
            else:
                firstElement = False
            concatString += data

        for element in covid19BstKeys:
            data = json['covid19']['bst'][element]
            if not firstElement:
                concatString += ","
            else:
                firstElement = False
            concatString += data

        for element in covid19VaccKeys:
            data = json['covid19']['vacc'][element]
            if not firstElement:
                concatString += ","
            else:
                firstElement = False
            concatString += data

        return concatString