summaryrefslogtreecommitdiffstats
path: root/tls/tlsBIO.c
diff options
context:
space:
mode:
Diffstat (limited to 'tls/tlsBIO.c')
-rw-r--r--tls/tlsBIO.c242
1 files changed, 0 insertions, 242 deletions
diff --git a/tls/tlsBIO.c b/tls/tlsBIO.c
deleted file mode 100644
index 07a230c..0000000
--- a/tls/tlsBIO.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (C) 1997-2000 Matt Newman <matt@novadigm.com>
- *
- * $Header: /cvsroot/tls/tls/tlsBIO.c,v 1.8 2004/03/24 05:22:53 razzell Exp $
- *
- * Provides BIO layer to interface openssl to Tcl.
- */
-
-#include "tlsInt.h"
-
-/*
- * Forward declarations
- */
-
-static int BioWrite _ANSI_ARGS_ ((BIO *h, CONST char *buf, int num));
-static int BioRead _ANSI_ARGS_ ((BIO *h, char *buf, int num));
-static int BioPuts _ANSI_ARGS_ ((BIO *h, CONST char *str));
-static long BioCtrl _ANSI_ARGS_ ((BIO *h, int cmd, long arg1, void *ptr));
-static int BioNew _ANSI_ARGS_ ((BIO *h));
-static int BioFree _ANSI_ARGS_ ((BIO *h));
-
-
-static BIO_METHOD BioMethods = {
- BIO_TYPE_TCL, "tcl",
- BioWrite,
- BioRead,
- BioPuts,
- NULL, /* BioGets */
- BioCtrl,
- BioNew,
- BioFree,
-};
-
-BIO *
-BIO_new_tcl(statePtr, flags)
- State *statePtr;
- int flags;
-{
- BIO *bio;
-
- bio = BIO_new(&BioMethods);
- bio->ptr = (char*)statePtr;
- bio->init = 1;
- bio->shutdown = flags;
-
- return bio;
-}
-
-BIO_METHOD *
-BIO_s_tcl()
-{
- return &BioMethods;
-}
-
-static int
-BioWrite (bio, buf, bufLen)
- BIO *bio;
- CONST char *buf;
- int bufLen;
-{
- Tcl_Channel chan = Tls_GetParent((State*)(bio->ptr));
- int ret;
-
- dprintf(stderr,"\nBioWrite(0x%x, <buf>, %d) [0x%x]",
- (unsigned int) bio, bufLen, (unsigned int) chan);
-
- if (channelTypeVersion == TLS_CHANNEL_VERSION_2) {
- ret = Tcl_WriteRaw(chan, buf, bufLen);
- } else {
- ret = Tcl_Write(chan, buf, bufLen);
- }
-
- dprintf(stderr,"\n[0x%x] BioWrite(%d) -> %d [%d.%d]",
- (unsigned int) chan, bufLen, ret, Tcl_Eof(chan), Tcl_GetErrno());
-
- BIO_clear_flags(bio, BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY);
-
- if (ret == 0) {
- if (!Tcl_Eof(chan)) {
- BIO_set_retry_write(bio);
- ret = -1;
- }
- }
- if (BIO_should_read(bio)) {
- BIO_set_retry_read(bio);
- }
- return ret;
-}
-
-static int
-BioRead (bio, buf, bufLen)
- BIO *bio;
- char *buf;
- int bufLen;
-{
- Tcl_Channel chan = Tls_GetParent((State*)bio->ptr);
- int ret = 0;
-
- dprintf(stderr,"\nBioRead(0x%x, <buf>, %d) [0x%x]",
- (unsigned int) bio, bufLen, (unsigned int) chan);
-
- if (buf == NULL) return 0;
-
- if (channelTypeVersion == TLS_CHANNEL_VERSION_2) {
- ret = Tcl_ReadRaw(chan, buf, bufLen);
- } else {
- ret = Tcl_Read(chan, buf, bufLen);
- }
-
- dprintf(stderr,"\n[0x%x] BioRead(%d) -> %d [%d.%d]",
- (unsigned int) chan, bufLen, ret, Tcl_Eof(chan), Tcl_GetErrno());
-
- BIO_clear_flags(bio, BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY);
-
- if (ret == 0) {
- if (!Tcl_Eof(chan)) {
- BIO_set_retry_read(bio);
- ret = -1;
- }
- }
- if (BIO_should_write(bio)) {
- BIO_set_retry_write(bio);
- }
- return ret;
-}
-
-static int
-BioPuts (bio, str)
- BIO *bio;
- CONST char *str;
-{
- return BioWrite(bio, str, (int) strlen(str));
-}
-
-static long
-BioCtrl (bio, cmd, num, ptr)
- BIO *bio;
- int cmd;
- long num;
- void *ptr;
-{
- Tcl_Channel chan = Tls_GetParent((State*)bio->ptr);
- long ret = 1;
- int *ip;
-
- dprintf(stderr,"\nBioCtrl(0x%x, 0x%x, 0x%x, 0x%x)",
- (unsigned int) bio, (unsigned int) cmd, (unsigned int) num,
- (unsigned int) ptr);
-
- switch (cmd) {
- case BIO_CTRL_RESET:
- num = 0;
- case BIO_C_FILE_SEEK:
- case BIO_C_FILE_TELL:
- ret = 0;
- break;
- case BIO_CTRL_INFO:
- ret = 1;
- break;
- case BIO_C_SET_FD:
- BioFree(bio);
- /* Sets State* */
- bio->ptr = *((char **)ptr);
- bio->shutdown = (int)num;
- bio->init = 1;
- break;
- case BIO_C_GET_FD:
- if (bio->init) {
- ip = (int *)ptr;
- if (ip != NULL) {
- *ip = bio->num;
- }
- ret = bio->num;
- } else {
- ret = -1;
- }
- break;
- case BIO_CTRL_GET_CLOSE:
- ret = bio->shutdown;
- break;
- case BIO_CTRL_SET_CLOSE:
- bio->shutdown = (int)num;
- break;
- case BIO_CTRL_EOF:
- dprintf(stderr, "BIO_CTRL_EOF\n");
- ret = Tcl_Eof(chan);
- break;
- case BIO_CTRL_PENDING:
- ret = (Tcl_InputBuffered(chan) ? 1 : 0);
- dprintf(stderr, "BIO_CTRL_PENDING(%d)\n", (int) ret);
- break;
- case BIO_CTRL_WPENDING:
- ret = 0;
- break;
- case BIO_CTRL_DUP:
- break;
- case BIO_CTRL_FLUSH:
- dprintf(stderr, "BIO_CTRL_FLUSH\n");
- if (channelTypeVersion == TLS_CHANNEL_VERSION_2) {
- ret = ((Tcl_WriteRaw(chan, "", 0) >= 0) ? 1 : -1);
- } else {
- ret = ((Tcl_Flush(chan) == TCL_OK) ? 1 : -1);
- }
- break;
- default:
- ret = 0;
- break;
- }
- return(ret);
-}
-
-static int
-BioNew (bio)
- BIO *bio;
-{
- bio->init = 0;
- bio->num = 0;
- bio->ptr = NULL;
- bio->flags = 0;
-
- return 1;
-}
-
-static int
-BioFree (bio)
- BIO *bio;
-{
- if (bio == NULL) {
- return 0;
- }
-
- if (bio->shutdown) {
- if (bio->init) {
- /*shutdown(bio->num, 2) */
- /*closesocket(bio->num) */
- }
- bio->init = 0;
- bio->flags = 0;
- bio->num = 0;
- }
- return 1;
-}