aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2017-12-29 11:52:57 -0500
committerJack Lloyd <[email protected]>2017-12-29 11:52:57 -0500
commit121700a187df586b0181df0ac791fdd2f9cf2f0e (patch)
tree114cafcbd168291253eb675297777832edbf5bac /src
parent33eead87d274cc35842389bbe591585a2cb675a3 (diff)
Add some tests of ASN1_Pretty_Printer
The output is not fixed and may change in the future, but changes should at least be noticed.
Diffstat (limited to 'src')
-rw-r--r--src/lib/asn1/asn1_print.h3
-rw-r--r--src/tests/data/asn1_print/input1.derbin0 -> 34 bytes
-rw-r--r--src/tests/data/asn1_print/input2.derbin0 -> 40 bytes
-rwxr-xr-xsrc/tests/data/asn1_print/input3.derbin0 -> 402 bytes
-rwxr-xr-xsrc/tests/data/asn1_print/input4.derbin0 -> 238 bytes
-rw-r--r--src/tests/data/asn1_print/output1.txt8
-rw-r--r--src/tests/data/asn1_print/output2.txt11
-rw-r--r--src/tests/data/asn1_print/output3.txt20
-rw-r--r--src/tests/data/asn1_print/output4.txt11
-rw-r--r--src/tests/test_asn1.cpp27
10 files changed, 79 insertions, 1 deletions
diff --git a/src/lib/asn1/asn1_print.h b/src/lib/asn1/asn1_print.h
index 4f9fa8f4d..cd3c7ffe1 100644
--- a/src/lib/asn1/asn1_print.h
+++ b/src/lib/asn1/asn1_print.h
@@ -71,7 +71,8 @@ class BOTAN_DLL ASN1_Formatter
};
/**
-* Format ASN.1 data into human readable strings
+* Format ASN.1 data into human readable output. The exact form of the output for
+* any particular input is not guaranteed and may change from release to release.
*/
class BOTAN_DLL ASN1_Pretty_Printer final : public ASN1_Formatter
{
diff --git a/src/tests/data/asn1_print/input1.der b/src/tests/data/asn1_print/input1.der
new file mode 100644
index 000000000..35886af48
--- /dev/null
+++ b/src/tests/data/asn1_print/input1.der
Binary files differ
diff --git a/src/tests/data/asn1_print/input2.der b/src/tests/data/asn1_print/input2.der
new file mode 100644
index 000000000..0bb89d564
--- /dev/null
+++ b/src/tests/data/asn1_print/input2.der
Binary files differ
diff --git a/src/tests/data/asn1_print/input3.der b/src/tests/data/asn1_print/input3.der
new file mode 100755
index 000000000..00f09b618
--- /dev/null
+++ b/src/tests/data/asn1_print/input3.der
Binary files differ
diff --git a/src/tests/data/asn1_print/input4.der b/src/tests/data/asn1_print/input4.der
new file mode 100755
index 000000000..09a14bbb4
--- /dev/null
+++ b/src/tests/data/asn1_print/input4.der
Binary files differ
diff --git a/src/tests/data/asn1_print/output1.txt b/src/tests/data/asn1_print/output1.txt
new file mode 100644
index 000000000..68f7389ea
--- /dev/null
+++ b/src/tests/data/asn1_print/output1.txt
@@ -0,0 +1,8 @@
+ d= 0, l= 32: SEQUENCE
+ d= 1, l= 1: INTEGER 05
+ d= 1, l= 6: PRINTABLE STRING string
+ d= 1, l= 6: SET
+ d= 2, l= 1: BOOLEAN true
+ d= 2, l= 1: INTEGER 63
+ d= 1, l= 5: OCTET STRING 0000000000
+ d= 1, l= 4: BIT STRING FFFFFF
diff --git a/src/tests/data/asn1_print/output2.txt b/src/tests/data/asn1_print/output2.txt
new file mode 100644
index 000000000..d2aa9647b
--- /dev/null
+++ b/src/tests/data/asn1_print/output2.txt
@@ -0,0 +1,11 @@
+ d= 0, l= 38: SEQUENCE
+ d= 1, l= 1: INTEGER
+ d= 1, l= 6: OCTET STRING public
+ d= 1, l= 25: cons [0] context
+ d= 2, l= 1: INTEGER 26
+ d= 2, l= 1: INTEGER
+ d= 2, l= 1: INTEGER
+ d= 2, l= 14: SEQUENCE
+ d= 3, l= 12: SEQUENCE
+ d= 4, l= 8: OBJECT 1.3.6.1.2.1.1.2.0
+ d= 4, l= 0: NULL
diff --git a/src/tests/data/asn1_print/output3.txt b/src/tests/data/asn1_print/output3.txt
new file mode 100644
index 000000000..38a5f74fb
--- /dev/null
+++ b/src/tests/data/asn1_print/output3.txt
@@ -0,0 +1,20 @@
+ d= 0, l= 397: cons [33] appl
+ d= 1, l= 333: cons [78] appl
+ d= 2, l= 1: TAG(41) 5F290100
+ d= 2, l= 16: INTEGER Bx10DECVCx7fEPASS00001
+ d= 2, l= 253: cons [73] appl
+ d= 3, l= 10: OBJECT 0.4.0.127.0.7.2.2.2.2.2
+ d= 3, l= 28: BOOLEAN 811CD7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF
+ d= 3, l= 28: INTEGER 821C68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43
+ d= 3, l= 28: BIT STRING 831C2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B
+ d= 3, l= 57: OCTET STRING 8439040D9029AD2C7E5CF4340823B2A87DC68C9E4CE3174C1E6EFDEE12C07D58AA56F772C0726F24C6B89E4ECDAC24354B9E99CAA3F6D3761402CD
+ d= 3, l= 28: NULL 851CD7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F
+ d= 3, l= 57: OBJECT 8639045FE7B42614096E67E3B25675EFBBD94B9F1244B17228F109F07856D285867B1F72FA60E4929D88C0BF61035A7C3ECF17CA2C81532308C390
+ d= 3, l= 1: TAG(7) 870101
+ d= 2, l= 16: TAG(32) x5fx20x10DECVCAEPASS00001
+ d= 2, l= 14: cons [76] appl
+ d= 3, l= 9: OBJECT 0.4.0.127.0.7.3.1.2.1
+ d= 3, l= 1: PRINTABLE STRING 5301C1
+ d= 2, l= 6: TAG(37) 5F2506000700080108
+ d= 2, l= 6: TAG(36) 5F2406010000080108
+ d= 1, l= 56: TAG(55) 5F37386978982008CBD24950ADBECEE03A1675660B7FAFBD2D77CF17A5D128CFD9609B5BD0518D28D4D212CAE337F4F47495EDE92C0D7D15EA657D
diff --git a/src/tests/data/asn1_print/output4.txt b/src/tests/data/asn1_print/output4.txt
new file mode 100644
index 000000000..ed27ed5f8
--- /dev/null
+++ b/src/tests/data/asn1_print/output4.txt
@@ -0,0 +1,11 @@
+ d= 0, l= 235: cons [7] appl
+ d= 1, l= 154: cons [33] appl
+ d= 2, l= 92: cons [78] appl
+ d= 3, l= 1: TAG(41) 5F290100
+ d= 3, l= 71: cons [73] appl
+ d= 4, l= 10: OBJECT 0.4.0.127.0.7.2.2.2.2.2
+ d= 4, l= 57: OBJECT 8639044E4EC55A2E6596F030E7FA5CD42BBC034891A0A8C1EF7C1A007A8047B6D5A883C1D5E2A8FC7CE08CF7F07B063EB8EE3E2AF1836BE7DA1577
+ d= 3, l= 11: TAG(32) 5F200B444531222A20237EFF20AD
+ d= 2, l= 56: TAG(55) 5F3738571A971D19B664F9B03AEF178D32E5EDF9DB5C4945D449D5E4AE63B102DABFF3D4DF00D1BC83BB582981D6B48ED41F89F0FC628C7F89A0F5
+ d= 1, l= 16: INTEGER 4210444531222A20237EFF20AD3030303130
+ d= 1, l= 56: TAG(55) 5F3738423A93F9E40B0A3488AF6F716848531A24BAB3A2613BD6D830470D2936B1F93061A00A4B6BAA9C3A180272A60F91FD975DB3CF8D8179370C
diff --git a/src/tests/test_asn1.cpp b/src/tests/test_asn1.cpp
index 633f57602..4e324f04d 100644
--- a/src/tests/test_asn1.cpp
+++ b/src/tests/test_asn1.cpp
@@ -12,6 +12,7 @@
#include <botan/asn1_str.h>
#include <botan/asn1_print.h>
#endif
+#include <fstream>
namespace Botan_Tests {
@@ -290,6 +291,32 @@ class ASN1_Tests final : public Test
BOTAN_REGISTER_TEST("asn1", ASN1_Tests);
+class ASN1_Printer_Tests final : public Test
+ {
+ public:
+ std::vector<Test::Result> run() override
+ {
+ Test::Result result("ASN1_Pretty_Printer");
+
+ Botan::ASN1_Pretty_Printer printer;
+
+ const size_t num_tests = 4;
+
+ for(size_t i = 1; i <= num_tests; ++i)
+ {
+ std::string i_str = std::to_string(i);
+ const std::vector<uint8_t> input1 = Test::read_binary_data_file("asn1_print/input" + i_str + ".der");
+ const std::string expected1 = Test::read_data_file("asn1_print/output" + i_str + ".txt");
+
+ result.test_eq("Test " + i_str, printer.print(input1), expected1);
+ }
+
+ return {result};
+ }
+ };
+
+BOTAN_REGISTER_TEST("asn1_printer", ASN1_Printer_Tests);
+
#endif
}