license.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from cryptography.hazmat.primitives.asymmetric import padding
  2. from cryptography.hazmat.primitives import hashes,serialization
  3. import json
  4. import time
  5. import traceback
  6. def validate_license(public_key_pem, license_json, signature):
  7. public_key = serialization.load_pem_public_key(public_key_pem)
  8. try:
  9. public_key.verify(
  10. signature,
  11. license_json,
  12. padding.PKCS1v15(),
  13. hashes.SHA256()
  14. )
  15. except:
  16. #打印异常信息
  17. traceback.print_exc()
  18. return False
  19. license_data=json.loads(license_json.decode())
  20. # 检查是否过期
  21. if time.time()>license_data["expiration_time"]:
  22. return False
  23. return True
  24. if __name__ == '__main__':
  25. with open("license_issued/public.key","rb") as f:
  26. public_key_pem = f.read()
  27. with open("license_issued/license_issued.lic","rb") as f:
  28. data = json.loads(f.read())
  29. license_json = json.dumps(data, sort_keys=True).encode()
  30. with open("license_issued/license_issued.key","rb") as f:
  31. signature = f.read()
  32. if validate_license(public_key_pem,license_json, signature):
  33. print("许可证有效!")
  34. else:
  35. print("许可证无效或已过期!")