]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_ssl/regressions/ssl-50-server.c
Security-57336.1.9.tar.gz
[apple/security.git] / Security / libsecurity_ssl / regressions / ssl-50-server.c
diff --git a/Security/libsecurity_ssl/regressions/ssl-50-server.c b/Security/libsecurity_ssl/regressions/ssl-50-server.c
deleted file mode 100644 (file)
index 513079b..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-
-#include <stdbool.h>
-#include <pthread.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include <CoreFoundation/CoreFoundation.h>
-
-#include <AssertMacros.h>
-#include <Security/SecureTransportPriv.h> /* SSLSetOption */
-#include <Security/SecureTransport.h>
-#include <Security/SecPolicy.h>
-#include <Security/SecTrust.h>
-#include <Security/SecIdentity.h>
-#include <Security/SecIdentityPriv.h>
-#include <Security/SecCertificatePriv.h>
-#include <Security/SecKeyPriv.h>
-#include <Security/SecItem.h>
-#include <Security/SecRandom.h>
-
-#include <utilities/array_size.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <mach/mach_time.h>
-
-#include <stdio.h>
-#include <unistd.h>
-#include <strings.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <errno.h>
-
-
-#if TARGET_OS_IPHONE
-#include <Security/SecRSAKey.h>
-#endif
-
-#include "ssl_regressions.h"
-#include "ssl-utils.h"
-
-typedef struct {
-    SSLContextRef st;
-    int comm;
-    CFArrayRef certs;
-} ssl_test_handle;
-
-
-// MARK: -
-// MARK: SecureTransport support
-
-#if 0
-static void hexdump(const uint8_t *bytes, size_t len) {
-       size_t ix;
-    printf("socket write(%p, %lu)\n", bytes, len);
-       for (ix = 0; ix < len; ++ix) {
-        if (!(ix % 16))
-            printf("\n");
-               printf("%02X ", bytes[ix]);
-       }
-       printf("\n");
-}
-#else
-#define hexdump(bytes, len)
-#endif
-
-
-/* Listen to on port */
-static int SocketListen(int port)
-{
-    struct sockaddr_in  sa;
-    int                                        sock;
-    int                 val  = 1;
-
-    if ((sock=socket(AF_INET, SOCK_STREAM, 0))==-1) {
-        perror("socket");
-        return -errno;
-    }
-
-    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&val, sizeof(val));
-
-    memset((char *) &sa, 0, sizeof(sa));
-    sa.sin_family = AF_INET;
-    sa.sin_port = htons(port);
-    sa.sin_addr.s_addr = htonl(INADDR_ANY);
-
-    if(bind (sock, (struct sockaddr *)&sa, sizeof(sa))==-1)
-    {
-        perror("bind");
-        return -errno;
-    }
-
-    if(listen(sock, 5)==-1)
-    {
-        perror("listen");
-        return -errno;
-    }
-
-    return sock;
-}
-
-
-static OSStatus SocketWrite(SSLConnectionRef conn, const void *data, size_t *length)
-{
-       size_t len = *length;
-       uint8_t *ptr = (uint8_t *)data;
-
-    do {
-        ssize_t ret;
-        do {
-            hexdump(ptr, len);
-            ret = write((int)conn, ptr, len);
-        } while ((ret < 0) && (errno == EAGAIN || errno == EINTR));
-        if (ret > 0) {
-            len -= ret;
-            ptr += ret;
-        }
-        else
-            return -36;
-    } while (len > 0);
-
-    *length = *length - len;
-    return errSecSuccess;
-}
-
-static OSStatus SocketRead(SSLConnectionRef conn, void *data, size_t *length)
-{
-       size_t len = *length;
-       uint8_t *ptr = (uint8_t *)data;
-
-    do {
-        ssize_t ret;
-        do {
-            ret = read((int)conn, ptr, len);
-        } while ((ret < 0) && (errno == EINPROGRESS || errno == EAGAIN || errno == EINTR));
-        if (ret > 0) {
-            len -= ret;
-            ptr += ret;
-        } else {
-            printf("read error(%d): ret=%zd, errno=%d\n", (int)conn, ret, errno);
-            return -errno;
-        }
-    } while (len > 0);
-
-    *length = *length - len;
-    return errSecSuccess;
-}
-
-
-static SSLContextRef make_ssl_ref(bool server, int sock, CFArrayRef certs)
-{
-    SSLContextRef ctx = SSLCreateContext(kCFAllocatorDefault, server?kSSLServerSide:kSSLClientSide, kSSLStreamType);
-    require(ctx, out);
-
-    require_noerr(SSLSetIOFuncs(ctx, (SSLReadFunc)SocketRead, (SSLWriteFunc)SocketWrite), out);
-    require_noerr(SSLSetConnection(ctx, (SSLConnectionRef)(intptr_t)sock), out);
-    require_noerr(SSLSetCertificate(ctx, certs), out);
-
-    return ctx;
-out:
-    if (ctx)
-        CFRelease(ctx);
-    return NULL;
-}
-
-
-static ssl_test_handle *
-ssl_test_handle_create(int comm, CFArrayRef certs)
-{
-    ssl_test_handle *handle = calloc(1, sizeof(ssl_test_handle));
-    if (handle) {
-        handle->comm = comm;
-        handle->certs = certs;
-        handle->st = make_ssl_ref(true, comm, certs);
-    }
-    return handle;
-}
-
-static void *securetransport_ssl_thread(void *arg)
-{
-    OSStatus ortn;
-    int sock = (int)arg;
-
-    int socket = accept(sock, NULL, NULL);
-
-    CFArrayRef server_certs = server_chain();
-    ssl_test_handle * ssl = ssl_test_handle_create(socket, server_certs);
-    SSLContextRef ctx = ssl->st;
-
-    pthread_setname_np("server thread");
-
-    //uint64_t start = mach_absolute_time();
-    do {
-        ortn = SSLHandshake(ctx);
-    } while (ortn == errSSLWouldBlock);
-
-    require_noerr_action_quiet(ortn, out,
-                               fprintf(stderr, "Fell out of SSLHandshake with error: %d\n", (int)ortn));
-
-    //uint64_t elapsed = mach_absolute_time() - start;
-    //fprintf(stderr, "setr elapsed: %lld\n", elapsed);
-
-    /*
-    SSLProtocol proto = kSSLProtocolUnknown;
-    require_noerr_quiet(SSLGetNegotiatedProtocolVersion(ctx, &proto), out); */
-
-    SSLCipherSuite cipherSuite;
-    require_noerr_quiet(ortn = SSLGetNegotiatedCipher(ctx, &cipherSuite), out);
-    //fprintf(stderr, "st negotiated %s\n", sslcipher_itoa(cipherSuite));
-
-
-out:
-    CFRelease(server_certs);
-
-    SSLClose(ctx);
-    CFRelease(ctx);
-    if(ssl) {
-        close(ssl->comm);
-        free(ssl);
-    }
-    pthread_exit((void *)(intptr_t)ortn);
-    return NULL;
-}
-
-
-
-static void
-tests(void)
-{
-    pthread_t server_thread;
-    int socket;
-
-    socket = SocketListen(4443);
-
-    ok(socket>=0, "SocketListen failed");
-    if(socket<0) {
-        return;
-    }
-    //fprintf(stderr, "session_id: %d\n", session_id);
-
-    pthread_create(&server_thread, NULL, securetransport_ssl_thread, socket);
-
-    system("/usr/bin/openssl s_client -msg -debug -connect localhost:4443");
-
-    int server_err;
-    pthread_join(server_thread, (void*)&server_err);
-
-    ok(!server_err, "Server thread failed err=%d", server_err);
-}
-
-int ssl_50_server(int argc, char *const *argv)
-{
-
-    plan_tests(1 + 1 /*cert*/);
-
-
-    tests();
-
-    return 0;
-}