ret = inet_pton(AF_INET, addr_str, &addr);
if (ret != 1)
+ {
return -1;
+ }
addr = ntohl(addr);
ret = inet_pton(AF_INET6, addr_str, &addr);
if (ret != 1)
+ {
return -1;
+ }
printf("CMD: ip -6 addr add %s/%d dev %s\n", addr_str, prefixlen, iface);
int ret;
if (!dst_str)
+ {
return -1;
+ }
ret = inet_pton(AF_INET, dst_str, &dst);
if (ret != 1)
+ {
return -1;
+ }
dst = ntohl(dst);
printf("CMD: ip route add %s/%d dev %s", dst_str, prefixlen, iface);
if (metric > 0)
+ {
printf(" metric %d", metric);
+ }
printf("\n");
return net_route_v4_add(NULL, &dst, prefixlen, NULL, iface, 0, metric);
int ret;
if (!dst_str || !gw_str)
+ {
return -1;
+ }
ret = inet_pton(AF_INET, dst_str, &dst);
if (ret != 1)
+ {
return -1;
+ }
ret = inet_pton(AF_INET, gw_str, &gw);
if (ret != 1)
+ {
return -1;
+ }
dst = ntohl(dst);
gw = ntohl(gw);
printf("CMD: ip route add %s/%d dev %s via %s", dst_str, prefixlen, iface,
gw_str);
if (metric > 0)
+ {
printf(" metric %d", metric);
+ }
printf("\n");
return net_route_v4_add(NULL, &dst, prefixlen, &gw, iface, 0, metric);
int ret;
if (!dst_str)
+ {
return -1;
+ }
ret = inet_pton(AF_INET6, dst_str, &dst);
if (ret != 1)
+ {
return -1;
+ }
printf("CMD: ip -6 route add %s/%d dev %s", dst_str, prefixlen, iface);
if (metric > 0)
+ {
printf(" metric %d", metric);
+ }
printf("\n");
return net_route_v6_add(NULL, &dst, prefixlen, NULL, iface, 0, metric);
int ret;
if (!dst_str || !gw_str)
+ {
return -1;
+ }
ret = inet_pton(AF_INET6, dst_str, &dst);
if (ret != 1)
+ {
return -1;
+ }
ret = inet_pton(AF_INET6, gw_str, &gw);
if (ret != 1)
+ {
return -1;
+ }
printf("CMD: ip -6 route add %s/%d dev %s via %s", dst_str, prefixlen,
iface, gw_str);
if (metric > 0)
+ {
printf(" metric %d", metric);
+ }
printf("\n");
return net_route_v6_add(NULL, &dst, prefixlen, &gw, iface, 0, metric);
{
case 0:
return net__iface_up(true);
+
case 1:
return net__iface_mtu_set(1281);
+
case 2:
return net__addr_v4_add("10.255.255.1", 24);
+
case 3:
return net__addr_v6_add("2001::1", 64);
+
case 4:
return net__route_v4_add("11.11.11.0", 24, 0);
+
case 5:
return net__route_v4_add_gw("11.11.12.0", 24, "10.255.255.2", 0);
+
case 6:
return net__route_v6_add("2001:babe:cafe:babe::", 64, 600);
+
case 7:
return net__route_v6_add_gw("2001:cafe:babe::", 48, "2001::2", 600);
+
default:
printf("invalid test: %d\n", test);
break;
};
static int
-test_packet_id_write_setup(void **state) {
+test_packet_id_write_setup(void **state)
+{
struct test_packet_id_write_data *data =
- calloc(1, sizeof(struct test_packet_id_write_data));
+ calloc(1, sizeof(struct test_packet_id_write_data));
if (!data)
{
}
static int
-test_packet_id_write_teardown(void **state) {
+test_packet_id_write_teardown(void **state)
+{
free(*state);
return 0;
}
}
int
-main(void) {
+main(void)
+{
const struct CMUnitTest tests[] = {
- cmocka_unit_test_setup_teardown(test_packet_id_write_short,
- test_packet_id_write_setup, test_packet_id_write_teardown),
- cmocka_unit_test_setup_teardown(test_packet_id_write_long,
- test_packet_id_write_setup, test_packet_id_write_teardown),
- cmocka_unit_test_setup_teardown(test_packet_id_write_short_prepend,
- test_packet_id_write_setup, test_packet_id_write_teardown),
- cmocka_unit_test_setup_teardown(test_packet_id_write_long_prepend,
- test_packet_id_write_setup, test_packet_id_write_teardown),
- cmocka_unit_test_setup_teardown(test_packet_id_write_short_wrap,
- test_packet_id_write_setup, test_packet_id_write_teardown),
- cmocka_unit_test_setup_teardown(test_packet_id_write_long_wrap,
- test_packet_id_write_setup, test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_short,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_long,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_short_prepend,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_long_prepend,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_short_wrap,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
+ cmocka_unit_test_setup_teardown(test_packet_id_write_long_wrap,
+ test_packet_id_write_setup,
+ test_packet_id_write_teardown),
};
return cmocka_run_group_tests_name("packet_id tests", tests, NULL, NULL);
#define PARAM2 "param two"
static const char *test_server_key = \
- "-----BEGIN OpenVPN tls-crypt-v2 server key-----\n"
- "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
- "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
- "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8=\n"
- "-----END OpenVPN tls-crypt-v2 server key-----\n";
+ "-----BEGIN OpenVPN tls-crypt-v2 server key-----\n"
+ "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
+ "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
+ "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8=\n"
+ "-----END OpenVPN tls-crypt-v2 server key-----\n";
static const char *test_client_key = \
- "-----BEGIN OpenVPN tls-crypt-v2 client key-----\n"
- "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
- "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
- "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6P\n"
- "kJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/\n"
- "wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v\n"
- "8PHy8/T19vf4+fr7/P3+/xd9pcB0qUYZsWvkrLcfGmzPJPM8a7r0mEWdXwbDadSV\n"
- "LHg5bv2TwlmPR3HgaMr8o9LTh9hxUTkrH3S0PfKRNwcso86ua/dBFTyXsM9tg4aw\n"
- "3dS6ogH9AkaT+kRRDgNcKWkQCbwmJK2JlfkXHBwbAtmn78AkNuho6QCFqCdqGab3\n"
- "zh2vheFqGMPdGpukbFrT3rcO3VLxUeG+RdzXiMTCpJSovFBP1lDkYwYJPnz6daEh\n"
- "j0TzJ3BVru9W3CpotdNt7u09knxAfpCxjtrP3semsDew/gTBtcfQ/OoTFyFHnN5k\n"
- "RZ+q17SC4nba3Pp8/Fs0+hSbv2tJozoD8SElFq7SIWJsciTYh8q8f5yQxjdt4Wxu\n"
- "/Z5wtPCAZ0tOzj4ItTI77fBOYRTfEayzHgEr\n"
- "-----END OpenVPN tls-crypt-v2 client key-----\n";
+ "-----BEGIN OpenVPN tls-crypt-v2 client key-----\n"
+ "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
+ "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
+ "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6P\n"
+ "kJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/\n"
+ "wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v\n"
+ "8PHy8/T19vf4+fr7/P3+/xd9pcB0qUYZsWvkrLcfGmzPJPM8a7r0mEWdXwbDadSV\n"
+ "LHg5bv2TwlmPR3HgaMr8o9LTh9hxUTkrH3S0PfKRNwcso86ua/dBFTyXsM9tg4aw\n"
+ "3dS6ogH9AkaT+kRRDgNcKWkQCbwmJK2JlfkXHBwbAtmn78AkNuho6QCFqCdqGab3\n"
+ "zh2vheFqGMPdGpukbFrT3rcO3VLxUeG+RdzXiMTCpJSovFBP1lDkYwYJPnz6daEh\n"
+ "j0TzJ3BVru9W3CpotdNt7u09knxAfpCxjtrP3semsDew/gTBtcfQ/OoTFyFHnN5k\n"
+ "RZ+q17SC4nba3Pp8/Fs0+hSbv2tJozoD8SElFq7SIWJsciTYh8q8f5yQxjdt4Wxu\n"
+ "/Z5wtPCAZ0tOzj4ItTI77fBOYRTfEayzHgEr\n"
+ "-----END OpenVPN tls-crypt-v2 client key-----\n";
/* Has custom metadata of AABBCCDD (base64) */
-static const char *test_client_key_metadata= \
- "-----BEGIN OpenVPN tls-crypt-v2 client key-----\n"
- "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
- "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
- "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6P\n"
- "kJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/\n"
- "wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v\n"
- "8PHy8/T19vf4+fr7/P3+/2ntp1WCqhcLjJQY/igkjNt3Yb6i0neqFkfrOp2UCDcz\n"
- "6RSJtPLZbvOOKUHk2qwxPYUsFCnz/IWV6/ZiLRrabzUpS8oSN1HS6P7qqAdrHKgf\n"
- "hVTHasdSf2UdMTPC7HBgnP9Ll0FhKN0h7vSzbbt7QM7wH9mr1ecc/Mt0SYW2lpwA\n"
- "aJObYGTyk6hTgWm0g/MLrworLrezTqUHBZzVsu+LDyqLWK1lzJNd66MuNOsGA4YF\n"
- "fbCsDh8n3H+Cw1k5YNBZDYYJOtVUgBWXheO6vgoOmqDdI0dAQ3hVo9DE+SkCFjgf\n"
- "l4FY2yLEh9ZVZZrl1eD1Owh/X178CkHrBJYl9LNQSyQEKlDGWwBLQ/pY3qtjctr3\n"
- "pV62MPQdBo+1lcsjDCJVQA6XUyltas4BKQ==\n"
- "-----END OpenVPN tls-crypt-v2 client key-----\n";
+static const char *test_client_key_metadata = \
+ "-----BEGIN OpenVPN tls-crypt-v2 client key-----\n"
+ "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v\n"
+ "MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f\n"
+ "YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6P\n"
+ "kJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/\n"
+ "wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v\n"
+ "8PHy8/T19vf4+fr7/P3+/2ntp1WCqhcLjJQY/igkjNt3Yb6i0neqFkfrOp2UCDcz\n"
+ "6RSJtPLZbvOOKUHk2qwxPYUsFCnz/IWV6/ZiLRrabzUpS8oSN1HS6P7qqAdrHKgf\n"
+ "hVTHasdSf2UdMTPC7HBgnP9Ll0FhKN0h7vSzbbt7QM7wH9mr1ecc/Mt0SYW2lpwA\n"
+ "aJObYGTyk6hTgWm0g/MLrworLrezTqUHBZzVsu+LDyqLWK1lzJNd66MuNOsGA4YF\n"
+ "fbCsDh8n3H+Cw1k5YNBZDYYJOtVUgBWXheO6vgoOmqDdI0dAQ3hVo9DE+SkCFjgf\n"
+ "l4FY2yLEh9ZVZZrl1eD1Owh/X178CkHrBJYl9LNQSyQEKlDGWwBLQ/pY3qtjctr3\n"
+ "pV62MPQdBo+1lcsjDCJVQA6XUyltas4BKQ==\n"
+ "-----END OpenVPN tls-crypt-v2 client key-----\n";
int
__wrap_parse_line(const char *line, char **p, const int n, const char *file,
};
static int
-test_tls_crypt_setup(void **state) {
+test_tls_crypt_setup(void **state)
+{
struct test_tls_crypt_context *ctx = calloc(1, sizeof(*ctx));
*state = ctx;
}
static int
-test_tls_crypt_teardown(void **state) {
+test_tls_crypt_teardown(void **state)
+{
struct test_tls_crypt_context *ctx =
- (struct test_tls_crypt_context *)*state;
+ (struct test_tls_crypt_context *)*state;
free_buf(&ctx->source);
free_buf(&ctx->ciphertext);
return 0;
}
-static void skip_if_tls_crypt_not_supported(struct test_tls_crypt_context *ctx)
+static void
+skip_if_tls_crypt_not_supported(struct test_tls_crypt_context *ctx)
{
if (!ctx->kt.cipher || !ctx->kt.digest)
{
* Check that short messages are successfully wrapped-and-unwrapped.
*/
static void
-tls_crypt_loopback(void **state) {
+tls_crypt_loopback(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* Check that zero-byte messages are successfully wrapped-and-unwrapped.
*/
static void
-tls_crypt_loopback_zero_len(void **state) {
+tls_crypt_loopback_zero_len(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* Check that max-length messages are successfully wrapped-and-unwrapped.
*/
static void
-tls_crypt_loopback_max_len(void **state) {
+tls_crypt_loopback_max_len(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* Check that too-long messages are gracefully rejected.
*/
static void
-tls_crypt_fail_msg_too_long(void **state) {
+tls_crypt_fail_msg_too_long(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* are not accepted.
*/
static void
-tls_crypt_fail_invalid_key(void **state) {
+tls_crypt_fail_invalid_key(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* Check that replayed packets are not accepted.
*/
static void
-tls_crypt_fail_replay(void **state) {
+tls_crypt_fail_replay(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
* know the packet ID yet.
*/
static void
-tls_crypt_ignore_replay(void **state) {
+tls_crypt_ignore_replay(void **state)
+{
struct test_tls_crypt_context *ctx = (struct test_tls_crypt_context *) *state;
skip_if_tls_crypt_not_supported(ctx);
};
static int
-test_tls_crypt_v2_setup(void **state) {
+test_tls_crypt_v2_setup(void **state)
+{
struct test_tls_crypt_v2_context *ctx = calloc(1, sizeof(*ctx));
*state = ctx;
}
static int
-test_tls_crypt_v2_teardown(void **state) {
+test_tls_crypt_v2_teardown(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
free_key_ctx_bi(&ctx->server_keys);
free_key_ctx_bi(&ctx->client_key);
* Check wrapping and unwrapping a tls-crypt-v2 client key without metadata.
*/
static void
-tls_crypt_v2_wrap_unwrap_no_metadata(void **state) {
+tls_crypt_v2_wrap_unwrap_no_metadata(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
struct buffer wrapped_client_key = alloc_buf_gc(TLS_CRYPT_V2_MAX_WKC_LEN,
&ctx->gc);
* metadata.
*/
static void
-tls_crypt_v2_wrap_unwrap_max_metadata(void **state) {
+tls_crypt_v2_wrap_unwrap_max_metadata(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
- uint8_t* metadata =
- buf_write_alloc(&ctx->metadata, TLS_CRYPT_V2_MAX_METADATA_LEN);
+ uint8_t *metadata =
+ buf_write_alloc(&ctx->metadata, TLS_CRYPT_V2_MAX_METADATA_LEN);
assert_true(rand_bytes(metadata, TLS_CRYPT_V2_MAX_METADATA_LEN));
assert_true(tls_crypt_v2_wrap_client_key(&ctx->wkc, &ctx->client_key2,
&ctx->metadata,
assert_true(buf_equal(&ctx->metadata, &unwrap_metadata));
struct tls_wrap_ctx wrap_ctx = {
- .mode = TLS_WRAP_CRYPT,
- .tls_crypt_v2_server_key = ctx->server_keys.encrypt,
+ .mode = TLS_WRAP_CRYPT,
+ .tls_crypt_v2_server_key = ctx->server_keys.encrypt,
};
assert_true(tls_crypt_v2_extract_client_key(&ctx->wkc, &wrap_ctx, NULL));
tls_wrap_free(&wrap_ctx);
* as expected.
*/
static void
-tls_crypt_v2_wrap_too_long_metadata(void **state) {
+tls_crypt_v2_wrap_too_long_metadata(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
assert_true(buf_inc_len(&ctx->metadata, TLS_CRYPT_V2_MAX_METADATA_LEN+1));
assert_false(tls_crypt_v2_wrap_client_key(&ctx->wkc, &ctx->client_key2,
* fails as expected.
*/
static void
-tls_crypt_v2_wrap_unwrap_wrong_key(void **state) {
+tls_crypt_v2_wrap_unwrap_wrong_key(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
assert_true(tls_crypt_v2_wrap_client_key(&ctx->wkc, &ctx->client_key2,
&ctx->metadata,
* buffer fails as expected.
*/
static void
-tls_crypt_v2_wrap_unwrap_dst_too_small(void **state) {
+tls_crypt_v2_wrap_unwrap_dst_too_small(void **state)
+{
struct test_tls_crypt_v2_context *ctx =
- (struct test_tls_crypt_v2_context *) *state;
+ (struct test_tls_crypt_v2_context *) *state;
- uint8_t* metadata =
- buf_write_alloc(&ctx->metadata, TLS_CRYPT_V2_MAX_METADATA_LEN);
+ uint8_t *metadata =
+ buf_write_alloc(&ctx->metadata, TLS_CRYPT_V2_MAX_METADATA_LEN);
assert_true(rand_bytes(metadata, TLS_CRYPT_V2_MAX_METADATA_LEN));
assert_true(tls_crypt_v2_wrap_client_key(&ctx->wkc, &ctx->client_key2,
&ctx->metadata,
struct key2 unwrapped_client_key2 = { 0 };
struct buffer unwrapped_metadata =
- alloc_buf_gc(TLS_CRYPT_V2_MAX_METADATA_LEN-1, &ctx->gc);
+ alloc_buf_gc(TLS_CRYPT_V2_MAX_METADATA_LEN-1, &ctx->gc);
assert_false(tls_crypt_v2_unwrap_client_key(&unwrapped_client_key2,
&unwrapped_metadata, ctx->wkc,
&ctx->server_keys.decrypt));
}
static void
-test_tls_crypt_v2_write_server_key_file(void **state) {
+test_tls_crypt_v2_write_server_key_file(void **state)
+{
const char *filename = "testfilename.key";
expect_string(__wrap_buffer_write_file, filename, filename);
}
static void
-test_tls_crypt_v2_write_client_key_file(void **state) {
+test_tls_crypt_v2_write_client_key_file(void **state)
+{
const char *filename = "testfilename.key";
/* Test writing the client key */
will_return(__wrap_buffer_read_from_file, test_client_key);
tls_crypt_v2_write_client_key_file(filename, NULL, INLINE_FILE_TAG,
- test_server_key);
+ test_server_key);
}
static void
-test_tls_crypt_v2_write_client_key_file_metadata(void **state) {
+test_tls_crypt_v2_write_client_key_file_metadata(void **state)
+{
const char *filename = "testfilename.key";
const char *b64metadata = "AABBCCDD";
}
int
-main(void) {
+main(void)
+{
const struct CMUnitTest tests[] = {
cmocka_unit_test_setup_teardown(tls_crypt_loopback,
test_tls_crypt_setup,