Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch mjanssen-changes Excluding Merge-Ins
This is equivalent to a diff from afecf2c9ff to e255c39fbf
2017-05-28
| ||
15:26 | Add several procedures to the math::numtheory package, such factorising a number and estimating the number of primes up to a certain size. Package version now 1.1 check-in: cd42b3ddf8 user: arjenmarkus tags: trunk | |
2017-03-30
| ||
20:01 | Fix bug in tcc4tcl md5 implementation Leaf check-in: e255c39fbf user: Mark tags: mjanssen-changes | |
15:33 | Merged tcc4tcl changes check-in: dfe89741cf user: Mark tags: mjanssen-changes | |
15:16 | Create new branch named "mjanssen-changes" check-in: 6076074d50 user: Mark tags: mjanssen-changes | |
14:33 | Add tcc4tcl support for md5 check-in: e1741398cd user: mjanssen tags: tcc4tcl-md5 | |
2017-02-15
| ||
13:23 | dicttool: Added "isnull" command to the dict ensemble processman: Added a concept of "self" to allow a process to tweak its own priority check-in: afecf2c9ff user: tne tags: trunk | |
2017-02-07
| ||
12:37 | In Soviet Russia, Fossil Commits YOU check-in: 41bd88ff85 user: hypnotoad tags: trunk | |
Added modules/md5/md5tcc.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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 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 | # md5tcc.tcl - # # Wrapper for RSA's Message Digest in C # # Written by Jean-Claude Wippler <[email protected]> # Adapted for tcc by Mark Janssen # package require tcc4tcl; # needs tcc4tcl package provide md5tcc 0.0.1; # namespace eval ::md5 { set handle [tcc4tcl::new] set source_dir [file dirname [info script]] $handle add_include_path $source_dir $handle ccode {#include "md5.c"} $handle ccommand md5tcc_final {dummy ip objc objv} { MD5_CTX *mp; unsigned char *data; unsigned char buf[16]; int size; Tcl_Obj *obj; if (objc != 2) { Tcl_WrongNumArgs(ip, 1, objv, "context"); return TCL_ERROR; } obj = objv[1]; mp = (MD5_CTX *) Tcl_GetByteArrayFromObj(obj,NULL); MD5Final(buf, mp); size = sizeof buf; Tcl_SetObjResult(ip, Tcl_NewByteArrayObj(buf,size)); return TCL_OK; } $handle ccommand md5tcc {dummy ip objc objv} { MD5_CTX *mp; unsigned char *data; int size; Tcl_Obj *obj; if (objc < 2 || objc > 3) { Tcl_WrongNumArgs(ip, 1, objv, "data ?context?"); return TCL_ERROR; } if (objc == 3) { obj = objv[2]; if (Tcl_IsShared(obj)) { obj = Tcl_DuplicateObj(obj); } } else { obj = Tcl_NewByteArrayObj(NULL, sizeof *mp); mp = (MD5_CTX *) Tcl_GetByteArrayFromObj(obj,NULL); MD5Init(mp); } mp = (MD5_CTX *) Tcl_GetByteArrayFromObj(obj,NULL); data = Tcl_GetByteArrayFromObj(objv[1], &size); Tcl_InvalidateStringRep(obj); MD5Update(mp, data, size); Tcl_SetObjResult(ip, obj); return TCL_OK; } $handle go } |
Changes to modules/md5/md5x.tcl.
︙ | ︙ | |||
16 17 18 19 20 21 22 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ------------------------------------------------------------------------- package require Tcl 8.2; # tcl minimum version namespace eval ::md5 { variable accel | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ------------------------------------------------------------------------- package require Tcl 8.2; # tcl minimum version namespace eval ::md5 { variable accel array set accel {tcc 0 critcl 0 cryptkit 0 trf 0} namespace export md5 hmac MD5Init MD5Update MD5Final variable uid if {![info exists uid]} { set uid 0 } |
︙ | ︙ | |||
81 82 83 84 85 86 87 | # # If we have a C-based implementation available, then we will use # it here in preference to the pure-Tcl implementation. # proc ::md5::MD5Update {token data} { variable accel upvar #0 $token state | > > > > > | > | | 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # # If we have a C-based implementation available, then we will use # it here in preference to the pure-Tcl implementation. # proc ::md5::MD5Update {token data} { variable accel upvar #0 $token state if {$accel(tcc)} { if {[info exists state(md5tcc)]} { set state(md5tcc) [md5tcc $data $state(md5tcc)] } else { set state(md5tcc) [md5tcc $data] } return } elseif {$accel(critcl)} { if {[info exists state(md5c)]} { set state(md5c) [md5c $data $state(md5c)] } else { set state(md5c) [md5c $data] } return } elseif {[info exists state(ckctx)]} { |
︙ | ︙ | |||
126 127 128 129 130 131 132 | # # Note that the output is 128 bits represented as binary data. # proc ::md5::MD5Final {token} { upvar #0 $token state # Check for either of the C-compiled versions. | | > > > > | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | # # Note that the output is 128 bits represented as binary data. # proc ::md5::MD5Final {token} { upvar #0 $token state # Check for either of the C-compiled versions. if {[info exists state(md5tcc)]} { set r [md5::md5tcc_final $state(md5tcc)] unset state return $r } elseif {[info exists state(md5c)]} { set r $state(md5c) unset state return $r } elseif {[info exists state(ckctx)]} { cryptkit::cryptEncrypt $state(ckctx) "" cryptkit::cryptGetAttributeString $state(ckctx) \ CRYPT_CTXINFO_HASHVALUE r 16 |
︙ | ︙ | |||
514 515 516 517 518 519 520 521 522 523 524 525 526 527 | # this should not be called, but the test package manipulates the # list of enabled accelerators. # proc ::md5::LoadAccelerator {name} { variable accel set r 0 switch -exact -- $name { critcl { if {![catch {package require tcllibc}] || ![catch {package require md5c}]} { set r [expr {[info commands ::md5::md5c] != {}}] } } cryptkit { | > > > > > > | 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | # this should not be called, but the test package manipulates the # list of enabled accelerators. # proc ::md5::LoadAccelerator {name} { variable accel set r 0 switch -exact -- $name { tcc { if {![catch {package require tcc4tcl}] && ! [catch {package require md5tcc}]} { set r [expr {[info commands ::md5::md5tcc] != {}}] } } critcl { if {![catch {package require tcllibc}] || ![catch {package require md5c}]} { set r [expr {[info commands ::md5::md5c] != {}}] } } cryptkit { |
︙ | ︙ | |||
694 695 696 697 698 699 700 | } # ------------------------------------------------------------------------- # Try and load a compiled extension to help. namespace eval ::md5 { variable e | | | 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 | } # ------------------------------------------------------------------------- # Try and load a compiled extension to help. namespace eval ::md5 { variable e foreach e {tcc critcl cryptkit trf} { if {[LoadAccelerator $e]} { break } } unset e } package provide md5 2.0.7 # ------------------------------------------------------------------------- # Local Variables: # mode: tcl # indent-tabs-mode: nil # End: |
Changes to modules/md5/pkgIndex.tcl.
1 2 3 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} package ifneeded md5 2.0.7 [list source [file join $dir md5x.tcl]] package ifneeded md5 1.4.4 [list source [file join $dir md5.tcl]] | > | 1 2 3 4 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} package ifneeded md5 2.0.7 [list source [file join $dir md5x.tcl]] package ifneeded md5 1.4.4 [list source [file join $dir md5.tcl]] package ifneeded md5tcc 0.0.1 [list source [file join $dir md5tcc.tcl]] |