#include "testutil.h" #include #include #include const char *sslGetCipherSuiteString(SSLCipherSuite cs) { static char noSuite[40]; switch(cs) { case SSL_NULL_WITH_NULL_NULL: return "SSL_NULL_WITH_NULL_NULL"; case SSL_RSA_WITH_NULL_MD5: return "SSL_RSA_WITH_NULL_MD5"; case SSL_RSA_WITH_NULL_SHA: return "SSL_RSA_WITH_NULL_SHA"; case SSL_RSA_EXPORT_WITH_RC4_40_MD5: return "SSL_RSA_EXPORT_WITH_RC4_40_MD5"; case SSL_RSA_WITH_RC4_128_MD5: return "SSL_RSA_WITH_RC4_128_MD5"; case SSL_RSA_WITH_RC4_128_SHA: return "SSL_RSA_WITH_RC4_128_SHA"; case SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5: return "SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5"; case SSL_RSA_WITH_IDEA_CBC_SHA: return "SSL_RSA_WITH_IDEA_CBC_SHA"; case SSL_RSA_EXPORT_WITH_DES40_CBC_SHA: return "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"; case SSL_RSA_WITH_DES_CBC_SHA: return "SSL_RSA_WITH_DES_CBC_SHA"; case SSL_RSA_WITH_3DES_EDE_CBC_SHA: return "SSL_RSA_WITH_3DES_EDE_CBC_SHA"; case SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA: return "SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"; case SSL_DH_DSS_WITH_DES_CBC_SHA: return "SSL_DH_DSS_WITH_DES_CBC_SHA"; case SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA: return "SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA"; case SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA: return "SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"; case SSL_DH_RSA_WITH_DES_CBC_SHA: return "SSL_DH_RSA_WITH_DES_CBC_SHA"; case SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA: return "SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA"; case SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA: return "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"; case SSL_DHE_DSS_WITH_DES_CBC_SHA: return "SSL_DHE_DSS_WITH_DES_CBC_SHA"; case SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA: return "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"; case SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA: return "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"; case SSL_DHE_RSA_WITH_DES_CBC_SHA: return "SSL_DHE_RSA_WITH_DES_CBC_SHA"; case SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA: return "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA"; case SSL_DH_anon_EXPORT_WITH_RC4_40_MD5: return "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5"; case SSL_DH_anon_WITH_RC4_128_MD5: return "SSL_DH_anon_WITH_RC4_128_MD5"; case SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA: return "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA"; case SSL_DH_anon_WITH_DES_CBC_SHA: return "SSL_DH_anon_WITH_DES_CBC_SHA"; case SSL_DH_anon_WITH_3DES_EDE_CBC_SHA: return "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA"; case SSL_FORTEZZA_DMS_WITH_NULL_SHA: return "SSL_FORTEZZA_DMS_WITH_NULL_SHA"; case SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA: return "SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA"; case SSL_RSA_WITH_RC2_CBC_MD5: return "SSL_RSA_WITH_RC2_CBC_MD5"; case SSL_RSA_WITH_IDEA_CBC_MD5: return "SSL_RSA_WITH_IDEA_CBC_MD5"; case SSL_RSA_WITH_DES_CBC_MD5: return "SSL_RSA_WITH_DES_CBC_MD5"; case SSL_RSA_WITH_3DES_EDE_CBC_MD5: return "SSL_RSA_WITH_3DES_EDE_CBC_MD5"; case SSL_NO_SUCH_CIPHERSUITE: return "SSL_NO_SUCH_CIPHERSUITE"; default: sprintf(noSuite, "Unknown (%d)", (unsigned)cs); return noSuite; } } /* * Given a SSLProtocolVersion - typically from SSLGetProtocolVersion - * return a string representation. */ const char *sslGetProtocolVersionString(SSLProtocol prot) { static char noProt[20]; switch(prot) { case kSSLProtocolUnknown: return "kSSLProtocolUnknown"; case kSSLProtocol2: return "kSSLProtocol2"; case kSSLProtocol3: return "kSSLProtocol3"; case kSSLProtocol3Only: return "kSSLProtocol3Only"; default: sprintf(noProt, "Unknown (%d)", (unsigned)prot); return noProt; } } /* * Return string representation of SecureTransport-related OSStatus. */ const char *sslGetSSLErrString(OSStatus err) { static char noErrStr[20]; switch(err) { case noErr: return "noErr"; case memFullErr: return "memFullErr"; case unimpErr: return "unimpErr"; case errSSLProtocol: return "errSSLProtocol"; case errSSLNegotiation: return "errSSLNegotiation"; case errSSLFatalAlert: return "errSSLFatalAlert"; case errSSLWouldBlock: return "errSSLWouldBlock"; case ioErr: return "ioErr"; case errSSLSessionNotFound: return "errSSLSessionNotFound"; case errSSLClosedGraceful: return "errSSLClosedGraceful"; case errSSLClosedAbort: return "errSSLClosedAbort"; case errSSLXCertChainInvalid: return "errSSLXCertChainInvalid"; case errSSLBadCert: return "errSSLBadCert"; case errSSLCrypto: return "errSSLCrypto"; case errSSLInternal: return "errSSLInternal"; case errSSLModuleAttach: return "errSSLModuleAttach"; case errSSLUnknownRootCert: return "errSSLUnknownRootCert"; case errSSLNoRootCert: return "errSSLNoRootCert"; case errSSLCertExpired: return "errSSLCertExpired"; case errSSLCertNotYetValid: return "errSSLCertNotYetValid"; case badReqErr: return "badReqErr"; case errSSLClosedNoNotify: return "errSSLClosedNoNotify"; default: sprintf(noErrStr, "Unknown (%d)", (unsigned)err); return noErrStr; } } void printSslErrStr( const char *op, OSStatus err) { printf("*** %s: %s\n", op, sslGetSSLErrString(err)); }