]> git.saurik.com Git - apple/security.git/blob - SecurityTests/clxutils/clAppUtils/sslRingBufferThreads.h
Security-57031.30.12.tar.gz
[apple/security.git] / SecurityTests / clxutils / clAppUtils / sslRingBufferThreads.h
1 /*
2 * sslRingBufferThreads.h - SecureTransport client and server thread
3 * routines which use ringBufferIo for I/O (no sockets).
4 */
5
6 #include <Security/SecureTransport.h>
7 #include <clAppUtils/ringBufferIo.h>
8 #include <CoreFoundation/CoreFoundation.h>
9
10 #ifndef _SSL_RING_BUFFER_THREADS_H_
11 #define _SSL_RING_BUFFER_THREADS_H_
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 /*
18 * arguments to client thread and server pseudothread
19 */
20 typedef struct {
21 CFArrayRef idArray; /* required for server, optional for client */
22 CFArrayRef trustedRoots; /* generally from server's idArray */
23 unsigned xferSize; /* total bytes for client to write and server to
24 * read */
25 void *xferBuf; /* move to/from here */
26 unsigned chunkSize; /* size of xferBuf; client writes this much at
27 * a time */
28 bool runForever; /* if true, ignore xferSize and move data forever
29 * or until error */
30 SSLCipherSuite cipherSuite;
31 SSLProtocol prot;
32 RingBuffer *ringWrite; /* I/O writes to this... */
33 RingBuffer *ringRead; /* ...and reads from this */
34
35 /* client's goFlag is &(server's iAmReady); vice versa */
36 bool iAmReady; /* this thread is ready for handshake */
37 bool *goFlag; /* when both threads see this, they start
38 * their handshakes */
39 bool *abortFlag; /* anyone sets this on error */
40 /* everyone aborts when they see this true */
41 bool pauseOnError; /* call testError() on error */
42
43 /* returned on success */
44 SSLProtocol negotiatedProt;
45 SSLCipherSuite negotiatedCipher;
46
47 CFAbsoluteTime startHandshake;
48 CFAbsoluteTime startData;
49 CFAbsoluteTime endData;
50 } SslRingBufferArgs;
51
52 /*
53 * Client thread - handshake and write sslArgs->xferSize bytes of data.
54 */
55 void *sslRbClientThread(void *arg);
56
57 /*
58 * Server function - like clientThread except it runs from the main thread.
59 * handshake and read sslArgs->xferSize bytes of data.
60 */
61 OSStatus sslRbServerThread(SslRingBufferArgs *sslArgs);
62
63 #ifdef __cplusplus
64 }
65 #endif
66
67 #endif /* _SSL_RING_BUFFER_THREADS_H_*/