view dstep/coreservices/cfnetwork/CFSocketStream.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.coreservices.cfnetwork.CFSocketStream;

//import dstep.Availability;
import dstep.coreservices.cfnetwork.CFHost;
import dstep.coreservices.cfnetwork.CFNetServices;
import dstep.coreservices.cfnetwork.CFNetworkDefs;
import dstep.corefoundation.CFBase;
import dstep.corefoundation.CFStream;

alias int CFStreamSocketSecurityProtocol;

extern (C)
{
	extern
	{
		const CFStringRef kCFStreamPropertySSLPeerCertificates;
		const CFStringRef kCFStreamPropertySSLSettings;
		const CFStringRef kCFStreamSSLLevel;
		const CFStringRef kCFStreamSSLAllowsExpiredCertificates;
		const CFStringRef kCFStreamSSLAllowsExpiredRoots;
		const CFStringRef kCFStreamSSLAllowsAnyRoot;
		const CFStringRef kCFStreamSSLValidatesCertificateChain;
		const CFStringRef kCFStreamSSLPeerName;
		const CFStringRef kCFStreamSSLCertificates;
		const CFStringRef kCFStreamSSLIsServer;
		const int kCFStreamErrorDomainWinSock;
		const int kCFStreamErrorDomainSOCKS;
		const CFStringRef kCFStreamPropertySOCKSProxy;
		const CFStringRef kCFStreamPropertySOCKSProxyHost;
		const CFStringRef kCFStreamPropertySOCKSProxyPort;
		const CFStringRef kCFStreamPropertySOCKSVersion;
		const CFStringRef kCFStreamSocketSOCKSVersion4;
		const CFStringRef kCFStreamSocketSOCKSVersion5;
		const CFStringRef kCFStreamPropertySOCKSUser;
		const CFStringRef kCFStreamPropertySOCKSPassword;
		const int kCFStreamErrorDomainSSL;
		const CFStringRef kCFStreamPropertySocketSecurityLevel;
		const CFStringRef kCFStreamSocketSecurityLevelNone;
		const CFStringRef kCFStreamSocketSecurityLevelSSLv2;
		const CFStringRef kCFStreamSocketSecurityLevelSSLv3;
		const CFStringRef kCFStreamSocketSecurityLevelTLSv1;
		const CFStringRef kCFStreamSocketSecurityLevelNegotiatedSSL;
		const CFStringRef kCFStreamPropertyShouldCloseNativeSocket;
		const CFStringRef kCFStreamPropertySocketRemoteHost;
		const CFStringRef kCFStreamPropertySocketRemoteNetService;
		const CFStringRef kCFStreamPropertyProxyLocalBypass;
	}
}

enum
{
	kCFStreamErrorSOCKSSubDomainNone = 0,
	kCFStreamErrorSOCKSSubDomainVersionCode = 1,
	kCFStreamErrorSOCKS4SubDomainResponse = 2,
	kCFStreamErrorSOCKS5SubDomainUserPass = 3,
	kCFStreamErrorSOCKS5SubDomainMethod = 4,
	kCFStreamErrorSOCKS5SubDomainResponse = 5
}

enum
{
	kCFStreamErrorSOCKS5BadResponseAddr = 1,
	kCFStreamErrorSOCKS5BadState = 2,
	kCFStreamErrorSOCKSUnknownClientVersion = 3
}

enum
{
	kCFStreamErrorSOCKS4RequestFailed = 91,
	kCFStreamErrorSOCKS4IdentdFailed = 92,
	kCFStreamErrorSOCKS4IdConflict = 93
}

enum
{
	kSOCKS5NoAcceptableMethod = 0xFF
}

enum /*CFStreamSocketSecurityProtocol*/ 
{
	kCFStreamSocketSecurityNone = 0,
	kCFStreamSocketSecuritySSLv2 = 1,
	kCFStreamSocketSecuritySSLv3 = 2,
	kCFStreamSocketSecuritySSLv23 = 3,
	kCFStreamSocketSecurityTLSv1 = 4
}

extern (C)
{
	void CFStreamCreatePairWithSocketToCFHost (CFAllocatorRef alloc, CFHostRef host, int port, CFReadStreamRef* readStream, CFWriteStreamRef* writeStream);
	void CFStreamCreatePairWithSocketToNetService (CFAllocatorRef alloc, CFNetServiceRef service, CFReadStreamRef* readStream, CFWriteStreamRef* writeStream);
	ubyte CFSocketStreamPairSetSecurityProtocol (CFReadStreamRef socketReadStream, CFWriteStreamRef socketWriteStream, int securityProtocol);
}