return retValue;
}
-Certificate::AltNameSet Certificate::getAlternativeNameDNS() const
+Certificate::AltNameSet Certificate::getAlternativeName(int type) const
{
AltNameSet set;
GENERAL_NAME *namePart = NULL;
VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
"openssl sk_GENERAL_NAME_pop err.");
- if (GEN_DNS == namePart->type) {
- char *temp = reinterpret_cast<char *>(ASN1_STRING_data(namePart->d.dNSName));
+ if (type == namePart->type) {
+ char *temp;
+
+ switch (type) {
+ case GEN_DNS:
+ temp = reinterpret_cast<char *>(ASN1_STRING_data(namePart->d.dNSName));
+ break;
+
+ case GEN_URI:
+ temp = reinterpret_cast<char *>(ASN1_STRING_data(namePart->d.uniformResourceIdentifier));
+ break;
+
+ default:
+ VcoreThrowMsg(Certificate::Exception::WrongParamError,
+ "Not support alt name type : " << type);
+ }
if (!temp) {
set.insert(std::string());
} else {
set.insert(std::string(temp));
- LogDebug("FOUND GEN_DNS: " << temp);
+ LogDebug("FOUND AltName: " << temp);
}
} else {
LogDebug("FOUND GEN TYPE ID: " << namePart->type);
return set;
}
+Certificate::AltNameSet Certificate::getAlternativeNameDNS() const
+{
+ return getAlternativeName(GEN_DNS);
+}
+
+Certificate::AltNameSet Certificate::getAlternativeNameURI() const
+{
+ return getAlternativeName(GEN_URI);
+}
+
ASN1_TIME *Certificate::getNotAfterTime() const
{
auto timeafter = X509_get_notAfter(m_x509);
// 4 of them are "string similar" types so it is possible
// to create more generic function.
AltNameSet getAlternativeNameDNS() const;
+ AltNameSet getAlternativeNameURI() const;
time_t getNotAfter() const;
std::string getField(FieldType type, int fieldNid) const;
X509 *m_x509;
+
+private:
+ AltNameSet getAlternativeName(int type) const;
+
};
} // namespace ValidationCore
Certificate cert3(TestData::google3rd, Certificate::FORM_BASE64);
RUNNER_ASSERT(cert3.isCA() == 0);
}
+
+/*
+ * test: Certificate::getAlternativeNameURI
+ * description: Certificate should parse data passed to object constructor.
+ * expected: Function getAlternativeNameURI should return list of
+ * alternativeNames hardcoded in certificate.
+ */
+RUNNER_TEST(T0035_Certificate_AltNameURI)
+{
+ Certificate cert(TestData::certGenUriIncluded, Certificate::FORM_BASE64);
+ Certificate::AltNameSet nameSet = cert.getAlternativeNameURI();
+ RUNNER_ASSERT(nameSet.size() == 8);
+ std::string str("URN:tizen:deviceid=2.0#R1q+lPsGCM7PAEPvzUcc38xPCLw=");
+ RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
+ str = std::string("fakeURI");
+ RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
+}
"GxP8YQSxi513O2dWVCXB8S6erIz9E/bcfdXoCPyQdn42y3IEoJvPvBS3S55fD4+Q"
"Q43GPhumSg9a6S3hnyw8DX5OiUGmqgQrtSeDRsNmWqtWizEQbe+fotZpEn/7zYTa"
"tk1ni/k5jDH/QeuG";
+
+const std::string TestData::certGenUriIncluded =
+ "MIIFKjCCBBKgAwIBAgIBZTANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMCS1Ix"
+ "FDASBgNVBAgMC1NvdXRoIEtvcmVhMQ4wDAYDVQQHDAVTdXdvbjEmMCQGA1UECgwd"
+ "U2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4xDzANBgNVBAsMBk1vYmlsZTEw"
+ "MC4GA1UEAwwnU2Ftc3VuZyBUaXplbiBERVZFTE9QRVIgUHVibGljIENBIENsYXNz"
+ "MB4XDTE2MTAxMTA2MDcxNloXDTE3MTAxMTA2MDcxNlowcDERMA8GA1UEAwwIVGl6"
+ "ZW5TREsxCTAHBgNVBAsMADEJMAcGA1UECgwAMQkwBwYDVQQHDAAxCTAHBgNVBAgM"
+ "ADEJMAcGA1UEBhMAMSQwIgYJKoZIhvcNAQkBFhVqYzgxNS5sZWVAc2Ftc3VuZy5j"
+ "b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCNnAGGY63LX79FH4cq"
+ "WXPCL995W3hZ8l1q9vlJgH00KV7jgPj0NTc2rjKgp/gmbco/vZV8Bp/tbAYDvVRu"
+ "8ObgcjiUDANm9jRJLNu0GBVmhbBQJI5rmZ9xJofJSEHTdaO8aeGfyAvMgdrzyvE1"
+ "QYX/QYKN5/YMMtf/A/uN1d+e20/F89UFsMGC/2LzkUwIJGe9PR1w6x/sb9+y6cap"
+ "XbfjoFN5TEL+nI5qxUNDmTXwglN6HVE3eBfw4Doz9SIKM0RH5vbUPOsmuuw0obHh"
+ "Qh5qpAGNGxzRibUM7Kv9rLpTtD6WpC7beVq8Gbct7zZCzEEEyAvf3vI4aDieOE/E"
+ "0tZxAgMBAAGjggGeMIIBmjCCAZYGA1UdEQSCAY0wggGJhhRVUk46dGl6ZW46cGFj"
+ "a2FnZWlkPYYzVVJOOnRpemVuOmRldmljZWlkPTIuMCNSMXErbFBzR0NNN1BBRVB2"
+ "elVjYzM4eFBDTHc9hjNVUk46dGl6ZW46ZGV2aWNlaWQ9Mi4wI1IycStsUHNHQ003"
+ "UEFFUHZ6VWNjMzh4UENMdz2GM1VSTjp0aXplbjpkZXZpY2VpZD0yLjAjUjNxK2xQ"
+ "c0dDTTdQQUVQdnpVY2MzOHhQQ0x3PYYzVVJOOnRpemVuOmRldmljZWlkPTIuMCNS"
+ "NHErbFBzR0NNN1BBRVB2elVjYzM4eFBDTHc9hjNVUk46dGl6ZW46ZGV2aWNlaWQ9"
+ "Mi4wI1I1cStsUHNHQ003UEFFUHZ6VWNjMzh4UENMdz2GM1VSTjp0aXplbjpkZXZp"
+ "Y2VpZD0yLjAjUjZxK2xQc0dDTTdQQUVQdnpVY2MzOHhQQ0x3PYYzVVJOOnRpemVu"
+ "OmRldmljZWlkPTIuMCNSN3ErbFBzR0NNN1BBRVB2elVjYzM4eFBDTHc9MA0GCSqG"
+ "SIb3DQEBCwUAA4IBAQBJ6uM+XOwTFl39wj5VdvDZr5GzreKG8PUw7L2wLeVxC2h9"
+ "+q3jKannvhrHjCC6mPzjVhYQgoH02ywqDmfMJnE8h1GaF2KGZbuVkL/S02UZ+CwJ"
+ "6J/2dBsakzn1yAjloGq1TQ/AFeN7tEC1ZB88XeLlH6fBKLC41HxLlEKZmyVU281Y"
+ "Hu1gDU7+7BzMY21+RkPKVCJXnyZmv34LL+V199OnLphurx4kfrkRKz2ujTDefzLG"
+ "qERauXufUJ8eWPBgjgxewkQJeUK+pqQ1XbvQA7hHDTxbtbU4sjYHIrDEm2LVJB7b"
+ "+eUuTos3aMVELp3gK4wnj/WoSPJ4hudhGUco4cLT";
+
extern const std::string google3rd;
extern const std::string certVerisign;
+extern const std::string certGenUriIncluded;
}