aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenĂ© Meusel <[email protected]>2017-11-10 10:02:31 +0100
committerRenĂ© Meusel <[email protected]>2017-11-10 10:02:31 +0100
commitc8dda8ace59fc67704833d32d5fa97b073829726 (patch)
treef55660ebdb73e8ce311b45aef8ac8c705a69e7e5
parent6030502da52089b255bfcd95856e432d9db9a1e7 (diff)
TEST: read (self signed) cert containing BMPString fields
-rw-r--r--src/tests/data/x509test/contains_bmpstring.pem22
-rw-r--r--src/tests/unit_x509.cpp30
2 files changed, 52 insertions, 0 deletions
diff --git a/src/tests/data/x509test/contains_bmpstring.pem b/src/tests/data/x509test/contains_bmpstring.pem
new file mode 100644
index 000000000..c204c4296
--- /dev/null
+++ b/src/tests/data/x509test/contains_bmpstring.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDmDCCAoACCQCJ7TVHW6qlLDANBgkqhkiG9w0BAQUFADCBjTELMAkGA1UEBhMC
+REUxDzANBgNVBAcTBkJlcmxpbjEXMBUGA1UECh4OAG4AZQPHA/UAbgBpA8kxCzAJ
+BgNVBAsTAkRDMR8wHQYDVQQDHhYA6ABuAd0ELwAgBBwB3QQ5BDcETQQ7MSYwJAYJ
+KoZIhvcNAQkBFhdyZW5lLm1ldXNlbEBuZXhlbmlvLmNvbTAeFw0xNzExMTAwODQ5
+MzFaFw0xODExMTAwODQ5MzFaMIGNMQswCQYDVQQGEwJERTEPMA0GA1UEBxMGQmVy
+bGluMRcwFQYDVQQKHg4AbgBlA8cD9QBuAGkDyTELMAkGA1UECxMCREMxHzAdBgNV
+BAMeFgDoAG4B3QQvACAEHAHdBDkENwRNBDsxJjAkBgkqhkiG9w0BCQEWF3JlbmUu
+bWV1c2VsQG5leGVuaW8uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAvykcZZN3B+pWCi4eNnVv4jITDendIJhfjELocgALmgCJer5XH0gdChJMqHre
+bnhpBHEdgivMvVGN2BDCkz5+4WshqwZ8lSXIMlHXaaIy7CulhJUnj2lTsa75jr2F
+BmxUF+NwQMrBOOIs2IFlfqeEnlXgRD3pBv9erZI5ng3ciTgXMCbg21t1E56706cD
+sLKv2OWXZrz+KLIaNvNV5pNW1wLup3sCKhtFRaH721crp2KROvAGkb0R6oNannKm
+DQieQ1g4AR94ihCc1SjaoMydzrFhmyArgsusnkbrl6n14kHfSuyUul355ejSOz+V
+k0HGQMykh2WDo2MPy06oxw5ZAwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQCoE+4W
+OLQ3FuTigBYf7Hv0D+qY58XIV0D9YgJYrCHJL7S31NTbCuoYK2NdfcwE1MUUxb28
+nCIR3jgawN1WlHCeiLkhrD6TnMNjvZ34xVqSmkQ5zIJTo909wFhjGjtByP5fAQqt
+uja2bJOUOg0GRsbrv1c8zCYnz5+bhRNrZqdxWQzB9c10QiMrReYxFY4wPwIVK9y5
+6eYA4dkkhiRV+KAtyPQokn9N5kUM4VjlyYS3IB3DzXlB3Z6mlHP7t/G5Su1Nmkxu
+NhqtL0Vg+oo6DDuzsI+1WZO9saPJnUPSNwu3BDIu56gWHlHw6dZksVK0J7eF5n8d
+rPULI83gQXKxuD+C
+-----END CERTIFICATE-----
diff --git a/src/tests/unit_x509.cpp b/src/tests/unit_x509.cpp
index dd16e4988..e12f7773e 100644
--- a/src/tests/unit_x509.cpp
+++ b/src/tests/unit_x509.cpp
@@ -392,6 +392,35 @@ Test::Result test_x509_utf8()
return result;
}
+Test::Result test_x509_bmpstring()
+ {
+ Test::Result result("X509 with UCS-2 (BMPString) encoded fields");
+
+ try
+ {
+ Botan::X509_Certificate ucs2_cert(Test::data_file("x509test/contains_bmpstring.pem"));
+
+ // UTF-8 encoded fields of test certificate (contains cyrillic and greek letters)
+ const std::string organization =
+ "\x6E\x65\xCF\x87\xCF\xB5\x6E\x69\xCF\x89";
+ const std::string common_name =
+ "\xC3\xA8\x6E\xC7\x9D\xD0\xAF\x20\xD0\x9C\xC7\x9D\xD0\xB9\xD0\xB7\xD1\x8D\xD0\xBB";
+
+ // UTF-8 encoded fields of test certificate (contains only ASCII characters)
+ const std::string location = "Berlin";
+
+ result.test_eq("O", ucs2_cert.issuer_info("O").at(0), organization);
+ result.test_eq("CN", ucs2_cert.issuer_info("CN").at(0), common_name);
+ result.test_eq("L", ucs2_cert.issuer_info("L").at(0), location);
+ }
+ catch (const Botan::Decoding_Error &ex)
+ {
+ result.test_failure(ex.what());
+ }
+
+ return result;
+ }
+
Test::Result test_x509_cert(const std::string& sig_algo, const std::string& hash_fn = "SHA-256")
{
Test::Result result("X509 Unit");
@@ -1170,6 +1199,7 @@ class X509_Cert_Unit_Tests final : public Test
results.push_back(test_cert_status_strings());
results.push_back(test_hashes("ECDSA"));
results.push_back(test_x509_utf8());
+ results.push_back(test_x509_bmpstring());
return results;
}