+/* Attempt to encode the test structure and compare it to custom DER */
+static int do_encode_custom(EXPECTED *input,
+ const TEST_CUSTOM_DATA *custom_data,
+ const TEST_PACKAGE *package)
+{
+ unsigned char *expected = NULL;
+ size_t expected_length = make_custom_der(custom_data, &expected, 0);
+ int ret;
+
+ if (expected_length == 0)
+ return -1;
+
+ ret = do_encode(input, expected, expected_length, package);
+ OPENSSL_free(expected);
+
+ return ret;
+}
+
+static int do_print_item(const TEST_PACKAGE *package)
+{
+#define DATA_BUF_SIZE 256
+ unsigned char buf[DATA_BUF_SIZE];
+ const ASN1_ITEM *i = ASN1_ITEM_ptr(package->asn1_type);
+ ASN1_VALUE *o = (ASN1_VALUE *)&buf;
+ int ret;
+
+ OPENSSL_assert(package->encode_expectations_elem_size <= DATA_BUF_SIZE);
+
+ (void)RAND_bytes(buf, (int)package->encode_expectations_elem_size);
+ ret = ASN1_item_print(bio_err, o, 0, i, NULL);
+
+ return ret;
+}
+