#ifndef _SSLCTX_H_
#include "sslctx.h"
#endif
#ifndef _SSLUTIL_H_
#include "sslutil.h"
#endif
#ifndef _SSLALLOC_H_
#include "sslalloc.h"
#endif
#ifndef _SSL_DEBUG_H_
#include "sslDebug.h"
#endif
#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
UInt32
SSLDecodeInt(const unsigned char *p, int length)
{ UInt32 val = 0;
while (length--)
val = (val << 8) | *p++;
return val;
}
unsigned char *
SSLEncodeInt(unsigned char *p, UInt32 value, int length)
{ unsigned char *retVal = p + length;
CASSERT(length > 0 && length <= 4);
while (length--)
{ p[length] = (UInt8)value;
value >>= 8;
}
return retVal;
}
UInt8*
SSLEncodeUInt64(UInt8 *p, sslUint64 value)
{ p = SSLEncodeInt(p, value.high, 4);
return SSLEncodeInt(p, value.low, 4);
}
void
IncrementUInt64(sslUint64 *v)
{ if (++v->low == 0)
++v->high;
}
UInt32
SSLGetCertificateChainLength(const SSLCertificate *c)
{
UInt32 rtn = 0;
while (c)
{
rtn++;
c = c->next;
}
return rtn;
}
Boolean sslIsSessionActive(const SSLContext *ctx)
{
CASSERT(ctx != NULL);
switch(ctx->state) {
case SSLUninitialized:
case HandshakeServerUninit:
case HandshakeClientUninit:
case SSLGracefulClose:
case SSLErrorClose:
return false;
default:
return true;
}
}
OSStatus sslDeleteCertificateChain(
SSLCertificate *certs,
SSLContext *ctx)
{
SSLCertificate *cert;
SSLCertificate *nextCert;
CASSERT(ctx != NULL);
cert=certs;
while(cert != NULL) {
nextCert = cert->next;
SSLFreeBuffer(&cert->derCert, &ctx->sysCtx);
sslFree(cert);
cert = nextCert;
}
return noErr;
}
#if SSL_DEBUG
const char *protocolVersStr(SSLProtocolVersion prot)
{
switch(prot) {
case SSL_Version_Undetermined: return "SSL_Version_Undetermined";
case SSL_Version_3_0_With_2_0_Hello: return "SSL_Version_3_0_With_2_0_Hello";
case SSL_Version_3_0_Only: return "SSL_Version_3_0_Only";
case SSL_Version_2_0: return "SSL_Version_2_0";
case SSL_Version_3_0: return "SSL_Version_3_0";
case TLS_Version_1_0: return "TLS_Version_1_0";
case TLS_Version_1_0_Only: return "TLS_Version_1_0_Only";
default: sslPanic("protocolVersStr: bad prot");
}
return NULL;
}
#endif