l8w8jwt icon indicating copy to clipboard operation
l8w8jwt copied to clipboard

Please help me! The func l8w8jwt_base64_decode can't parse the result

Open zhouhm opened this issue 2 years ago • 0 comments

int split (char *str, char c, char ***arr)
{
    int count = 1;
    int token_len = 1;
    int i = 0;
    char *p;
    char *t;

    p = str;
    while (*p != '\0')
    {
        if (*p == c)
            count++;
        p++;
    }

    *arr = (char**) malloc(sizeof(char*) * count);
    if (*arr == NULL)
        exit(1);

    p = str;
    while (*p != '\0')
    {
        if (*p == c)
        {
            (*arr)[i] = (char*) malloc( sizeof(char) * token_len );
            if ((*arr)[i] == NULL)
                exit(1);

            token_len = 0;
            i++;
        }
        p++;
        token_len++;
    }
    (*arr)[i] = (char*) malloc( sizeof(char) * token_len );
    if ((*arr)[i] == NULL)
        exit(1);

    i = 0;
    p = str;
    t = ((*arr)[i]);
    while (*p != '\0')
    {
        if (*p != c && *p != '\0')
        {
            *t = *p;
            t++;
        }
        else
        {
            *t = '\0';
            i++;
            t = ((*arr)[i]);
        }
        p++;
    }

    return count;
}

uint8_t* decode_payload = (uint8_t*)malloc(2048 * sizeof(uint8_t));
size_t decode_payload_length;

char **tokens = NULL; // 字符型指针的指针 相当于二维数组
split(JWT, '.', &tokens);

int base64_decode_result = l8w8jwt_base64_decode(0, tokens[1], strlen(tokens[1]), &decode_payload, &decode_payload_length);

If my RSA public key and jwt is 2048 bit generate, it's OK

static const char RSA_PUBLIC_KEY[] = "-----BEGIN PUBLIC KEY-----\n"
                                     "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxXdGsBnQJUjc8ARw9KaT\n"
                                     "81Q1OvKJxNdgT765gV7b1pJffG9Mc4qM+Pe7fKkKEu+mD5jz5aGIvGDanqlq5y/T\n"
                                     "6rQT0OqMoqRxNKSo0iu626TmAihpgRfSjIz+HcE1vQaUX57D71mChyrJPSsNZB0L\n"
                                     "j15i9U7ExDWLY3fQZQ0m3VuTIaw5JZMdIlaPe0PViM7zxB+Z/0nYarEjrQ4xZBNi\n"
                                     "Ex5r+tubG103+qZNxTzpo2+KRE+E2nWF+qLo/gPN8YvNOO1MbDxHZY9ri7iIKPcd\n"
                                     "HWIeFJoTLlF0TRysFEKgmaP3fDsP5GfFv0NztK16KX3hoilwOm0ZuM0PUTORu+ES\n"
                                     "0wIDAQAB\n"
                                     "-----END PUBLIC KEY-----";

char JWT[] = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkb20iOiJzaG9uZ2EuY2MiLCJpcCI6IjE1NC4xNy4zLjE1NyIsInNpZCI6IjI3ODRmYzIwLWM2MWUtNDM4Zi1iM2UwLWZmZDgyYjYzMzgxYSIsImNpZCI6IjU5MmI3ZTJmLTMyMGEtNGJiNi05MmU3LTBjMGFlNzhkNDFhOSIsImlhdCI6MTY1OTc0ODUzMywibmJmIjoxNjU5MjgzMjAwLCJleHAiOjE2NjcyMzE5OTl9.lx2JZUwjiQUgmOmpiDZAD-x9GEspVFMPhuDmuA3re13i7zkQG6hgU2thrcoFDXiYtD_hupkNvruuNhQITFRrXc9gm2N-ptwLJc4B6AHYmzTuZj51No9SYgth4LyL45SD1TThGJKv0MfyniahVdSeIEO9expXJhJfiRuxES2d2fs6s6-sef0M_rhA9FR67QpWwvcdPyqyzM1WksxtfuO7JXe0hRsiLqHXnnPPDGW4IgI6yg42r7m_aCuuvkzaJYASvKzLbKniRUKbvfxsQSb-Ths2dG9nfahg-5c7Un8YeF8KYYNPKtw43rWCigxvTrXmq6IvaOgGa8Ty5G43neMxgA";

If my RSA public key and jwt is 4096 bit generate, it's incorrect

static const char RSA_PUBLIC_KEY[] = "-----BEGIN PUBLIC KEY-----\n"
                                      "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvT9MB8RSgRIdWiAEn1Sk\n"
                                      "8lW4jn+w2bkkrBwUmC0Mtgrl3iGrMVuA3zPBVhrxle4kkNk8aU5M/0smRrjPB71Q\n"
                                      "yBqAbtCZ9E5mIT5S8tMBORobLf7fnvyrmIYzAmIq9Q3Z2SZ0UBBg1xesAQi8qSCN\n"
                                      "vL5OvbwGdSPnlAijhbR0qR8O615lpi3zEPa/ABskwHcAEU2KoNAjHzZ+Od7N5PV1\n"
                                      "QIQtN/+AJYfwN7XctGS9l8SVWxExWYDg38+/5fGceD5Z13uITlB2C7QERRcWj1nH\n"
                                      "bR+lXFZt+7nMjWSXjWDBcTWeGzotrCr3Zy9XC9sqAhRLWoHfbgoiiDtihHBz8IPc\n"
                                      "1zdZFlQy5Fl/VomzfJmb+flcXe9ZfPfKo2Nx3OE42jlMrqaKtT0Vr9O5c7xH/1iU\n"
                                      "vIkev8rXhsXn2bRtczOUgdj1zD+77B40OxBUyNdlEwFqsQq0VBbGDq7xKXnAnl1X\n"
                                      "+LjOOfDGpjsCw9RY98T1jcms2DhTJ/JA+6Tz0ifvb8AWTU4LGJbd/XBpD5M/7qNr\n"
                                      "GkLhsNIDVYQm9d9DGeV9QwsOgTQ9UDBEO+U9uCWFuH8upoV9OWuKaqbcOhFWqaHh\n"
                                      "Fhrl33a0IuMpmsOWhRwQXEksN2hRxIsaMrbsWz48Nuk/CJjVSvy7MbUpEYIPceYM\n"
                                      "yhWlY7L8ZbGa98IaUBE/ZHkCAwEAAQ==\n"
                                      "-----END PUBLIC KEY-----";

char JWT[] = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkb20iOiJhYmMuYWJjIiwiaXAiOiIxMjMuMTIzLjEyMy4xMjMiLCJzaWQiOiIwZmVkNDAxOS1hZjRhLTQwNGYtOWJhNC1mMzkwMDUzYTVlMTQiLCJjaWQiOiJmYTFiOGQ3NS03ODU5LTRiN2QtOWU1Mi03NTRlOGNkZTZmNzEiLCJpYXQiOjE2NjAwMjczNTksIm5iZiI6MTY1OTI4MzIwMSwiZXhwIjoxNjY3MjMxOTk5fQ.VFmyodB2Z0RqacXHUrn6oa-oWw7RSilgXfxalltkrp19W40pubvp633ZdBH0J9tmJJp2Adw0ayeclJJRXI9Xb9iSHXgShnDUwxRunxN3O5GgBLfYs9NDFUTw2D4d5EkO7PZlNMSr5U0IpX9fAjz-THcdKw4GvYDljdPVWClsGn7Ujhy9QHS4PoL1JN3pTXeLobma0H5MnCaBeTVyicXRILmmdhqKNJuNVGB86qM0jl8LX7i55-3Zev0Nxwal6vJuQihkwaXWy3aBwBPVK8hRafJLitLg0CO4SGNzSBGEf8sQzYPhMR-Lqe40RUPdUw4c8vnYTc67CZmf12pWgUkDyv-DeShQRyXRq0M_-0xCxdtHGPQSt3XC_mmGCs2jZbQka2BLttGlb8gz_gSIxTdOSOEt9BC5SO7LcjFjA6FMGJKfDy6pkiehQpFvopgV0_OpDddurG0mcr_zKGK3aEXgFJqCSgQMkkxlKR9ZNQ77XPuC2jV_-B1LGnxkAldeDCjEjYKnpJHYDm3O2BjnQfttJXflSe8Mkcp_DkYQI9PbbF-7hmSESD9jIe5CcZToYFSbZWLhKTio5ZNjSjjetiaYPoNcM71-HC6Qx1UFO_prB7_uRV59Ujkinogj0QFhVBm_SuFqSs7It8aclVrX2bhwsYDy-CZS_1D3BiHit1obR7w";

At this time base64_decode_result is 200 , and I can't get decode_payload

zhouhm avatar Aug 09 '22 08:08 zhouhm