Ind.ie is now Small Technology Foundation.
Commit b492a569 authored by Stefan van den Oord's avatar Stefan van den Oord

Updated Podfile for Cocoapods 1.0 and `pod update`

parent bbd6d436
platform :ios, '8.0'
use_frameworks!
pod 'Pulse', :path => '../..'
pod 'OpenSSL-for-iOS', '~> 1.0.2.d.0'
target 'PulseDiscoveryBrowser' do
pod 'Pulse', :path => '../..'
pod 'OpenSSL-for-iOS', '~> 1.0.2.d.0'
end
PODS:
- Base32 (1.0.2)
- CocoaAsyncSocket (7.4.2)
- IGDigest (1.1.2)
- CocoaAsyncSocket (7.4.3):
- CocoaAsyncSocket/All (= 7.4.3)
- CocoaAsyncSocket/All (7.4.3):
- CocoaAsyncSocket/GCD
- CocoaAsyncSocket/RunLoop
- CocoaAsyncSocket/GCD (7.4.3)
- CocoaAsyncSocket/RunLoop (7.4.3)
- IGDigest (1.1.3)
- lz4 (128)
- NetUtils (1.3.2)
- OpenSSL-for-iOS (1.0.2.d.1)
......@@ -24,12 +30,14 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
Base32: 4e6b6d6c344b48da363c5268f9c391d37893401f
CocoaAsyncSocket: f5783bdedd232d91b89769bc4b5a1580aed518ad
IGDigest: 066753c10f3f1b593b00037b9ee93dc96b9e7762
CocoaAsyncSocket: a18c75dca4b08723628a0bacca6e94803d90be91
IGDigest: b8e27edd36468bc87951645b841531229256019a
lz4: 5e066195ca751d552becaa026f8fe213ff738adf
NetUtils: 0e2985b5cbd56824b9304a26aea4784f0927f23c
OpenSSL-for-iOS: d7a30add88a1969b052135adbe48452af231ed32
Pulse: d46a429852b5603fadeffca899cd522231707a75
SwiftBytes: 262e08479bc103bbb4eccd296e8b8ffb2102f7c3
COCOAPODS: 0.39.0
PODFILE CHECKSUM: 5d24f7a36957d14d9483c8797ba220cbf3b42e0a
COCOAPODS: 1.0.0.beta.8
......@@ -17,7 +17,19 @@ pod 'CocoaAsyncSocket'
#### Carthage
CocoaAsyncSocket is [Carthage](https://github.com/Carthage/Carthage) compatible. To include it, build your project with Carthage, then drag `Carthage/Build/iOS/CocoaAsyncSocket.framework` into your project.
CocoaAsyncSocket is [Carthage](https://github.com/Carthage/Carthage) compatible. To include it add the following line to your `Cartfile`
```bash
github "robbiehanson/CocoaAsyncSocket" "master"
```
The project is currently configured to build for **iOS**, **tvOS** and **Mac**. After building with carthage the resultant frameworks will be stored in:
* `Carthage/Build/iOS/CocoaAsyncSocket.framework`
* `Carthage/Build/tvOS/CocoaAsyncSocket.framework`
* `Carthage/Build/Mac/CocoaAsyncSocket.framework`
Select the correct framework(s) and drag it into your project.
#### Manual
......
//
// CocoaAsyncSocket.h
// CocoaAsyncSocket
//
// Created by Derek Clarkson on 10/08/2015.
// Copyright © 2015 Robbie Hanson. All rights reserved.
//
@import Foundation;
//! Project version number for CocoaAsyncSocket.
FOUNDATION_EXPORT double cocoaAsyncSocketVersionNumber;
//! Project version string for CocoaAsyncSocket.
FOUNDATION_EXPORT const unsigned char cocoaAsyncSocketVersionString[];
#import <CocoaAsyncSocket/AsyncSocket.h>
#import <CocoaAsyncSocket/AsyncUdpSocket.h>
#import <CocoaAsyncSocket/GCDAsyncSocket.h>
#import <CocoaAsyncSocket/GCDAsyncUdpSocket.h>
......@@ -158,6 +158,15 @@ typedef NS_ENUM(NSInteger, GCDAsyncSocketError) {
**/
- (BOOL)acceptOnInterface:(NSString *)interface port:(uint16_t)port error:(NSError **)errPtr;
/**
* Tells the socket to begin listening and accepting connections on the unix domain at the given url.
* When a connection is accepted, a new instance of GCDAsyncSocket will be spawned to handle it,
* and the socket:didAcceptNewSocket: delegate method will be invoked.
*
* The socket will listen on all available interfaces (e.g. wifi, ethernet, etc)
**/
- (BOOL)acceptOnUrl:(NSURL *)url error:(NSError **)errPtr;
#pragma mark Connecting
/**
......@@ -273,6 +282,10 @@ typedef NS_ENUM(NSInteger, GCDAsyncSocketError) {
viaInterface:(NSString *)interface
withTimeout:(NSTimeInterval)timeout
error:(NSError **)errPtr;
/**
* Connects to the unix domain socket at the given url, using the specified timeout.
*/
- (BOOL)connectToUrl:(NSURL *)url withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr;
#pragma mark Disconnecting
......@@ -336,6 +349,7 @@ typedef NS_ENUM(NSInteger, GCDAsyncSocketError) {
**/
@property (atomic, readonly) NSString *connectedHost;
@property (atomic, readonly) uint16_t connectedPort;
@property (atomic, readonly) NSURL *connectedUrl;
@property (atomic, readonly) NSString *localHost;
@property (atomic, readonly) uint16_t localPort;
......@@ -1060,6 +1074,12 @@ typedef NS_ENUM(NSInteger, GCDAsyncSocketError) {
**/
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port;
/**
* Called when a socket connects and is ready for reading and writing.
* The host parameter will be an IP address, not a DNS name.
**/
- (void)socket:(GCDAsyncSocket *)sock didConnectToUrl:(NSURL *)url;
/**
* Called when a socket has completed reading the requested data into memory.
* Not called if there is an error.
......
......@@ -28,6 +28,59 @@ typedef NS_ENUM(NSInteger, GCDAsyncUdpSocketError) {
GCDAsyncUdpSocketOtherError, // Description provided in userInfo
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@class GCDAsyncUdpSocket;
@protocol GCDAsyncUdpSocketDelegate
@optional
/**
* By design, UDP is a connectionless protocol, and connecting is not needed.
* However, you may optionally choose to connect to a particular host for reasons
* outlined in the documentation for the various connect methods listed above.
*
* This method is called if one of the connect methods are invoked, and the connection is successful.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didConnectToAddress:(NSData *)address;
/**
* By design, UDP is a connectionless protocol, and connecting is not needed.
* However, you may optionally choose to connect to a particular host for reasons
* outlined in the documentation for the various connect methods listed above.
*
* This method is called if one of the connect methods are invoked, and the connection fails.
* This may happen, for example, if a domain name is given for the host and the domain name is unable to be resolved.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotConnect:(NSError *)error;
/**
* Called when the datagram with the given tag has been sent.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag;
/**
* Called if an error occurs while trying to send a datagram.
* This could be due to a timeout, or something more serious such as the data being too large to fit in a sigle packet.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
/**
* Called when the socket has received the requested datagram.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
fromAddress:(NSData *)address
withFilterContext:(id)filterContext;
/**
* Called when the socket is closed.
**/
- (void)udpSocketDidClose:(GCDAsyncUdpSocket *)sock withError:(NSError *)error;
@end
/**
* You may optionally set a receive filter for the socket.
* A filter can provide several useful features:
......@@ -126,22 +179,22 @@ typedef BOOL (^GCDAsyncUdpSocketSendFilterBlock)(NSData *data, NSData *address,
**/
- (id)init;
- (id)initWithSocketQueue:(dispatch_queue_t)sq;
- (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq;
- (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq;
- (id)initWithDelegate:(id <GCDAsyncUdpSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq;
- (id)initWithDelegate:(id <GCDAsyncUdpSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq;
#pragma mark Configuration
- (id)delegate;
- (void)setDelegate:(id)delegate;
- (void)synchronouslySetDelegate:(id)delegate;
- (id <GCDAsyncUdpSocketDelegate>)delegate;
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)delegate;
- (void)synchronouslySetDelegate:(id <GCDAsyncUdpSocketDelegate>)delegate;
- (dispatch_queue_t)delegateQueue;
- (void)setDelegateQueue:(dispatch_queue_t)delegateQueue;
- (void)synchronouslySetDelegateQueue:(dispatch_queue_t)delegateQueue;
- (void)getDelegate:(id *)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr;
- (void)setDelegate:(id)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
- (void)synchronouslySetDelegate:(id)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
- (void)getDelegate:(id <GCDAsyncUdpSocketDelegate>*)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr;
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
- (void)synchronouslySetDelegate:(id <GCDAsyncUdpSocketDelegate>)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
/**
* By default, both IPv4 and IPv6 are enabled.
......@@ -421,6 +474,17 @@ typedef BOOL (^GCDAsyncUdpSocketSendFilterBlock)(NSData *data, NSData *address,
- (BOOL)leaveMulticastGroup:(NSString *)group error:(NSError **)errPtr;
- (BOOL)leaveMulticastGroup:(NSString *)group onInterface:(NSString *)interface error:(NSError **)errPtr;
#pragma mark Reuse Port
/**
* By default, only one socket can be bound to a given IP address + port at a time.
* To enable multiple processes to simultaneously bind to the same address+port,
* you need to enable this functionality in the socket. All processes that wish to
* use the address+port simultaneously must all enable reuse port on the socket
* bound to that port.
**/
- (BOOL)enableReusePort:(BOOL)flag error:(NSError **)errPtr;
#pragma mark Broadcast
/**
......@@ -941,54 +1005,3 @@ typedef BOOL (^GCDAsyncUdpSocketSendFilterBlock)(NSData *data, NSData *address,
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@protocol GCDAsyncUdpSocketDelegate
@optional
/**
* By design, UDP is a connectionless protocol, and connecting is not needed.
* However, you may optionally choose to connect to a particular host for reasons
* outlined in the documentation for the various connect methods listed above.
*
* This method is called if one of the connect methods are invoked, and the connection is successful.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didConnectToAddress:(NSData *)address;
/**
* By design, UDP is a connectionless protocol, and connecting is not needed.
* However, you may optionally choose to connect to a particular host for reasons
* outlined in the documentation for the various connect methods listed above.
*
* This method is called if one of the connect methods are invoked, and the connection fails.
* This may happen, for example, if a domain name is given for the host and the domain name is unable to be resolved.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotConnect:(NSError *)error;
/**
* Called when the datagram with the given tag has been sent.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag;
/**
* Called if an error occurs while trying to send a datagram.
* This could be due to a timeout, or something more serious such as the data being too large to fit in a sigle packet.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
/**
* Called when the socket has received the requested datagram.
**/
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
fromAddress:(NSData *)address
withFilterContext:(id)filterContext;
/**
* Called when the socket is closed.
**/
- (void)udpSocketDidClose:(GCDAsyncUdpSocket *)sock withError:(NSError *)error;
@end
......@@ -350,14 +350,14 @@ enum GCDAsyncUdpSocketConfig
return [self initWithDelegate:nil delegateQueue:NULL socketQueue:sq];
}
- (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq
- (id)initWithDelegate:(id <GCDAsyncUdpSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq
{
LogTrace();
return [self initWithDelegate:aDelegate delegateQueue:dq socketQueue:NULL];
}
- (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq
- (id)initWithDelegate:(id <GCDAsyncUdpSocketDelegate>)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq
{
LogTrace();
......@@ -488,7 +488,7 @@ enum GCDAsyncUdpSocketConfig
}
}
- (void)setDelegate:(id)newDelegate synchronously:(BOOL)synchronously
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate synchronously:(BOOL)synchronously
{
dispatch_block_t block = ^{
delegate = newDelegate;
......@@ -505,12 +505,12 @@ enum GCDAsyncUdpSocketConfig
}
}
- (void)setDelegate:(id)newDelegate
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate
{
[self setDelegate:newDelegate synchronously:NO];
}
- (void)synchronouslySetDelegate:(id)newDelegate
- (void)synchronouslySetDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate
{
[self setDelegate:newDelegate synchronously:YES];
}
......@@ -566,7 +566,7 @@ enum GCDAsyncUdpSocketConfig
[self setDelegateQueue:newDelegateQueue synchronously:YES];
}
- (void)getDelegate:(id *)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr
- (void)getDelegate:(id <GCDAsyncUdpSocketDelegate> *)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr
{
if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))
{
......@@ -588,7 +588,7 @@ enum GCDAsyncUdpSocketConfig
}
}
- (void)setDelegate:(id)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue synchronously:(BOOL)synchronously
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue synchronously:(BOOL)synchronously
{
dispatch_block_t block = ^{
......@@ -613,12 +613,12 @@ enum GCDAsyncUdpSocketConfig
}
}
- (void)setDelegate:(id)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue
- (void)setDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue
{
[self setDelegate:newDelegate delegateQueue:newDelegateQueue synchronously:NO];
}
- (void)synchronouslySetDelegate:(id)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue
- (void)synchronouslySetDelegate:(id <GCDAsyncUdpSocketDelegate>)newDelegate delegateQueue:(dispatch_queue_t)newDelegateQueue
{
[self setDelegate:newDelegate delegateQueue:newDelegateQueue synchronously:YES];
}
......@@ -906,9 +906,9 @@ enum GCDAsyncUdpSocketConfig
{
LogTrace();
if (delegateQueue && [delegate respondsToSelector:@selector(udpSocket:didConnectToAddress:)])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:@selector(udpSocket:didConnectToAddress:)])
{
id theDelegate = delegate;
NSData *address = [anAddress copy]; // In case param is NSMutableData
dispatch_async(delegateQueue, ^{ @autoreleasepool {
......@@ -922,10 +922,9 @@ enum GCDAsyncUdpSocketConfig
{
LogTrace();
if (delegateQueue && [delegate respondsToSelector:@selector(udpSocket:didNotConnect:)])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:@selector(udpSocket:didNotConnect:)])
{
id theDelegate = delegate;
dispatch_async(delegateQueue, ^{ @autoreleasepool {
[theDelegate udpSocket:self didNotConnect:error];
......@@ -937,10 +936,9 @@ enum GCDAsyncUdpSocketConfig
{
LogTrace();
if (delegateQueue && [delegate respondsToSelector:@selector(udpSocket:didSendDataWithTag:)])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:@selector(udpSocket:didSendDataWithTag:)])
{
id theDelegate = delegate;
dispatch_async(delegateQueue, ^{ @autoreleasepool {
[theDelegate udpSocket:self didSendDataWithTag:tag];
......@@ -952,10 +950,9 @@ enum GCDAsyncUdpSocketConfig
{
LogTrace();
if (delegateQueue && [delegate respondsToSelector:@selector(udpSocket:didNotSendDataWithTag:dueToError:)])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:@selector(udpSocket:didNotSendDataWithTag:dueToError:)])
{
id theDelegate = delegate;
dispatch_async(delegateQueue, ^{ @autoreleasepool {
[theDelegate udpSocket:self didNotSendDataWithTag:tag dueToError:error];
......@@ -969,10 +966,9 @@ enum GCDAsyncUdpSocketConfig
SEL selector = @selector(udpSocket:didReceiveData:fromAddress:withFilterContext:);
if (delegateQueue && [delegate respondsToSelector:selector])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:selector])
{
id theDelegate = delegate;
dispatch_async(delegateQueue, ^{ @autoreleasepool {
[theDelegate udpSocket:self didReceiveData:data fromAddress:address withFilterContext:context];
......@@ -984,10 +980,9 @@ enum GCDAsyncUdpSocketConfig
{
LogTrace();
if (delegateQueue && [delegate respondsToSelector:@selector(udpSocketDidClose:withError:)])
__strong id theDelegate = delegate;
if (delegateQueue && [theDelegate respondsToSelector:@selector(udpSocketDidClose:withError:)])
{
id theDelegate = delegate;
dispatch_async(delegateQueue, ^{ @autoreleasepool {
[theDelegate udpSocketDidClose:self withError:error];
......@@ -3453,6 +3448,70 @@ enum GCDAsyncUdpSocketConfig
return result;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Reuse port
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (BOOL)enableReusePort:(BOOL)flag error:(NSError **)errPtr
{
__block BOOL result = NO;
__block NSError *err = nil;
dispatch_block_t block = ^{ @autoreleasepool {
if (![self preOp:&err])
{
return_from_block;
}
if ((flags & kDidCreateSockets) == 0)
{
if (![self createSockets:&err])
{
return_from_block;
}
}
int value = flag ? 1 : 0;
if (socket4FD != SOCKET_NULL)
{
int error = setsockopt(socket4FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
if (error)
{
err = [self errnoErrorWithReason:@"Error in setsockopt() function"];
return_from_block;
}
result = YES;
}
if (socket6FD != SOCKET_NULL)
{
int error = setsockopt(socket6FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
if (error)
{
err = [self errnoErrorWithReason:@"Error in setsockopt() function"];
return_from_block;
}
result = YES;
}
}};
if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))
block();
else
dispatch_sync(socketQueue, block);
if (errPtr)
*errPtr = err;
return result;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Broadcast
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
......
../../../Base32/Base32/MF_Base32Additions.h
\ No newline at end of file
../../../CocoaAsyncSocket/Source/RunLoop/AsyncSocket.h
\ No newline at end of file
../../../CocoaAsyncSocket/Source/RunLoop/AsyncUdpSocket.h
\ No newline at end of file
../../../CocoaAsyncSocket/Source/CocoaAsyncSocket.h
\ No newline at end of file
../../../CocoaAsyncSocket/Source/GCD/GCDAsyncSocket.h
\ No newline at end of file
../../../CocoaAsyncSocket/Source/GCD/GCDAsyncUdpSocket.h
\ No newline at end of file
../../../IGDigest/IGDigest/HMAC/IGHMAC.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSData+MD5Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSData+SHA1Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSData+SHA256Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSString+MD5Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/HMAC/NSString+MD5HMAC.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSString+SHA1Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/HMAC/NSString+SHA1HMAC.h
\ No newline at end of file
../../../IGDigest/IGDigest/Digest/NSString+SHA256Digest.h
\ No newline at end of file
../../../IGDigest/IGDigest/HMAC/NSString+SHA256HMAC.h
\ No newline at end of file
../../../../../../Pods/CocoaAsyncSocket/Source/GCD/GCDAsyncSocket.h
\ No newline at end of file
../../../../../../Pods/Base32/Base32/MF_Base32Additions.h
\ No newline at end of file
../../../../../../Pods/IGDigest/IGDigest/Digest/NSData+SHA256Digest.h
\ No newline at end of file
../../../../../../pulse-swift/util/OpenSSLCertificate.h
\ No newline at end of file
../../../../../../Pods/lz4/lib/lz4.h
\ No newline at end of file
../../../lz4/lib/lz4.h
\ No newline at end of file
../../../lz4/lib/lz4frame.h
\ No newline at end of file
../../../lz4/lib/lz4frame_static.h
\ No newline at end of file
../../../lz4/lib/lz4hc.h
\ No newline at end of file
../../../lz4/lib/xxhash.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/aes.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/asn1.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/asn1_mac.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/asn1t.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/bio.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/blowfish.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/bn.h
\ No newline at end of file
../../../../OpenSSL-for-iOS/openssl.framework/Headers/buffer.h