test: add support for DER format in pkwrite tests
Signed-off-by: Valerio Setti <valerio.setti@nordicsemi.no>
diff --git a/tests/suites/test_suite_pkwrite.function b/tests/suites/test_suite_pkwrite.function
index 8fc5f58..98a117f 100644
--- a/tests/suites/test_suite_pkwrite.function
+++ b/tests/suites/test_suite_pkwrite.function
@@ -3,11 +3,12 @@
#include "mbedtls/pem.h"
#include "mbedtls/oid.h"
-static void pk_write_check_common(char *key_file, int is_public_key)
+static void pk_write_check_common(char *key_file, int is_public_key, int is_der)
{
mbedtls_pk_context key;
unsigned char *buf = NULL;
unsigned char *check_buf = NULL;
+ unsigned char *start_buf;
size_t check_buf_len;
int ret;
@@ -21,17 +22,30 @@
mbedtls_pk_init(&key);
if (is_public_key) {
TEST_ASSERT(mbedtls_pk_parse_public_keyfile(&key, key_file) == 0);
- ret = mbedtls_pk_write_pubkey_pem(&key, buf, check_buf_len);
+ if (is_der) {
+ ret = mbedtls_pk_write_pubkey_der(&key, buf, check_buf_len);
+ } else {
+ ret = mbedtls_pk_write_pubkey_pem(&key, buf, check_buf_len);
+ }
} else {
TEST_ASSERT(mbedtls_pk_parse_keyfile(&key, key_file, NULL,
mbedtls_test_rnd_std_rand, NULL) == 0);
- ret = mbedtls_pk_write_key_pem(&key, buf, check_buf_len);
+ if (is_der) {
+ ret = mbedtls_pk_write_key_der(&key, buf, check_buf_len);
+ } else {
+ ret = mbedtls_pk_write_key_pem(&key, buf, check_buf_len);
+ }
}
- TEST_ASSERT(ret == 0);
- /* check_buf_len also includes the NULL termination char */
- TEST_EQUAL(check_buf_len - 1, strlen((char *) buf));
- TEST_ASSERT(memcmp((char *) buf, (char *) check_buf, check_buf_len) == 0);
+ if (is_der) {
+ TEST_ASSERT(ret > 0);
+ start_buf = buf + check_buf_len - ret;
+ } else {
+ TEST_ASSERT(ret == 0);
+ start_buf = buf;
+ }
+
+ TEST_ASSERT(memcmp((char *) start_buf, (char *) check_buf, check_buf_len) == 0);
exit:
mbedtls_free(buf);
@@ -46,17 +60,17 @@
*/
/* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */
-void pk_write_pubkey_check(char *key_file)
+void pk_write_pubkey_check(char *key_file, int is_der)
{
- pk_write_check_common(key_file, 1);
+ pk_write_check_common(key_file, 1, is_der);
goto exit; /* make the compiler happy */
}
/* END_CASE */
/* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */
-void pk_write_key_check(char *key_file)
+void pk_write_key_check(char *key_file, int is_der)
{
- pk_write_check_common(key_file, 0);
+ pk_write_check_common(key_file, 0, is_der);
goto exit; /* make the compiler happy */
}
/* END_CASE */