首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino HMAC-SHA256 bearssl/bearssl_hmac.h

Arduino HMAC-SHA256 bearssl/bearssl_hmac.h
EN

Stack Overflow用户
提问于 2020-10-09 03:02:13
回答 1查看 177关注 0票数 0

我想使用Arduino框架为ESP8266实现JWT。我需要尽可能少的依赖项。所以我想使用"bearssl/bearssl_hmac.h“库,因为这个库已经包含在框架中了。缺点是,它没有太多的文档。到目前为止,我得到的是从'CreateToken‘方法内部调用的'Sign’方法,但Serial Debug输出只是垃圾,如下所示。��)�몆~�j§��␚d�\���O�␞p�yJ␇�np���?p��?�␃��

代码语言:javascript
复制
    static void Sign(String payload, String secret, unsigned char buffer[32])
    {
        br_hmac_key_context keyCtx;
        br_hmac_key_init(&keyCtx, &br_sha256_vtable, secret.c_str(), secret.length());
        br_hmac_context hmacCtx;
        br_hmac_init(&hmacCtx, &keyCtx, 0);
        br_hmac_update(&hmacCtx, payload.c_str(), payload.length());
        br_hmac_out(&hmacCtx, buffer);
    }

    static void CreateToken(JsonObjectConst& jsonObj)
    {
        char json[256];
        serializeJson(jsonObj, json);
        // DebugPrintln(json);

        auto encodedPayload = Encode(json, 256);
        DebugPrintln(encodedPayload);
        
        char jsonWebToken[256];
        strcpy(jsonWebToken, HEADER);
        strcat(jsonWebToken, ".");
        strcat(jsonWebToken, encodedPayload);

        DebugPrintln(jsonWebToken);

        char* secret = "Test";
        unsigned char buffer[32];

        Sign(jsonWebToken, secret, buffer);

        DebugPrintln((char*)buffer);
    }

你能给我点帮助吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-11-05 05:54:58

我今天调查这个和你一样的原因。我认为您可以很好地获得签名(至少您可以像我一样计算SHA256 HMAC )。

HEADER base64 url是编码的吗?另外,编码base64 url会编码json吗?

一旦你有了你的签名字节,你只需要对它们进行base64 url编码,并将其附加到你的jsonWebToken的末尾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64269058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档