mirror of
https://github.com/curl/curl.git
synced 2026-07-24 16:07:16 +03:00
base64: base64url encoding has no padding
See RFC4648 section 5 and RFC7540 section 3.2.1. Suppress generation of '=' padding of base64url encoding. This is accomplished by considering the string beginning at offset 64 in the character table as the padding: this is "=" for base64, "" for base64url. Also use strchr() to replace character search loops where possible. Suppress erroneous comments about empty encoding results. Adjust unit test 1302 to unpadded base64url encoding and add tests for empty results. Closes #9139
This commit is contained in:
parent
dfe5a3023b
commit
c2e72c7812
2 changed files with 49 additions and 45 deletions
|
|
@ -89,14 +89,14 @@ Curl_safefree(output);
|
|||
|
||||
rc = Curl_base64url_encode("\xff\x01\xfe\x02", 4, &output, &size);
|
||||
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
|
||||
fail_unless(size == 8, "size should be 8");
|
||||
verify_memory(output, "_wH-Ag==", 8);
|
||||
fail_unless(size == 6, "size should be 6");
|
||||
verify_memory(output, "_wH-Ag", 6);
|
||||
Curl_safefree(output);
|
||||
|
||||
rc = Curl_base64url_encode("iiii", 4, &output, &size);
|
||||
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
|
||||
fail_unless(size == 8, "size should be 8");
|
||||
verify_memory(output, "aWlpaQ==", 8);
|
||||
fail_unless(size == 6, "size should be 6");
|
||||
verify_memory(output, "aWlpaQ", 6);
|
||||
Curl_safefree(output);
|
||||
|
||||
/* 0 length makes it do strlen() */
|
||||
|
|
@ -106,6 +106,18 @@ fail_unless(size == 8, "size should be 8");
|
|||
verify_memory(output, "aWlpaQ==", 8);
|
||||
Curl_safefree(output);
|
||||
|
||||
rc = Curl_base64_encode("", 0, &output, &size);
|
||||
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
|
||||
fail_unless(size == 0, "size should be 0");
|
||||
fail_unless(output && !output[0], "output should be a zero-length string");
|
||||
Curl_safefree(output);
|
||||
|
||||
rc = Curl_base64url_encode("", 0, &output, &size);
|
||||
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
|
||||
fail_unless(size == 0, "size should be 0");
|
||||
fail_unless(output && !output[0], "output should be a zero-length string");
|
||||
Curl_safefree(output);
|
||||
|
||||
rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
|
||||
fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
|
||||
fail_unless(size == 4, "size should be 4");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue