summaryrefslogtreecommitdiff
path: root/camel/camel-tcp-stream-ssl.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2007-11-14 22:04:19 +0000
committerMatthew Barnes <mbarnes@src.gnome.org>2007-11-14 22:04:19 +0000
commit7f4e14e88885f606d43734663a401dc37cf498aa (patch)
treef176412c5a2b4c617ddbdae98b72683a9ef5a000 /camel/camel-tcp-stream-ssl.c
parent3d7d874a84446b022a1fb87e781159194799eac5 (diff)
downloadevolution-data-server-7f4e14e88885f606d43734663a401dc37cf498aa.tar.gz
** Remove trailing whitespace from source code.
2007-11-14 Matthew Barnes <mbarnes@redhat.com> ** Remove trailing whitespace from source code. svn path=/trunk/; revision=8210
Diffstat (limited to 'camel/camel-tcp-stream-ssl.c')
-rw-r--r--camel/camel-tcp-stream-ssl.c196
1 files changed, 98 insertions, 98 deletions
diff --git a/camel/camel-tcp-stream-ssl.c b/camel/camel-tcp-stream-ssl.c
index ae22ec0e8..09658d41f 100644
--- a/camel/camel-tcp-stream-ssl.c
+++ b/camel/camel-tcp-stream-ssl.c
@@ -89,7 +89,7 @@ static struct sockaddr *stream_get_remote_address (CamelTcpStream *stream, sockl
struct _CamelTcpStreamSSLPrivate {
PRFileDesc *sockfd;
-
+
struct _CamelSession *session;
char *expected_host;
gboolean ssl_mode;
@@ -103,15 +103,15 @@ camel_tcp_stream_ssl_class_init (CamelTcpStreamSSLClass *camel_tcp_stream_ssl_cl
CAMEL_TCP_STREAM_CLASS (camel_tcp_stream_ssl_class);
CamelStreamClass *camel_stream_class =
CAMEL_STREAM_CLASS (camel_tcp_stream_ssl_class);
-
+
parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
-
+
/* virtual method overload */
camel_stream_class->read = stream_read;
camel_stream_class->write = stream_write;
camel_stream_class->flush = stream_flush;
camel_stream_class->close = stream_close;
-
+
camel_tcp_stream_class->connect = stream_connect;
camel_tcp_stream_class->getsockopt = stream_getsockopt;
camel_tcp_stream_class->setsockopt = stream_setsockopt;
@@ -123,7 +123,7 @@ static void
camel_tcp_stream_ssl_init (gpointer object, gpointer klass)
{
CamelTcpStreamSSL *stream = CAMEL_TCP_STREAM_SSL (object);
-
+
stream->priv = g_new0 (struct _CamelTcpStreamSSLPrivate, 1);
}
@@ -131,7 +131,7 @@ static void
camel_tcp_stream_ssl_finalize (CamelObject *object)
{
CamelTcpStreamSSL *stream = CAMEL_TCP_STREAM_SSL (object);
-
+
if (stream->priv->sockfd != NULL)
PR_Close (stream->priv->sockfd);
@@ -139,7 +139,7 @@ camel_tcp_stream_ssl_finalize (CamelObject *object)
camel_object_unref(stream->priv->session);
g_free (stream->priv->expected_host);
-
+
g_free (stream->priv);
}
@@ -148,7 +148,7 @@ CamelType
camel_tcp_stream_ssl_get_type (void)
{
static CamelType type = CAMEL_INVALID_TYPE;
-
+
if (type == CAMEL_INVALID_TYPE) {
type = camel_type_register (camel_tcp_stream_get_type (),
"CamelTcpStreamSSL",
@@ -159,7 +159,7 @@ camel_tcp_stream_ssl_get_type (void)
(CamelObjectInitFunc) camel_tcp_stream_ssl_init,
(CamelObjectFinalizeFunc) camel_tcp_stream_ssl_finalize);
}
-
+
return type;
}
@@ -187,13 +187,13 @@ camel_tcp_stream_ssl_new (CamelSession *session, const char *expected_host, guin
g_assert(CAMEL_IS_SESSION(session));
stream = CAMEL_TCP_STREAM_SSL (camel_object_new (camel_tcp_stream_ssl_get_type ()));
-
+
stream->priv->session = session;
camel_object_ref(session);
stream->priv->expected_host = g_strdup (expected_host);
stream->priv->ssl_mode = TRUE;
stream->priv->flags = flags;
-
+
return CAMEL_STREAM (stream);
}
@@ -219,15 +219,15 @@ camel_tcp_stream_ssl_new_raw (CamelSession *session, const char *expected_host,
CamelTcpStreamSSL *stream;
g_assert(CAMEL_IS_SESSION(session));
-
+
stream = CAMEL_TCP_STREAM_SSL (camel_object_new (camel_tcp_stream_ssl_get_type ()));
-
+
stream->priv->session = session;
camel_object_ref(session);
stream->priv->expected_host = g_strdup (expected_host);
stream->priv->ssl_mode = FALSE;
stream->priv->flags = flags;
-
+
return CAMEL_STREAM (stream);
}
@@ -307,30 +307,30 @@ int
camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl)
{
PRFileDesc *fd;
-
+
g_return_val_if_fail (CAMEL_IS_TCP_STREAM_SSL (ssl), -1);
-
+
if (ssl->priv->sockfd && !ssl->priv->ssl_mode) {
if (!(fd = enable_ssl (ssl, NULL))) {
set_errno (PR_GetError ());
return -1;
}
-
+
ssl->priv->sockfd = fd;
-
+
if (SSL_ResetHandshake (fd, FALSE) == SECFailure) {
set_errno (PR_GetError ());
return -1;
}
-
+
if (SSL_ForceHandshake (fd) == -1) {
set_errno (PR_GetError ());
return -1;
}
}
-
+
ssl->priv->ssl_mode = TRUE;
-
+
return 0;
}
@@ -341,12 +341,12 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
CamelTcpStreamSSL *tcp_stream_ssl = CAMEL_TCP_STREAM_SSL (stream);
PRFileDesc *cancel_fd;
ssize_t nread;
-
+
if (camel_operation_cancel_check (NULL)) {
errno = EINTR;
return -1;
}
-
+
cancel_fd = camel_operation_cancel_prfd (NULL);
if (cancel_fd == NULL) {
do {
@@ -361,7 +361,7 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
PRPollDesc pollfds[2];
gboolean nonblock;
int error;
-
+
/* get O_NONBLOCK options */
sockopts.option = PR_SockOpt_Nonblocking;
PR_GetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
@@ -374,7 +374,7 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
pollfds[0].in_flags = PR_POLL_READ;
pollfds[1].fd = cancel_fd;
pollfds[1].in_flags = PR_POLL_READ;
-
+
do {
PRInt32 res;
@@ -404,7 +404,7 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
} while (nread == -1 && (PR_GetError () == PR_PENDING_INTERRUPT_ERROR ||
PR_GetError () == PR_IO_PENDING_ERROR ||
PR_GetError () == PR_WOULD_BLOCK_ERROR));
-
+
/* restore O_NONBLOCK options */
failed:
error = errno;
@@ -413,7 +413,7 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
PR_SetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
errno = error;
}
-
+
return nread;
}
@@ -423,12 +423,12 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
CamelTcpStreamSSL *tcp_stream_ssl = CAMEL_TCP_STREAM_SSL (stream);
ssize_t w, written = 0;
PRFileDesc *cancel_fd;
-
+
if (camel_operation_cancel_check (NULL)) {
errno = EINTR;
return -1;
}
-
+
cancel_fd = camel_operation_cancel_prfd (NULL);
if (cancel_fd == NULL) {
do {
@@ -439,7 +439,7 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
} while (w == -1 && (PR_GetError () == PR_PENDING_INTERRUPT_ERROR ||
PR_GetError () == PR_IO_PENDING_ERROR ||
PR_GetError () == PR_WOULD_BLOCK_ERROR));
-
+
if (w > 0)
written += w;
} while (w != -1 && written < n);
@@ -448,7 +448,7 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
PRPollDesc pollfds[2];
gboolean nonblock;
int error;
-
+
/* get O_NONBLOCK options */
sockopts.option = PR_SockOpt_Nonblocking;
PR_GetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
@@ -456,12 +456,12 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
nonblock = sockopts.value.non_blocking;
sockopts.value.non_blocking = TRUE;
PR_SetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
-
+
pollfds[0].fd = tcp_stream_ssl->priv->sockfd;
pollfds[0].in_flags = PR_POLL_WRITE;
pollfds[1].fd = cancel_fd;
pollfds[1].in_flags = PR_POLL_READ;
-
+
do {
PRInt32 res;
@@ -488,7 +488,7 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
if (w == -1)
set_errno (PR_GetError ());
} while (w == -1 && PR_GetError () == PR_PENDING_INTERRUPT_ERROR);
-
+
if (w == -1) {
if (PR_GetError () == PR_IO_PENDING_ERROR ||
PR_GetError () == PR_WOULD_BLOCK_ERROR)
@@ -497,7 +497,7 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
written += w;
}
} while (w != -1 && written < n);
-
+
/* restore O_NONBLOCK options */
error = errno;
sockopts.option = PR_SockOpt_Nonblocking;
@@ -505,10 +505,10 @@ stream_write (CamelStream *stream, const char *buffer, size_t n)
PR_SetSocketOption (tcp_stream_ssl->priv->sockfd, &sockopts);
errno = error;
}
-
+
if (w == -1)
return -1;
-
+
return written;
}
@@ -529,9 +529,9 @@ stream_close (CamelStream *stream)
if (PR_Close (((CamelTcpStreamSSL *)stream)->priv->sockfd) == PR_FAILURE)
return -1;
-
+
((CamelTcpStreamSSL *)stream)->priv->sockfd = NULL;
-
+
return 0;
}
@@ -541,15 +541,15 @@ static SECStatus
ssl_get_client_auth (void *data, PRFileDesc *sockfd,
struct CERTDistNamesStr *caNames,
struct CERTCertificateStr **pRetCert,
- struct SECKEYPrivateKeyStr **pRetKey)
+ struct SECKEYPrivateKeyStr **pRetKey)
{
SECStatus status = SECFailure;
SECKEYPrivateKey *privkey;
CERTCertificate *cert;
void *proto_win;
-
+
proto_win = SSL_RevealPinArg (sockfd);
-
+
if ((char *) data) {
cert = PK11_FindCertFromNickname ((char *) data, proto_win);
if (cert) {
@@ -564,44 +564,44 @@ ssl_get_client_auth (void *data, PRFileDesc *sockfd,
/* no nickname given, automatically find the right cert */
CERTCertNicknames *names;
int i;
-
- names = CERT_GetCertNicknames (CERT_GetDefaultCertDB (),
+
+ names = CERT_GetCertNicknames (CERT_GetDefaultCertDB (),
SEC_CERT_NICKNAMES_USER,
proto_win);
-
+
if (names != NULL) {
for (i = 0; i < names->numnicknames; i++) {
- cert = PK11_FindCertFromNickname (names->nicknames[i],
+ cert = PK11_FindCertFromNickname (names->nicknames[i],
proto_win);
if (!cert)
continue;
-
+
/* Only check unexpired certs */
if (CERT_CheckCertValidTimes (cert, PR_Now (), PR_FALSE) != secCertTimeValid) {
CERT_DestroyCertificate (cert);
continue;
}
-
+
status = NSS_CmpCertChainWCANames (cert, caNames);
if (status == SECSuccess) {
privkey = PK11_FindKeyByAnyCert (cert, proto_win);
if (privkey)
break;
-
+
status = SECFailure;
break;
}
-
+
CERT_FreeNicknames (names);
}
}
}
-
+
if (status == SECSuccess) {
*pRetCert = cert;
*pRetKey = privkey;
}
-
+
return status;
}
#endif
@@ -615,34 +615,34 @@ ssl_auth_cert (void *data, PRFileDesc *sockfd, PRBool checksig, PRBool is_server
SECStatus status;
void *pinarg;
char *host;
-
+
cert = SSL_PeerCertificate (sockfd);
pinarg = SSL_RevealPinArg (sockfd);
status = CERT_VerifyCertNow ((CERTCertDBHandle *)data, cert,
checksig, certUsageSSLClient, pinarg);
-
+
if (status != SECSuccess)
return SECFailure;
-
+
/* Certificate is OK. Since this is the client side of an SSL
* connection, we need to verify that the name field in the cert
* matches the desired hostname. This is our defense against
* man-in-the-middle attacks.
*/
-
+
/* SSL_RevealURL returns a hostname, not a URL. */
host = SSL_RevealURL (sockfd);
-
+
if (host && *host) {
status = CERT_VerifyCertName (cert, host);
} else {
PR_SetError (SSL_ERROR_BAD_CERT_DOMAIN, 0);
status = SECFailure;
}
-
+
if (host)
PR_Free (host);
-
+
return secStatus;
}
#endif
@@ -769,15 +769,15 @@ camel_certdb_nss_cert_set(CamelCertDB *certdb, CamelCert *ccert, CERTCertificate
char *dir, *path, *fingerprint;
CamelStream *stream;
struct stat st;
-
+
fingerprint = ccert->fingerprint;
-
+
if (ccert->rawcert == NULL)
ccert->rawcert = g_byte_array_new ();
-
+
g_byte_array_set_size (ccert->rawcert, cert->derCert.len);
memcpy (ccert->rawcert->data, cert->derCert.data, cert->derCert.len);
-
+
#ifndef G_OS_WIN32
dir = g_strdup_printf ("%s/.camel_certs", getenv ("HOME"));
#else
@@ -788,10 +788,10 @@ camel_certdb_nss_cert_set(CamelCertDB *certdb, CamelCert *ccert, CERTCertificate
g_free (dir);
return;
}
-
+
path = g_strdup_printf ("%s/%s", dir, fingerprint);
g_free (dir);
-
+
stream = camel_stream_fs_new_with_name (path, O_WRONLY | O_CREAT | O_TRUNC, 0600);
if (stream != NULL) {
if (camel_stream_write (stream, ccert->rawcert->data, ccert->rawcert->len) == -1) {
@@ -803,7 +803,7 @@ camel_certdb_nss_cert_set(CamelCertDB *certdb, CamelCert *ccert, CERTCertificate
} else {
g_warning ("Could not save cert: %s: %s", path, strerror (errno));
}
-
+
g_free (path);
}
@@ -850,7 +850,7 @@ ssl_bad_cert (void *data, PRFileDesc *sockfd)
g_return_val_if_fail (CAMEL_IS_TCP_STREAM_SSL (data), SECFailure);
ssl = data;
-
+
cert = SSL_PeerCertificate (sockfd);
if (cert == NULL)
return SECFailure;
@@ -878,7 +878,7 @@ ssl_bad_cert (void *data, PRFileDesc *sockfd)
prompt = g_strdup_printf (_("SSL Certificate check for %s:\n\n%s\n\nDo you wish to accept?"),
ssl->priv->expected_host, cert_str);
g_free (cert_str);
-
+
/* query the user to find out if we want to accept this certificate */
accept = camel_session_alert_user (ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE);
g_free(prompt);
@@ -936,7 +936,7 @@ ssl_bad_cert (void *data, PRFileDesc *sockfd)
cert->trust = (CERTCertTrust*)PORT_ArenaZAlloc(cert->arena, sizeof(CERTCertTrust));
CERT_DecodeTrustString(cert->trust, "P");
}
-
+
certs[0] = &cert->derCert;
/*CERT_ImportCerts (cert->dbhandle, certUsageSSLServer, 1, certs, NULL, TRUE, FALSE, nick);*/
CERT_ImportCerts(cert->dbhandle, certUsageUserCertImport, 1, certs, NULL, TRUE, FALSE, nick);
@@ -985,7 +985,7 @@ ssl_bad_cert (void *data, PRFileDesc *sockfd)
}
break;
-
+
case SEC_ERROR_EXPIRED_CERTIFICATE:
printf("expired\n");
@@ -1035,11 +1035,11 @@ static PRFileDesc *
enable_ssl (CamelTcpStreamSSL *ssl, PRFileDesc *fd)
{
PRFileDesc *ssl_fd;
-
+
ssl_fd = SSL_ImportFD (NULL, fd ? fd : ssl->priv->sockfd);
if (!ssl_fd)
return NULL;
-
+
SSL_OptionSet (ssl_fd, SSL_SECURITY, PR_TRUE);
if (ssl->priv->flags & CAMEL_TCP_STREAM_SSL_ENABLE_SSL2) {
SSL_OptionSet (ssl_fd, SSL_ENABLE_SSL2, PR_TRUE);
@@ -1056,15 +1056,15 @@ enable_ssl (CamelTcpStreamSSL *ssl, PRFileDesc *fd)
SSL_OptionSet (ssl_fd, SSL_ENABLE_TLS, PR_TRUE);
else
SSL_OptionSet (ssl_fd, SSL_ENABLE_TLS, PR_FALSE);
-
+
SSL_SetURL (ssl_fd, ssl->priv->expected_host);
-
+
/*SSL_GetClientAuthDataHook (sslSocket, ssl_get_client_auth, (void *) certNickname);*/
/*SSL_AuthCertificateHook (ssl_fd, ssl_auth_cert, (void *) CERT_GetDefaultCertDB ());*/
SSL_BadCertHook (ssl_fd, ssl_bad_cert, ssl);
-
+
ssl->priv->ssl_mode = TRUE;
-
+
return ssl_fd;
}
@@ -1119,28 +1119,28 @@ socket_connect(CamelTcpStream *stream, struct addrinfo *host)
errno = EINVAL;
return -1;
}
-
+
fd = PR_OpenTCPSocket(netaddr.raw.family);
if (fd == NULL) {
set_errno (PR_GetError ());
return -1;
}
-
+
if (ssl->priv->ssl_mode) {
PRFileDesc *ssl_fd;
-
+
ssl_fd = enable_ssl (ssl, fd);
if (ssl_fd == NULL) {
int errnosave;
-
+
set_errno (PR_GetError ());
errnosave = errno;
PR_Close (fd);
errno = errnosave;
-
+
return -1;
}
-
+
fd = ssl_fd;
}
@@ -1148,7 +1148,7 @@ socket_connect(CamelTcpStream *stream, struct addrinfo *host)
if (PR_Connect (fd, &netaddr, cancel_fd?0:CONNECT_TIMEOUT) == PR_FAILURE) {
int errnosave;
-
+
set_errno (PR_GetError ());
if (PR_GetError () == PR_IN_PROGRESS_ERROR ||
(cancel_fd && (PR_GetError () == PR_CONNECT_TIMEOUT_ERROR ||
@@ -1160,7 +1160,7 @@ socket_connect(CamelTcpStream *stream, struct addrinfo *host)
poll[0].in_flags = PR_POLL_WRITE | PR_POLL_EXCEPT;
poll[1].fd = cancel_fd;
poll[1].in_flags = PR_POLL_READ;
-
+
do {
poll[0].out_flags = 0;
poll[1].out_flags = 0;
@@ -1169,7 +1169,7 @@ socket_connect(CamelTcpStream *stream, struct addrinfo *host)
set_errno (PR_GetError ());
goto exception;
}
-
+
if (poll[1].out_flags == PR_POLL_READ) {
errno = EINTR;
goto exception;
@@ -1189,13 +1189,13 @@ socket_connect(CamelTcpStream *stream, struct addrinfo *host)
PR_Close (fd);
ssl->priv->sockfd = NULL;
errno = errnosave;
-
+
return -1;
}
-
+
errno = 0;
}
-
+
ssl->priv->sockfd = fd;
return 0;
@@ -1217,15 +1217,15 @@ static int
stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
{
PRSocketOptionData sodata;
-
+
memset ((void *) &sodata, 0, sizeof (sodata));
memcpy ((void *) &sodata, (void *) data, sizeof (CamelSockOptData));
-
+
if (PR_GetSocketOption (((CamelTcpStreamSSL *)stream)->priv->sockfd, &sodata) == PR_FAILURE)
return -1;
-
+
memcpy ((void *) data, (void *) &sodata, sizeof (CamelSockOptData));
-
+
return 0;
}
@@ -1233,13 +1233,13 @@ static int
stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
{
PRSocketOptionData sodata;
-
+
memset ((void *) &sodata, 0, sizeof (sodata));
memcpy ((void *) &sodata, (void *) data, sizeof (CamelSockOptData));
-
+
if (PR_SetSocketOption (((CamelTcpStreamSSL *)stream)->priv->sockfd, &sodata) == PR_FAILURE)
return -1;
-
+
return 0;
}
@@ -1269,7 +1269,7 @@ sockaddr_from_praddr(PRNetAddr *addr, socklen_t *len)
sin->sin6_scope_id = addr->ipv6.scope_id;
*len = sizeof(*sin);
- return (struct sockaddr *)sin;
+ return (struct sockaddr *)sin;
}
#endif
@@ -1281,7 +1281,7 @@ stream_get_local_address(CamelTcpStream *stream, socklen_t *len)
{
PRFileDesc *sockfd = CAMEL_TCP_STREAM_SSL (stream)->priv->sockfd;
PRNetAddr addr;
-
+
if (PR_GetSockName(sockfd, &addr) != PR_SUCCESS)
return NULL;
@@ -1293,7 +1293,7 @@ stream_get_remote_address (CamelTcpStream *stream, socklen_t *len)
{
PRFileDesc *sockfd = CAMEL_TCP_STREAM_SSL (stream)->priv->sockfd;
PRNetAddr addr;
-
+
if (PR_GetPeerName(sockfd, &addr) != PR_SUCCESS)
return NULL;