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