Changes In Branch nijtmans Through [01caf8a372] Excluding Merge-Ins
This is equivalent to a diff from b5c41cdeb6 to 01caf8a372
2024-02-16
| ||
13:54 | Merge 1.7 check-in: b8b1970122 user: jan.nijtmans tags: nijtmans | |
2024-02-12
| ||
10:39 | Merge 1.8 check-in: 3824e80ab5 user: jan.nijtmans tags: codebykevin, nijtmans | |
10:32 | Merge 1.7. Forget about Tcl < 8.6 for this branch check-in: 01caf8a372 user: jan.nijtmans tags: nijtmans | |
10:22 | Tcl_GetStringFromObj() -> Tcl_GetString(). Update ChangeLog/README.txt check-in: 663996a17b user: jan.nijtmans tags: tls-1.7 | |
2024-01-25
| ||
22:41 | Add some newer TEA files, not enough to build yet check-in: 6a87953d33 user: jan.nijtmans tags: nijtmans | |
22:22 | Somewhat better TEA support, not complete yet. Make this the continuation of the tls-1.7 branch. main/trunk will continue with 1.8.0 check-in: b7b0bd5a8f user: jan.nijtmans tags: tls-1.7 | |
2024-01-24
| ||
14:35 | First changes needed for Tcl 9.0 check-in: 3057d6e2e0 user: jan.nijtmans tags: nijtmans | |
2023-03-04
| ||
15:44 | Merge add-support-alpn into main check-in: 4b4daeada4 user: bohagan tags: trunk | |
2022-05-30
| ||
16:12 | Create new branch named "feature-dump-keys" check-in: f6b9f887ef user: rkeene tags: feature-dump-keys | |
16:08 | Bug [e1f9a21c67]: Start of ALPN support check-in: 07bafe02de user: schelte tags: add-support-alpn | |
16:07 | Create new branch named "add-support-alpn" check-in: 283dc6f133 user: rkeene tags: add-support-alpn | |
2021-01-14
| ||
12:56 | Ticket [604bb68b5c] : rudimentary nmake build system check-in: b5c41cdeb6 user: oehhar tags: trunk | |
2020-10-15
| ||
10:54 | Corrected instructions. Removed already applied patch Closed-Leaf check-in: b6aa13660a user: oehhar tags: bug-604bb68b5c-nmake | |
2020-10-12
| ||
20:32 | add "version" element with SSL/TLS protocol version to tls::status check-in: 9c32a526ed user: resuna tags: trunk | |
Added .fossil-settings/manifest version [1e2c3d8462].
Modified ChangeLog from [7400a29b58] to [03077231f7].
1 2 3 4 5 6 7 | 2015-05-01 Andreas Kupries <[email protected]> * configure.in: Bump to version 1.6.5. * win/makefile.vc: * configure: regen with ac-2.59 * tls.c: Accepted SF TLS [bug/patch #57](https://sourceforge.net/p/tls/bugs/57/). * tlsIO.c: Accepted core Tcl patch in [ticket](http://core.tcl.tk/tcl/tktview/0f94f855cafed92d0e174b7d835453a02831b4dd). | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | TclTLS 1.7.22 ========== Release Date: Mon Oct 12 15:40:16 CDT 2020 https://tcltls.rkeene.org/ 2015-05-01 Andreas Kupries <[email protected]> * configure.in: Bump to version 1.6.5. * win/makefile.vc: * configure: regen with ac-2.59 * tls.c: Accepted SF TLS [bug/patch #57](https://sourceforge.net/p/tls/bugs/57/). * tlsIO.c: Accepted core Tcl patch in [ticket](http://core.tcl.tk/tcl/tktview/0f94f855cafed92d0e174b7d835453a02831b4dd). |
︙ | ︙ |
Modified README.txt from [4d858d5c33] to [3dc72eec51].
1 2 3 4 5 6 7 | Original TLS Copyright (C) 1997-2000 Matt Newman <[email protected]> TLS 1.4.1 Copyright (C) 2000 Ajuba Solutions TLS 1.6 Copyright (C) 2008 ActiveState Software Inc. TLS 1.7 Copyright (C) 2016 Matt Newman, Ajuba Solutions, ActiveState Software Inc, Roy Keene <[email protected]> TLS (aka SSL) Channel - can be layered on any bi-directional Tcl_Channel. | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | TclTLS 1.7.22 ========== Release Date: Mon Oct 12 15:40:16 CDT 2020 https://tcltls.rkeene.org/ Original TLS Copyright (C) 1997-2000 Matt Newman <[email protected]> TLS 1.4.1 Copyright (C) 2000 Ajuba Solutions TLS 1.6 Copyright (C) 2008 ActiveState Software Inc. TLS 1.7 Copyright (C) 2016 Matt Newman, Ajuba Solutions, ActiveState Software Inc, Roy Keene <[email protected]> TLS (aka SSL) Channel - can be layered on any bi-directional Tcl_Channel. |
︙ | ︙ |
Modified configure.ac from [6234df6904] to [d96d4dad71].
1 | dnl Define ourselves | | | 1 2 3 4 5 6 7 8 9 | dnl Define ourselves AC_INIT([tcltls],[1.8.0]) dnl Checks for programs. AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_INSTALL AC_GNU_SOURCE |
︙ | ︙ | |||
249 250 251 252 253 254 255 | DC_SETUP_STABLE_API([${srcdir}/tcltls.vers], tcltls.syms) if test "$tcltls_debug" = 'true'; then WEAKENSYMS=':' REMOVESYMS=':' fi dnl Produce output | | > | 249 250 251 252 253 254 255 256 257 | DC_SETUP_STABLE_API([${srcdir}/tcltls.vers], tcltls.syms) if test "$tcltls_debug" = 'true'; then WEAKENSYMS=':' REMOVESYMS=':' fi dnl Produce output AC_CONFIG_FILES([Makefile pkgIndex.tcl tcltls.syms]) AC_OUTPUT |
Modified pkgIndex.tcl.in from [6c4c62dd82] to [d123f3052b].
|
| | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if {[package vsatisfies [package present Tcl] 8.6-]} { package ifneeded tls @PACKAGE_VERSION@ [list apply {{dir} { if {{@TCLEXT_BUILD@} eq "static"} { load {} Tls } else { load [file join $dir @EXTENSION_TARGET@] Tls } set tlsTclInitScript [file join $dir tls.tcl] if {[file exists $tlsTclInitScript]} { source $tlsTclInitScript } }} $dir] } |
Modified tclOpts.h from [1a6cf1121d] to [f9620d33de].
︙ | ︙ | |||
22 23 24 25 26 27 28 | #define OPTOBJ(option, var) \ OPT_PROLOG(option) \ var = objv[idx]; \ OPT_POSTLOG() #define OPTSTR(option, var) \ OPT_PROLOG(option) \ | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #define OPTOBJ(option, var) \ OPT_PROLOG(option) \ var = objv[idx]; \ OPT_POSTLOG() #define OPTSTR(option, var) \ OPT_PROLOG(option) \ var = Tcl_GetString(objv[idx]);\ OPT_POSTLOG() #define OPTINT(option, var) \ OPT_PROLOG(option) \ if (Tcl_GetIntFromObj(interp, objv[idx], \ &(var)) != TCL_OK) { \ return TCL_ERROR; \ |
︙ | ︙ |
Modified tls.c from [b7a88587d1] to [959c6dc2b0].
︙ | ︙ | |||
34 35 36 37 38 39 40 | */ #define F2N( key, dsp) \ (((key) == NULL) ? (char *) NULL : \ Tcl_TranslateFileName(interp, (key), (dsp))) #define REASON() ERR_reason_error_string(ERR_get_error()) | | | | | | | | | | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | */ #define F2N( key, dsp) \ (((key) == NULL) ? (char *) NULL : \ Tcl_TranslateFileName(interp, (key), (dsp))) #define REASON() ERR_reason_error_string(ERR_get_error()) static void InfoCallback(const SSL *ssl, int where, int ret); static int CiphersObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int HandshakeObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int ImportObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int StatusObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int VersionObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int MiscObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static int UnimportObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); static SSL_CTX *CTX_Init(State *statePtr, int isServer, int proto, char *key, char *certfile, unsigned char *key_asn1, unsigned char *cert_asn1, int key_asn1_len, int cert_asn1_len, char *CAdir, char *CAfile, char *ciphers, char *DHparams); static int TlsLibInit(int uninitialize); |
︙ | ︙ | |||
167 168 169 170 171 172 173 | * None * * Side effects: * Calls callback (if defined) *------------------------------------------------------------------- */ static void | | | 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | * None * * Side effects: * Calls callback (if defined) *------------------------------------------------------------------- */ static void InfoCallback(const SSL *ssl, int where, int ret) { State *statePtr = (State*)SSL_get_app_data((SSL *)ssl); Tcl_Obj *cmdPtr; char *major; char *minor; dprintf("Called"); |
︙ | ︙ | |||
224 225 226 227 228 229 230 | Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( minor, -1) ); if (where & (SSL_CB_LOOP|SSL_CB_EXIT)) { Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( SSL_state_string_long(ssl), -1) ); } else if (where & SSL_CB_ALERT) { | | | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 | Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( minor, -1) ); if (where & (SSL_CB_LOOP|SSL_CB_EXIT)) { Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( SSL_state_string_long(ssl), -1) ); } else if (where & SSL_CB_ALERT) { const char *cp = (char *) SSL_alert_desc_string_long(ret); Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( cp, -1) ); } else { Tcl_ListObjAppendElement( statePtr->interp, cmdPtr, Tcl_NewStringObj( SSL_state_string_long(ssl), -1) ); } |
︙ | ︙ | |||
365 366 367 368 369 370 371 | Tcl_Obj *cmdPtr; dprintf("Called"); if (msg && *msg) { Tcl_SetErrorCode(statePtr->interp, "SSL", msg, (char *)NULL); } else { | | | 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | Tcl_Obj *cmdPtr; dprintf("Called"); if (msg && *msg) { Tcl_SetErrorCode(statePtr->interp, "SSL", msg, (char *)NULL); } else { msg = Tcl_GetString(Tcl_GetObjResult(statePtr->interp)); } statePtr->err = msg; if (statePtr->callback == (Tcl_Obj*)NULL) { char buf[BUFSIZ]; sprintf(buf, "SSL channel \"%s\": error: %s", Tcl_GetChannelName(statePtr->self), msg); |
︙ | ︙ | |||
493 494 495 496 497 498 499 | *------------------------------------------------------------------- */ static int CiphersObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | | 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 | *------------------------------------------------------------------- */ static int CiphersObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { static const char *protocols[] = { "ssl2", "ssl3", "tls1", "tls1.1", "tls1.2", "tls1.3", NULL }; enum protocol { TLS_SSL2, TLS_SSL3, TLS_TLS1, TLS_TLS1_1, TLS_TLS1_2, TLS_TLS1_3, TLS_NONE }; Tcl_Obj *objPtr; SSL_CTX *ctx = NULL; |
︙ | ︙ | |||
633 634 635 636 637 638 639 | * * Side effects: * May force SSL negotiation to take place. * *------------------------------------------------------------------- */ | | | | | 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 | * * Side effects: * May force SSL negotiation to take place. * *------------------------------------------------------------------- */ static int HandshakeObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { Tcl_Channel chan; /* The channel to set a mode on. */ State *statePtr; /* client state for ssl socket */ const char *errStr = NULL; int ret = 1; int err = 0; dprintf("Called"); if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "channel"); return(TCL_ERROR); } chan = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), NULL); if (chan == (Tcl_Channel) NULL) { return(TCL_ERROR); } /* * Make sure to operate on the topmost channel */ |
︙ | ︙ | |||
722 723 724 725 726 727 728 | */ static int ImportObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 | */ static int ImportObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { Tcl_Channel chan; /* The channel to set a mode on. */ State *statePtr; /* client state for ssl socket */ SSL_CTX *ctx = NULL; Tcl_Obj *script = NULL; Tcl_Obj *password = NULL; Tcl_DString upperChannelTranslation, upperChannelBlocking, upperChannelEncoding, upperChannelEOFChar; |
︙ | ︙ | |||
778 779 780 781 782 783 784 | #endif if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "channel ?options?"); return TCL_ERROR; } | | | | 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 | #endif if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "channel ?options?"); return TCL_ERROR; } chan = Tcl_GetChannel(interp, Tcl_GetString(objv[1]), NULL); if (chan == (Tcl_Channel) NULL) { return TCL_ERROR; } /* * Make sure to operate on the topmost channel */ chan = Tcl_GetTopChannel(chan); for (idx = 2; idx < objc; idx++) { char *opt = Tcl_GetString(objv[idx]); if (opt[0] != '-') break; OPTSTR( "-cadir", CAdir); OPTSTR( "-cafile", CAfile); OPTSTR( "-certfile", certfile); |
︙ | ︙ | |||
962 963 964 965 966 967 968 | } #endif /* * SSL Callbacks */ | | | 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 | } #endif /* * SSL Callbacks */ SSL_set_app_data(statePtr->ssl, (void *)statePtr); /* point back to us */ SSL_set_verify(statePtr->ssl, verify, VerifyCallback); SSL_CTX_set_info_callback(statePtr->ctx, InfoCallback); /* Create Tcl_Channel BIO Handler */ statePtr->p_bio = BIO_new_tcl(statePtr, BIO_NOCLOSE); |
︙ | ︙ | |||
1012 1013 1014 1015 1016 1017 1018 | */ static int UnimportObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 | */ static int UnimportObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { Tcl_Channel chan; /* The channel to set a mode on. */ dprintf("Called"); if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "channel"); |
︙ | ︙ | |||
1207 1208 1209 1210 1211 1212 1213 | #if !defined(NO_TLS1_3) if (proto == TLS_PROTO_TLS1_3) { SSL_CTX_set_min_proto_version (ctx, TLS1_3_VERSION); SSL_CTX_set_max_proto_version (ctx, TLS1_3_VERSION); } #endif | | | 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 | #if !defined(NO_TLS1_3) if (proto == TLS_PROTO_TLS1_3) { SSL_CTX_set_min_proto_version (ctx, TLS1_3_VERSION); SSL_CTX_set_max_proto_version (ctx, TLS1_3_VERSION); } #endif SSL_CTX_set_app_data( ctx, (void*)interp); /* remember the interpreter */ SSL_CTX_set_options( ctx, SSL_OP_ALL); /* all SSL bug workarounds */ SSL_CTX_set_options( ctx, off); /* all SSL bug workarounds */ SSL_CTX_sess_set_cache_size( ctx, 128); if (ciphers != NULL) SSL_CTX_set_cipher_list(ctx, ciphers); |
︙ | ︙ | |||
1399 1400 1401 1402 1403 1404 1405 | *------------------------------------------------------------------- */ static int StatusObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | | | 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 | *------------------------------------------------------------------- */ static int StatusObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { State *statePtr; X509 *peer; Tcl_Obj *objPtr; Tcl_Channel chan; char *channelName, *ciphers; int mode; dprintf("Called"); switch (objc) { case 2: channelName = Tcl_GetString(objv[1]); break; case 3: if (!strcmp (Tcl_GetString (objv[1]), "-local")) { channelName = Tcl_GetString(objv[2]); break; } /* else fall... */ default: Tcl_WrongNumArgs(interp, 1, objv, "?-local? channel"); return TCL_ERROR; } |
︙ | ︙ | |||
1493 1494 1495 1496 1497 1498 1499 | *------------------------------------------------------------------- */ static int VersionObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 | *------------------------------------------------------------------- */ static int VersionObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { Tcl_Obj *objPtr; dprintf("Called"); objPtr = Tcl_NewStringObj(OPENSSL_VERSION_TEXT, -1); |
︙ | ︙ | |||
1526 1527 1528 1529 1530 1531 1532 | *------------------------------------------------------------------- */ static int MiscObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; | | | | 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 | *------------------------------------------------------------------- */ static int MiscObjCmd(clientData, interp, objc, objv) ClientData clientData; /* Not used. */ Tcl_Interp *interp; int objc; Tcl_Obj *const objv[]; { static const char *commands [] = { "req", NULL }; enum command { C_REQ, C_DUMMY }; int cmd; dprintf("Called"); if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?"); |
︙ | ︙ | |||
1785 1786 1787 1788 1789 1790 1791 | dprintf("Called"); /* * We only support Tcl 8.4 or newer */ if ( #ifdef USE_TCL_STUBS | | | | 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 | dprintf("Called"); /* * We only support Tcl 8.4 or newer */ if ( #ifdef USE_TCL_STUBS Tcl_InitStubs(interp, "8.6-", 0) #else Tcl_PkgRequire(interp, "Tcl", "8.6-", 0) #endif == NULL) { return TCL_ERROR; } if (TlsLibInit(0) != TCL_OK) { Tcl_AppendResult(interp, "could not initialize SSL library", NULL); |
︙ | ︙ |
Modified tlsBIO.c from [7f6303ee40] to [b685c38f11].
︙ | ︙ | |||
27 28 29 30 31 32 33 | #define BIO_meth_set_destroy(bio, val) (bio)->destroy = val; #endif /* * Forward declarations */ | | | | | | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #define BIO_meth_set_destroy(bio, val) (bio)->destroy = val; #endif /* * Forward declarations */ static int BioWrite (BIO *h, const char *buf, int num); static int BioRead (BIO *h, char *buf, int num); static int BioPuts (BIO *h, const char *str); static long BioCtrl (BIO *h, int cmd, long arg1, void *ptr); static int BioNew (BIO *h); static int BioFree (BIO *h); BIO *BIO_new_tcl(State *statePtr, int flags) { BIO *bio; static BIO_METHOD *BioMethods = NULL; #ifdef TCLTLS_SSL_USE_FASTPATH Tcl_Channel parentChannel; const Tcl_ChannelType *parentChannelType; |
︙ | ︙ | |||
106 107 108 109 110 111 112 | BIO_set_data(bio, statePtr); BIO_set_shutdown(bio, flags); BIO_set_init(bio, 1); return(bio); } | | | 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | BIO_set_data(bio, statePtr); BIO_set_shutdown(bio, flags); BIO_set_init(bio, 1); return(bio); } static int BioWrite(BIO *bio, const char *buf, int bufLen) { Tcl_Channel chan; int ret; int tclEofChan, tclErrno; chan = Tls_GetParent((State *) BIO_get_data(bio), 0); dprintf("[chan=%p] BioWrite(%p, <buf>, %d)", (void *)chan, (void *) bio, bufLen); |
︙ | ︙ | |||
210 211 212 213 214 215 216 | } dprintf("BioRead(%p, <buf>, %d) [%p] returning %i", (void *) bio, bufLen, (void *) chan, ret); return(ret); } | | | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | } dprintf("BioRead(%p, <buf>, %d) [%p] returning %i", (void *) bio, bufLen, (void *) chan, ret); return(ret); } static int BioPuts(BIO *bio, const char *str) { dprintf("BioPuts(%p, <string:%p>) called", bio, str); return BioWrite(bio, str, (int) strlen(str)); } static long BioCtrl(BIO *bio, int cmd, long num, void *ptr) { Tcl_Channel chan; |
︙ | ︙ |
Modified tlsIO.c from [a0890258d8] to [7a01031cff].
︙ | ︙ | |||
18 19 20 21 22 23 24 | */ #include "tlsInt.h" /* * Forward declarations */ | | | | | | | | | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | */ #include "tlsInt.h" /* * Forward declarations */ static int TlsBlockModeProc (ClientData instanceData, int mode); static int TlsCloseProc (ClientData instanceData, Tcl_Interp *interp); static int TlsInputProc (ClientData instanceData, char *buf, int bufSize, int *errorCodePtr); static int TlsOutputProc (ClientData instanceData, const char *buf, int toWrite, int *errorCodePtr); static int TlsGetOptionProc (ClientData instanceData, Tcl_Interp *interp, const char *optionName, Tcl_DString *dsPtr); static void TlsWatchProc (ClientData instanceData, int mask); static int TlsGetHandleProc (ClientData instanceData, int direction, ClientData *handlePtr); static int TlsNotifyProc (ClientData instanceData, int mask); #if 0 static void TlsChannelHandler (ClientData clientData, int mask); #endif static void TlsChannelHandlerTimer (ClientData clientData); /* * TLS Channel Type */ static Tcl_ChannelType *tlsChannelType = NULL; /* |
︙ | ︙ | |||
76 77 78 79 80 81 82 | * (2) With stubs we just determine the difference between the older * and modern variant and overallocate accordingly if compiled * against an older variant. */ size = sizeof(Tcl_ChannelType); /* Base size */ tlsChannelType = (Tcl_ChannelType *) ckalloc(size); | | | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | * (2) With stubs we just determine the difference between the older * and modern variant and overallocate accordingly if compiled * against an older variant. */ size = sizeof(Tcl_ChannelType); /* Base size */ tlsChannelType = (Tcl_ChannelType *) ckalloc(size); memset(tlsChannelType, 0, size); /* * Common elements of the structure (no changes in location or name) * close2Proc, seekProc, setOptionProc stay NULL. */ tlsChannelType->typeName = "tls"; |
︙ | ︙ | |||
102 103 104 105 106 107 108 | /* * For the 8.3.2 core we present ourselves as a version 2 * driver. This means a special value in version (ex * blockModeProc), blockModeProc in a different place and of * course usage of the handlerProc. */ | | | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | /* * For the 8.3.2 core we present ourselves as a version 2 * driver. This means a special value in version (ex * blockModeProc), blockModeProc in a different place and of * course usage of the handlerProc. */ tlsChannelType->version = TCL_CHANNEL_VERSION_5; tlsChannelType->blockModeProc = TlsBlockModeProc; tlsChannelType->handlerProc = TlsNotifyProc; } return(tlsChannelType); } |
︙ | ︙ | |||
497 498 499 500 501 502 503 | * * Side effects: * Writes output on the output device of the channel. * *------------------------------------------------------------------- */ | | | 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 | * * Side effects: * Writes output on the output device of the channel. * *------------------------------------------------------------------- */ static int TlsOutputProc(ClientData instanceData, const char *buf, int toWrite, int *errorCodePtr) { unsigned long backingError; State *statePtr = (State *) instanceData; int written, err; int tlsConnect; *errorCodePtr = 0; |
︙ | ︙ | |||
639 640 641 642 643 644 645 | * None. * *------------------------------------------------------------------- */ static int TlsGetOptionProc(ClientData instanceData, /* Socket state. */ Tcl_Interp *interp, /* For errors - can be NULL. */ | | | 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 | * None. * *------------------------------------------------------------------- */ static int TlsGetOptionProc(ClientData instanceData, /* Socket state. */ Tcl_Interp *interp, /* For errors - can be NULL. */ const char *optionName, /* Name of the option to * retrieve the value for, or * NULL to get all options and * their values. */ Tcl_DString *dsPtr) /* Where to store the computed value * initialized by caller. */ { State *statePtr = (State *) instanceData; |
︙ | ︙ |
Modified tlsInt.h from [b78d815874] to [d2250e88c5].
︙ | ︙ | |||
25 26 27 28 29 30 31 | #ifdef __WIN32__ #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <wincrypt.h> /* OpenSSL needs this on Windows */ #endif | < < < < < | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #ifdef __WIN32__ #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <wincrypt.h> /* OpenSSL needs this on Windows */ #endif #ifdef NO_PATENTS # define NO_IDEA # define NO_RC2 # define NO_RC4 # define NO_RC5 # define NO_RSA # ifndef NO_SSL2 |
︙ | ︙ |
Modified win/README.txt from [c9eebede2e] to [196e5f2ba2].
1 2 3 4 5 6 | Windows DLL Build instructions using nmake build system 2020-10-15 [email protected] Properties: - 32 bit DLL - VisualStudio 2015 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Windows DLL Build instructions using nmake build system 2020-10-15 [email protected] Properties: - 32 bit DLL - VisualStudio 2015 Note: Visual C++ 6 does not build OpenSSL (long long syntax error) - Cygwin32 (temporary helper, please help to replace by tclsh) - OpenSSL statically linked to TCLTLS DLL. Note: Dynamic linking also works but results in a DLL dependeny on OPENSSL DLL's 1) Build OpenSSL static libraries: OpenSSL source distribtution unpacked in: |
︙ | ︙ | |||
31 32 33 34 35 36 37 | nmake nmake test namke install 2) Build TCLTLS Unzip distribution in: | | | | | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | nmake nmake test namke install 2) Build TCLTLS Unzip distribution in: c:\test\tcltls\tcltls-1.8.0 -> start cygwin bash prompt cd /cygdrive/c/test/tcltls/tcltls-1.8.0 ./gen_dh_params > dh_params.h od -A n -v -t xC < 'tls.tcl' > tls.tcl.h.new.1 sed 's@[^0-9A-Fa-f]@@g;s@..@0x&, @g' < tls.tcl.h.new.1 > tls.tcl.h rm -f tls.tcl.h.new.1 -> Visual Studio x86 native prompt. cd C:\test\tcltls\tcltls-1.8.0\win nmake -f makefile.vc TCLDIR=c:\test\tcl8610 SSL_INSTALL_FOLDER=C:\test\tcltls\openssl nmake -f makefile.vc install TCLDIR=c:\test\tcl8610 INSTALLDIR=c:\test\tcltls SSL_INSTALL_FOLDER=C:\test\tcltls\openssl 3) Test Start tclsh or wish lappend auto_path {C:\test\tcltls\tls1.8.0} package require tls A small "1.8.0" showing up is hopefully the end of this long way... |
Added win/gitmanifest.in version [efa71fcbca].
Modified win/makefile.vc from [88282c8491] to [77c38ff3cf].
1 2 3 4 | # call nmake with additional parameter SSL_INSTALL_FOLDER= with the # OpenSSL instalation folder following. PROJECT=tls | | | 1 2 3 4 5 6 7 8 9 10 11 12 | # call nmake with additional parameter SSL_INSTALL_FOLDER= with the # OpenSSL instalation folder following. PROJECT=tls DOTVERSION = 1.8.0 PRJ_INCLUDES = -I"$(SSL_INSTALL_FOLDER)\include" PRJ_DEFINES = -D NO_SSL2 -D NO_SSL3 -D _CRT_SECURE_NO_WARNINGS PRJ_LIBS = \ "$(SSL_INSTALL_FOLDER)\lib\libssl.lib" \ "$(SSL_INSTALL_FOLDER)\lib\libcrypto.lib" \ |
︙ | ︙ |
Added win/rules-ext.vc version [50db9d785c].
Added win/rules.vc version [5be8f10e0e].
Added win/svnmanifest.in version [ea528c30fc].
Modified win/targets.vc from [77a0a274fa] to [3627f33607].
1 2 3 4 5 6 | #------------------------------------------------------------- -*- makefile -*- # targets.vc -- # # Part of the nmake based build system for Tcl and its extensions. # This file defines some standard targets for the convenience of extensions # and can be optionally included by the extension makefile. | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #------------------------------------------------------------- -*- makefile -*- # targets.vc -- # # Part of the nmake based build system for Tcl and its extensions. # This file defines some standard targets for the convenience of extensions # and can be optionally included by the extension makefile. # See TIP 477 (https://core.tcl-lang.org/tips/doc/main/tip/477.md) for docs. $(PROJECT): setup pkgindex $(PRJLIB) !ifdef PRJ_STUBOBJS $(PROJECT): $(PRJSTUBLIB) $(PRJSTUBLIB): $(PRJ_STUBOBJS) $(LIBCMD) $** |
︙ | ︙ |
Added win/x86_64-w64-mingw32-nmakehlp.exe version [078ee83504].