int result;
result = certsvc_certificate_new_from_file(instance, location.c_str(), &certificate);
BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
- BOOST_CHECK_EQUAL(certificate.privateHandler, 0);
checkCertificateField(certificate, CERTSVC_SUBJECT_COMMON_NAME, subjectCommonName);
}
certsvc_instance_free(instance);
}
+POSITIVE_TEST_CASE(T_certsvc_certificate_is_root_ca)
+{
+ int result;
+ CertSvcCertificate certificate;
+ int status;
+
+ BOOST_REQUIRE_EQUAL(certsvc_instance_new(&instance), CERTSVC_SUCCESS);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Root::Path,
+ certificate,
+ CertChain::Root::SubjectCommonName);
+
+ result = certsvc_certificate_is_root_ca(certificate, &status);
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+ BOOST_CHECK_EQUAL(status, CERTSVC_TRUE);
+
+ certsvc_certificate_free(certificate);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Intermediate::Path,
+ certificate,
+ CertChain::Intermediate::SubjectCommonName);
+
+ result = certsvc_certificate_is_root_ca(certificate, &status);
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+ BOOST_CHECK_EQUAL(status, CERTSVC_FALSE);
+
+ certsvc_certificate_free(certificate);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Signer::Path,
+ certificate,
+ CertChain::Signer::SubjectCommonName);
+
+ result = certsvc_certificate_is_root_ca(certificate, &status);
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+ BOOST_CHECK_EQUAL(status, CERTSVC_FALSE);
+
+ certsvc_certificate_free(certificate);
+ certsvc_instance_free(instance);
+}
+
+NEGATIVE_TEST_CASE(T_certsvc_certificate_is_root_ca_wrong_argument){
+ int result;
+ CertSvcCertificate certificate;
+ int status = -1;
+
+ BOOST_REQUIRE_EQUAL(certsvc_instance_new(&instance), CERTSVC_SUCCESS);
+
+ certificate.privateInstance = instance;
+ certificate.privateHandler = 0;
+ result = certsvc_certificate_is_root_ca(certificate, &status);
+ BOOST_CHECK_EQUAL(result, CERTSVC_WRONG_ARGUMENT);
+ BOOST_CHECK_EQUAL(status, -1);
+
+ certsvc_instance_free(instance);
+}
+
+POSITIVE_TEST_CASE(T_certsvc_certificate_chain_sort)
+{
+ int result;
+ CertSvcCertificate certificate_array[3];
+ CertSvcCertificate cert1, cert2, cert3;
+ size_t size = 3;
+
+ BOOST_REQUIRE_EQUAL(certsvc_instance_new(&instance), CERTSVC_SUCCESS);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Root::Path,
+ cert1,
+ CertChain::Root::SubjectCommonName);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Intermediate::Path,
+ cert2,
+ CertChain::Intermediate::SubjectCommonName);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Signer::Path,
+ cert3,
+ CertChain::Signer::SubjectCommonName);
+
+ certificate_array[0] = cert1;
+ certificate_array[1] = cert2;
+ certificate_array[2] = cert3;
+
+ result = certsvc_certificate_chain_sort(certificate_array, size);
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ certsvc_certificate_free(cert1);
+ certsvc_certificate_free(cert2);
+ certsvc_certificate_free(cert3);
+ certsvc_instance_free(instance);
+}
+
+NEGATIVE_TEST_CASE(T_certsvc_certificate_chain_sort_wrong_argument)
+{
+ int result;
+ CertSvcCertificate certificate_array[2];
+ CertSvcCertificate cert;
+ size_t size = 2;
+
+ BOOST_REQUIRE_EQUAL(certsvc_instance_new(&instance), CERTSVC_SUCCESS);
+
+ result = certsvc_certificate_chain_sort(nullptr, size);
+ BOOST_CHECK_EQUAL(result, CERTSVC_WRONG_ARGUMENT);
+
+ result = certsvc_certificate_chain_sort(certificate_array, 1);
+ BOOST_CHECK_EQUAL(result, CERTSVC_WRONG_ARGUMENT);
+
+ CertSvcCertificate certInvalid;
+ certInvalid.privateHandler = -1;
+ certInvalid.privateInstance = instance;
+
+ certificate_array[1] = certInvalid;
+ result = certsvc_certificate_chain_sort(certificate_array, size);
+ BOOST_CHECK_EQUAL(result, CERTSVC_WRONG_ARGUMENT);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Signer::Path,
+ cert,
+ CertChain::Signer::SubjectCommonName);
+
+ certificate_array[1] = cert;
+ certificate_array[0] = certInvalid;
+
+ result = certsvc_certificate_chain_sort(certificate_array, size);
+ BOOST_CHECK_EQUAL(result, CERTSVC_WRONG_ARGUMENT);
+
+ certsvc_certificate_free(cert);
+ certsvc_instance_free(instance);
+}
+
+NEGATIVE_TEST_CASE(T_certsvc_certificate_chain_sort_failed)
+{
+ int result;
+ CertSvcCertificate certificate_array[3];
+ CertSvcCertificate cert1, cert2;
+ size_t size = 3;
+
+ BOOST_REQUIRE_EQUAL(certsvc_instance_new(&instance), CERTSVC_SUCCESS);
+
+ makeCertificateFromFile(
+ instance,
+ CertChain::Signer::Path,
+ cert1,
+ CertChain::Signer::SubjectCommonName);
+
+ makeCertificateFromFile(
+ instance,
+ ServerCertInfo::ServerCertPemPath,
+ cert2,
+ ServerCertInfo::SubjectCommonName);
+
+ certificate_array[0] = cert1;
+ certificate_array[1] = cert2;
+ certificate_array[2] = cert1;
+ result = certsvc_certificate_chain_sort(certificate_array, size);
+ BOOST_CHECK_EQUAL(result, CERTSVC_FAIL);
+
+ certsvc_certificate_free(cert1);
+ certsvc_certificate_free(cert2);
+ certsvc_instance_free(instance);
+}
+
POSITIVE_TEST_CASE(T_certsvc_certificate_dup_x509)
{
int result;