55@author: Artem Los
66"""
77
8- from licensing .internal import Helpers
8+ import platform
9+ import sys
10+ from licensing .internal import HelperMethods
911from licensing .models import *
1012
1113class Key :
@@ -14,7 +16,6 @@ class Key:
1416 License key related methods. More docs: https://app.cryptolens.io/docs/api/v3/Key.
1517 """
1618
17-
1819 def activate (token , rsa_pub_key , product_id , key , machine_code , fields_to_return = 0 ,\
1920 metadata = False , floating_time_interval = 0 ,\
2021 max_overdraft = 0 ):
@@ -30,7 +31,7 @@ def activate(token, rsa_pub_key, product_id, key, machine_code, fields_to_return
3031 response = Response ("" ,"" ,"" ,"" )
3132
3233 try :
33- response = Response .from_string (Helpers .send_request ("key/activate" , {"token" :token ,\
34+ response = Response .from_string (HelperMethods .send_request ("key/activate" , {"token" :token ,\
3435 "ProductId" :product_id ,\
3536 "key" :key ,\
3637 "MachineCode" :machine_code ,\
@@ -49,9 +50,49 @@ def activate(token, rsa_pub_key, product_id, key, machine_code, fields_to_return
4950 return (None , response .message )
5051 else :
5152 try :
52- if Helpers .verify_signature (response , pubkey ):
53+ if HelperMethods .verify_signature (response , pubkey ):
5354 return (LicenseKey .from_response (response ), response .message )
5455 else :
5556 return (None , "The signature check failed." )
5657 except Exception :
57- return (None , "The signature check failed." )
58+ return (None , "The signature check failed." )
59+
60+
61+ class Helpers :
62+
63+ def GetMachineCode ():
64+
65+ """
66+ Get a unique identifier for this device.
67+ """
68+
69+ res = []
70+ res .append (platform .machine ())
71+ res .append (platform .machine ())
72+ res .append (platform .processor ())
73+ res .append (platform .system ())
74+ res .append (platform .architecture ()[1 ])
75+ # safer than using architecture()[0]
76+ # see https://docs.python.org/3/library/platform.html#platform.architecture
77+ res .append (str (sys .maxsize > 2 ** 32 ))
78+
79+ return HelperMethods .get_SHA256 (":" .join (res ))
80+
81+ def IsOnRightMachine (license_key ):
82+
83+ """
84+ Check if the device is registered with the license key.
85+ """
86+
87+ current_mid = Helpers .GetMachineCode ()
88+
89+ if license_key .activated_machines == None :
90+ return False
91+
92+ for act_machine in license_key .activated_machines :
93+
94+ if current_mid == act_machine .Mid :
95+ return True
96+
97+ return False
98+
0 commit comments