瀏覽代碼

fix:修复onenet部分情况数据截断问题

Dozingfiretruck 2 年之前
父節點
當前提交
5f8cb757ed
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      components/iotauth/luat_lib_iotauth.c

+ 6 - 2
components/iotauth/luat_lib_iotauth.c

@@ -199,7 +199,7 @@ static int url_encoding_for_token(sign_msg* msg,char *token){
 }
 }
 
 
 static void onenet_token(const char* product_id,const char* device_name,const char* device_secret,long long cur_timestamp,char * method,char * version,char *token){
 static void onenet_token(const char* product_id,const char* device_name,const char* device_secret,long long cur_timestamp,char * method,char * version,char *token){
-    size_t  declen = 0, enclen =  0;
+    size_t  declen = 0, enclen =  0,hmac_len = 0;
     char plaintext[64]     = { 0 };
     char plaintext[64]     = { 0 };
     char hmac[64]          = { 0 };
     char hmac[64]          = { 0 };
     char StringForSignature[256] = { 0 };
     char StringForSignature[256] = { 0 };
@@ -212,15 +212,19 @@ static void onenet_token(const char* product_id,const char* device_name,const ch
     sprintf_(StringForSignature, "%s\n%s\n%s\n%s", sign.et, sign.method, sign.res, sign.version);
     sprintf_(StringForSignature, "%s\n%s\n%s\n%s", sign.et, sign.method, sign.res, sign.version);
     if (!strcmp("md5", method)||!strcmp("MD5", method)) {
     if (!strcmp("md5", method)||!strcmp("MD5", method)) {
         luat_crypto_hmac_md5_simple(StringForSignature, strlen(StringForSignature), plaintext, declen, hmac);
         luat_crypto_hmac_md5_simple(StringForSignature, strlen(StringForSignature), plaintext, declen, hmac);
+        hmac_len = 16;
     }else if (!strcmp("sha1", method)||!strcmp("SHA1", method)) {
     }else if (!strcmp("sha1", method)||!strcmp("SHA1", method)) {
         luat_crypto_hmac_sha1_simple(StringForSignature, strlen(StringForSignature),plaintext, declen,  hmac);
         luat_crypto_hmac_sha1_simple(StringForSignature, strlen(StringForSignature),plaintext, declen,  hmac);
+        hmac_len = 20;
     }else if (!strcmp("sha256", method)||!strcmp("SHA256", method)) {
     }else if (!strcmp("sha256", method)||!strcmp("SHA256", method)) {
         luat_crypto_hmac_sha256_simple(StringForSignature, strlen(StringForSignature),plaintext, declen,  hmac);
         luat_crypto_hmac_sha256_simple(StringForSignature, strlen(StringForSignature),plaintext, declen,  hmac);
+        hmac_len = 32;
     }else{
     }else{
         LLOGE("not support: %s",method);
         LLOGE("not support: %s",method);
         return;
         return;
     }
     }
-    luat_str_base64_encode((unsigned char *)sign.sign, sizeof(sign.sign), &enclen, (const unsigned char * )hmac, strlen(hmac));
+    
+    luat_str_base64_encode((unsigned char *)sign.sign, sizeof(sign.sign), &enclen, (const unsigned char * )hmac, hmac_len);
     url_encoding_for_token(&sign,token);
     url_encoding_for_token(&sign,token);
 }
 }