123456789101112131415161718192021222324252627282930313233343536373839 |
- from cryptography.hazmat.primitives.asymmetric import padding
- from cryptography.hazmat.primitives import hashes,serialization
- import json
- import time
- import traceback
- def validate_license(public_key_pem, license_json, signature):
- public_key = serialization.load_pem_public_key(public_key_pem)
- try:
- public_key.verify(
- signature,
- license_json,
- padding.PKCS1v15(),
- hashes.SHA256()
- )
- except:
- #打印异常信息
- traceback.print_exc()
- return False
- license_data=json.loads(license_json.decode())
- # 检查是否过期
- if time.time()>license_data["expiration_time"]:
- return False
- return True
- if __name__ == '__main__':
- with open("license_issued/public.key","rb") as f:
- public_key_pem = f.read()
- with open("license_issued/license_issued.lic","rb") as f:
- data = json.loads(f.read())
- license_json = json.dumps(data, sort_keys=True).encode()
- with open("license_issued/license_issued.key","rb") as f:
- signature = f.read()
- if validate_license(public_key_pem,license_json, signature):
- print("许可证有效!")
- else:
- print("许可证无效或已过期!")
|