@@ -39,17 +39,19 @@ def __init__(self, sdkappid, key):
3939 self .__sdkappid = sdkappid
4040 self .__key = key
4141
42- def __hmacsha256 (self , identifier , curr_time , expire ):
42+ def __hmacsha256 (self , identifier , curr_time , expire , base64_userbuf = None ):
4343 """ 通过固定串进行 hmac 然后 base64 得的 sig 字段的值"""
4444 raw_content_to_be_signed = "TLS.identifier:" + str (identifier ) + "\n " \
4545 + "TLS.sdkappid:" + str (self .__sdkappid ) + "\n " \
4646 + "TLS.time:" + str (curr_time ) + "\n " \
4747 + "TLS.expire:" + str (expire ) + "\n "
48+ if None != base64_userbuf :
49+ raw_content_to_be_signed += "TLS.userbuf:" + base64_userbuf + "\n "
4850 return base64 .b64encode (hmac .new (self .__key .encode ('utf-8' ),
4951 raw_content_to_be_signed .encode ('utf-8' ),
5052 hashlib .sha256 ).digest ())
5153
52- def gen_sig (self , identifier , expire = 180 * 86400 ):
54+ def __gen_sig (self , identifier , expire = 180 * 86400 , userbuf = None ):
5355 """ 用户可以采用默认的有效期生成 sig """
5456 curr_time = int (time .time ())
5557 m = dict ()
@@ -58,19 +60,34 @@ def gen_sig(self, identifier, expire=180*86400):
5860 m ["TLS.sdkappid" ] = int (self .__sdkappid )
5961 m ["TLS.expire" ] = int (expire )
6062 m ["TLS.time" ] = int (curr_time )
61- m ["TLS.sig" ] = bytes .decode (self .__hmacsha256 (identifier , curr_time , expire ))
63+ base64_userbuf = None
64+ if None != userbuf :
65+ base64_userbuf = bytes .decode (base64 .b64encode (userbuf ))
66+ m ["TLS.userbuf" ] = base64_userbuf
67+
68+ m ["TLS.sig" ] = bytes .decode (self .__hmacsha256 (
69+ identifier , curr_time , expire , base64_userbuf ))
6270
6371 raw_sig = json .dumps (m )
64- print (raw_sig )
6572 sig_cmpressed = zlib .compress (raw_sig .encode ('utf-8' ))
6673 base64_sig = base64_encode_url (sig_cmpressed )
6774 return base64_sig
6875
76+ def gen_sig (self , identifier , expire = 180 * 86400 ):
77+ """ 用户可以采用默认的有效期生成 sig """
78+ return self .__gen_sig (identifier , expire , None )
79+
80+ def gen_sig_with_userbuf (self , identifier , expire , userbuf ):
81+ """ 带 userbuf 生成签名 """
82+ return self .__gen_sig (identifier , expire , userbuf )
83+
6984
7085def main ():
7186 api = TLSSigAPI (1400000000 , '5bd2850fff3ecb11d7c805251c51ee463a25727bddc2385f3fa8bfee1bb93b5e' )
7287 sig = api .gen_sig ("xiaojun" )
7388 print (sig )
89+ sig = api .gen_sig_with_userbuf ("xiaojun" , 86400 * 180 , "abc" .encode ("utf-8" ))
90+ print (sig )
7491
7592
7693if __name__ == "__main__" :
0 commit comments