|
@@ -0,0 +1,81 @@
|
|
|
+#include <assert.h>
|
|
|
+#include <errno.h>
|
|
|
+#include <stdio.h>
|
|
|
+#include <string.h>
|
|
|
+
|
|
|
+#include <openssl/bio.h>
|
|
|
+#include <openssl/ssl.h>
|
|
|
+#include <openssl/x509.h>
|
|
|
+
|
|
|
+#include "qa.h"
|
|
|
+#include "qa_sock.h"
|
|
|
+
|
|
|
+FILE* ferr;
|
|
|
+
|
|
|
+void set_up(void)
|
|
|
+{
|
|
|
+ ferr = fopen("/dev/null", "w");
|
|
|
+
|
|
|
+ /* Initialize SSL Library by registering algorithms. */
|
|
|
+ SSL_library_init();
|
|
|
+ /* trash directly network informative messages */
|
|
|
+ if (ferr) bio_err = BIO_new_fp(ferr, BIO_NOCLOSE);
|
|
|
+ else errno = 0;
|
|
|
+}
|
|
|
+
|
|
|
+void tear_down(void)
|
|
|
+{
|
|
|
+ fclose(ferr);
|
|
|
+}
|
|
|
+void test_host_port(void)
|
|
|
+{
|
|
|
+ char uri[100];
|
|
|
+ char *host, *port;
|
|
|
+
|
|
|
+ /* uris of the form host:port shall be recognized */
|
|
|
+ strcpy(uri, "host:port");
|
|
|
+ host_port(uri, &host, &port);
|
|
|
+ assert(!strcmp(host, "host") &&
|
|
|
+ !strcmp(port, "port"));
|
|
|
+ /* uris given as urls shall be recognized */
|
|
|
+ strcpy(uri, "https://cheese");
|
|
|
+ host_port(uri, &host, &port);
|
|
|
+ assert(!strcmp(host, "cheese") &&
|
|
|
+ !strcmp(port, "https"));
|
|
|
+ /* uris containing just a hostname shall be recognized */
|
|
|
+ strcpy(uri, "queer");
|
|
|
+ host_port(uri, &host, &port);
|
|
|
+ assert(!strcmp(host, "queer") &&
|
|
|
+ !port);
|
|
|
+}
|
|
|
+
|
|
|
+void test_get_remote_cert(void)
|
|
|
+{
|
|
|
+ X509 *crt;
|
|
|
+ char url[100];
|
|
|
+
|
|
|
+ /* NULL shall be returned if the host does not exists. */
|
|
|
+ strcpy(url, "space_oddity");
|
|
|
+ crt = get_remote_cert(url);
|
|
|
+ assert(!crt);
|
|
|
+
|
|
|
+#ifdef NETWORK_TESTS
|
|
|
+ /* Google™ shall support https, and accept tcp connections on https default port. */
|
|
|
+ strcpy(url, "google.com:443");
|
|
|
+ crt = get_remote_cert(url);
|
|
|
+ assert(crt);
|
|
|
+
|
|
|
+#else
|
|
|
+ printf("Skipping %s..\n", __func__);
|
|
|
+
|
|
|
+#endif /* NETWORK_TESTS */
|
|
|
+}
|
|
|
+int main(int argc, char **argv)
|
|
|
+{
|
|
|
+ set_up();
|
|
|
+
|
|
|
+ test_host_port();
|
|
|
+ test_get_remote_cert();
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|