summaryrefslogtreecommitdiff
path: root/pjlib-util/src/pjlib-util-test/encryption.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib-util/src/pjlib-util-test/encryption.c')
-rw-r--r--pjlib-util/src/pjlib-util-test/encryption.c103
1 files changed, 68 insertions, 35 deletions
diff --git a/pjlib-util/src/pjlib-util-test/encryption.c b/pjlib-util/src/pjlib-util-test/encryption.c
index 3db0d9a0..b0d3d6a8 100644
--- a/pjlib-util/src/pjlib-util-test/encryption.c
+++ b/pjlib-util/src/pjlib-util-test/encryption.c
@@ -494,6 +494,12 @@ static int crc32_test(void)
return 0;
}
+enum
+{
+ ENCODE = 1,
+ DECODE = 2,
+ ENCODE_DECODE = 3
+};
/*
* Base64 test vectors (RFC 4648)
@@ -502,48 +508,70 @@ static struct base64_test_vec
{
const char *base256;
const char *base64;
+ unsigned flag;
} base64_test_vec[] =
{
{
"",
- ""
+ "",
+ ENCODE_DECODE
},
{
"f",
- "Zg=="
+ "Zg==",
+ ENCODE_DECODE
},
{
"fo",
- "Zm8="
+ "Zm8=",
+ ENCODE_DECODE
},
{
"foo",
- "Zm9v"
+ "Zm9v",
+ ENCODE_DECODE
},
{
"foob",
- "Zm9vYg=="
+ "Zm9vYg==",
+ ENCODE_DECODE
},
{
"fooba",
"Zm9vYmE=",
+ ENCODE_DECODE
},
{
"foobar",
- "Zm9vYmFy"
+ "Zm9vYmFy",
+ ENCODE_DECODE
},
{
"\x14\xfb\x9c\x03\xd9\x7e",
- "FPucA9l+"
+ "FPucA9l+",
+ ENCODE_DECODE
},
{
"\x14\xfb\x9c\x03\xd9",
- "FPucA9k="
+ "FPucA9k=",
+ ENCODE_DECODE
},
{
"\x14\xfb\x9c\x03",
- "FPucAw=="
- }
+ "FPucAw==",
+ ENCODE_DECODE
+ },
+ /* with whitespaces */
+ {
+ "foobar",
+ "Zm9v\r\nYmFy",
+ DECODE
+ },
+ {
+ "foobar",
+ "\nZ\r\nm 9\tv\nYm\nF\ny\n",
+ DECODE
+ },
};
@@ -556,38 +584,43 @@ static int base64_test(void)
PJ_LOG(3, (THIS_FILE, " base64 test.."));
for (i=0; i<PJ_ARRAY_SIZE(base64_test_vec); ++i) {
- /* Encode test */
pj_str_t input;
- int out_len = sizeof(output);
-
- rc = pj_base64_encode((pj_uint8_t*)base64_test_vec[i].base256,
- strlen(base64_test_vec[i].base256),
- output, &out_len);
- if (rc != PJ_SUCCESS)
- return -90;
+ int out_len;
- if (out_len != (int)strlen(base64_test_vec[i].base64))
- return -91;
-
- output[out_len] = '\0';
- if (strcmp(output, base64_test_vec[i].base64) != 0)
- return -92;
+ /* Encode test */
+ if (base64_test_vec[i].flag & ENCODE) {
+ out_len = sizeof(output);
+ rc = pj_base64_encode((pj_uint8_t*)base64_test_vec[i].base256,
+ strlen(base64_test_vec[i].base256),
+ output, &out_len);
+ if (rc != PJ_SUCCESS)
+ return -90;
+
+ if (out_len != (int)strlen(base64_test_vec[i].base64))
+ return -91;
+
+ output[out_len] = '\0';
+ if (strcmp(output, base64_test_vec[i].base64) != 0)
+ return -92;
+ }
/* Decode test */
- out_len = sizeof(output);
- input.ptr = (char*)base64_test_vec[i].base64;
- input.slen = strlen(base64_test_vec[i].base64);
- rc = pj_base64_decode(&input, (pj_uint8_t*)output, &out_len);
- if (rc != PJ_SUCCESS)
- return -95;
+ if (base64_test_vec[i].flag & DECODE) {
+ out_len = sizeof(output);
+ input.ptr = (char*)base64_test_vec[i].base64;
+ input.slen = strlen(base64_test_vec[i].base64);
+ rc = pj_base64_decode(&input, (pj_uint8_t*)output, &out_len);
+ if (rc != PJ_SUCCESS)
+ return -95;
- if (out_len != (int)strlen(base64_test_vec[i].base256))
- return -96;
+ if (out_len != (int)strlen(base64_test_vec[i].base256))
+ return -96;
- output[out_len] = '\0';
+ output[out_len] = '\0';
- if (strcmp(output, base64_test_vec[i].base256) != 0)
- return -97;
+ if (strcmp(output, base64_test_vec[i].base256) != 0)
+ return -97;
+ }
}
return 0;