HashStream.st
author Claus Gittinger <cg@exept.de>
Mon, 09 Jan 2012 16:54:24 +0100
changeset 13903 f2b227a2fcaa
parent 13901 318c9d7e0c1a
child 13904 1aacd72f4414
permissions -rw-r--r--
changed: #nextPut: base all encoding on the single: #nextPutBytes:from:startingAt:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1999 by eXept Software AG
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
    12
"{ Package: 'stx:libbasic' }"
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
    13
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Stream subclass:#HashStream
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
    15
	instanceVariableNames:''
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
    16
	classVariableNames:''
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
    17
	poolDictionaries:''
12418
720aa584e5cf category changes
Claus Gittinger <cg@exept.de>
parents: 12273
diff changeset
    18
	category:'System-Crypt-Hashing'
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!HashStream class methodsFor:'documentation'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
copyright
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 1999 by eXept Software AG
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 hereby transferred.
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
documentation
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    Abstract class. Subclasses generate hash values used as checksums
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    or for generating cryptographic signatures.
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    [author:]
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
        Stefan Vogel
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    [see also:]
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
        SHA1Stream MD5Stream
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!HashStream class methodsFor:'instance creation'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
7015
862174119468 category change
penk
parents: 7014
diff changeset
    53
new
862174119468 category change
penk
parents: 7014
diff changeset
    54
    "have to re-allow new - it was disabled in Stream"
862174119468 category change
penk
parents: 7014
diff changeset
    55
    ^ self basicNew initialize
862174119468 category change
penk
parents: 7014
diff changeset
    56
862174119468 category change
penk
parents: 7014
diff changeset
    57
862174119468 category change
penk
parents: 7014
diff changeset
    58
!
862174119468 category change
penk
parents: 7014
diff changeset
    59
862174119468 category change
penk
parents: 7014
diff changeset
    60
random
862174119468 category change
penk
parents: 7014
diff changeset
    61
    "create a random number generator using myself"
862174119468 category change
penk
parents: 7014
diff changeset
    62
862174119468 category change
penk
parents: 7014
diff changeset
    63
    ^ HashRandom with:self
862174119468 category change
penk
parents: 7014
diff changeset
    64
862174119468 category change
penk
parents: 7014
diff changeset
    65
    "
862174119468 category change
penk
parents: 7014
diff changeset
    66
     SHA1Stream random next
862174119468 category change
penk
parents: 7014
diff changeset
    67
    "
862174119468 category change
penk
parents: 7014
diff changeset
    68
862174119468 category change
penk
parents: 7014
diff changeset
    69
    "Modified: / 12.11.1999 / 17:21:17 / stefan"
862174119468 category change
penk
parents: 7014
diff changeset
    70
! !
862174119468 category change
penk
parents: 7014
diff changeset
    71
12145
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    72
!HashStream class methodsFor:'compatibility - squeak'!
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    73
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    74
hashMessage:aStringOrByteArrayOrStream
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
    75
    "SQUEAK compatibility 
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
    76
        - but this is a bad choice - squeak uses #digestMessage: at the instance side"
12145
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    77
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    78
    ^ self hashValueOf:aStringOrByteArrayOrStream
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    79
! !
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
    80
12174
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    81
!HashStream class methodsFor:'queries'!
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    82
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    83
canStream
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    84
    "simple hash functions (squeak-ported) cannot stream.
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    85
     Use hashFunction: there"
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    86
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    87
    ^ true
13889
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    88
!
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    89
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    90
hashSize
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    91
    self subclassResponsibility
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    92
f335cf6d5783 added: #hashSize
Claus Gittinger <cg@exept.de>
parents: 13366
diff changeset
    93
    "Created: / 04-01-2012 / 19:22:32 / cg"
12174
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    94
! !
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
    95
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
    96
!HashStream class methodsFor:'self tests'!
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
    97
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
    98
test
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
    99
    "test against testVector"
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   100
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   101
    self testVector do:[:pair |
12753
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   102
        |data expectedHash expectedHashBytes hashStream|
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   103
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   104
        data := pair first.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   105
        expectedHash := pair second.
12753
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   106
        expectedHash isString ifTrue:[
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   107
            expectedHashBytes := ByteArray fromHexString:expectedHash
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   108
        ] ifFalse:[
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   109
            expectedHashBytes := expectedHash
3e6acf834564 changed: #test
Claus Gittinger <cg@exept.de>
parents: 12418
diff changeset
   110
        ].
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   111
13366
0e1bdf4f4156 changed: #test
Stefan Vogel <sv@exept.de>
parents: 12753
diff changeset
   112
        "/ non-stream interface must be implemented by all
0e1bdf4f4156 changed: #test
Stefan Vogel <sv@exept.de>
parents: 12753
diff changeset
   113
        self assert:(self hashValueOf:data) = expectedHashBytes message:'Test failed'.
12174
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
   114
        self canStream ifTrue:[
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
   115
            hashStream := self new.
e40625636dd5 added: #canStream
Claus Gittinger <cg@exept.de>
parents: 12146
diff changeset
   116
            hashStream nextPut:data.
13366
0e1bdf4f4156 changed: #test
Stefan Vogel <sv@exept.de>
parents: 12753
diff changeset
   117
            self assert:hashStream hashValue = expectedHashBytes message:'Test failed'
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   118
        ].
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   119
    ].
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   120
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   121
    "
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   122
        MD5Stream test.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   123
        SHA1Stream test.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   124
        RipeMD160Stream test.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   125
    "
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   126
!
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   127
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   128
testVector
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   129
    "define a testvector to test the implementation"
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   130
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   131
    ^ self subclassResponsibility
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   132
! !
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   133
7015
862174119468 category change
penk
parents: 7014
diff changeset
   134
!HashStream class methodsFor:'utilities'!
862174119468 category change
penk
parents: 7014
diff changeset
   135
12145
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
   136
digestMessage:aStringOrByteArrayOrStream
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
   137
    ^ self hashValueOf:aStringOrByteArrayOrStream
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
   138
!
Stefan Vogel <sv@exept.de>
parents: 12142
diff changeset
   139
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   140
hashValueOf:aStringOrByteArrayOrStream
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   141
    |hashStream|
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   142
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   143
    hashStream := self new.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   144
    aStringOrByteArrayOrStream readStream copyToEndInto:hashStream.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   145
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   146
    ^ hashStream hashValue
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   147
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   148
    "
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   149
     MD5Stream hashValueOf:'BlaBlaBla'
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   150
     MD5Stream hashValueOf:('makefile' asFilename readStream)
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   151
     MD5Stream hashValueOf:('BlaBlaBla' readStream)
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   152
    "
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   153
!
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   154
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
hashValueOfFile:aFilename
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   156
    |hash|
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   157
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   158
    aFilename asFilename readingFileDo:[:readStream|
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   159
        readStream binary.
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   160
        hash := self hashValueOf:readStream.
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   161
    ].
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   162
    ^ hash
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   163
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   164
    "
12146
cc757f348884 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 12145
diff changeset
   165
     MD5Stream hashValueOfFile:'makefile'
7014
c443479ee603 hashValueOf - generalized
penk
parents: 6864
diff changeset
   166
    "
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
!HashStream methodsFor:'accessing'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
contents
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "return the entire contents of the stream
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
     - this is our hashValue."
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    ^ self hashValue
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    "Created: / 17.3.1999 / 15:10:03 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
!HashStream methodsFor:'not implemented'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
next
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    ^ self shouldNotImplement
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    "Created: / 17.3.1999 / 15:11:03 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
12142
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   188
!HashStream methodsFor:'operations'!
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   189
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   190
digestMessage:bytes
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   191
    "answer the digest of bytes"
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   192
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   193
    self reset.
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   194
    self nextPutAll:bytes.
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   195
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   196
    ^ self contents.
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   197
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   198
    "
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   199
        SHA1Stream new 
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   200
                digestMessage:'123456789abcdefg';
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   201
                digestMessage:'123456789abcdefg'
12273
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   202
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   203
        (SHA1Stream new hmac key:'123456') 
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   204
                digestMessage:'123456789abcdefg';
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   205
                digestMessage:'123456789abcdefg'
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   206
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   207
        (SHA1Stream new hmac key:'123456') 
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   208
                nextPutAll:'123456789abcdefg';
96403b4aeb20 comment/format in: #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 12174
diff changeset
   209
                contents
12142
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   210
    "
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   211
!
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   212
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   213
hmac
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   214
    "answer a hmac stream with myself"
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   215
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   216
    ^ HmacStream on:self
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   217
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   218
    "
13901
318c9d7e0c1a comment/format in: #hmac
Claus Gittinger <cg@exept.de>
parents: 13900
diff changeset
   219
     (SHA1Stream new hmac key:'exampleKey') digestMessage:'message to generate MAC of'
12142
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   220
    "
13901
318c9d7e0c1a comment/format in: #hmac
Claus Gittinger <cg@exept.de>
parents: 13900
diff changeset
   221
318c9d7e0c1a comment/format in: #hmac
Claus Gittinger <cg@exept.de>
parents: 13900
diff changeset
   222
    "Modified (comment): / 09-01-2012 / 13:51:01 / cg"
12142
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   223
!
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   224
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   225
reset
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   226
    "initialize to a clean state"
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   227
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   228
    ^ self subclassResponsibility
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   229
! !
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   230
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
!HashStream methodsFor:'queries'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
blockSize
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    "the class knows about the basic block size"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    ^ self class blockSize
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    "Created: / 18.3.1999 / 10:17:02 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
hashSize
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    "the class knows about the basic hash size"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    ^ self class hashSize
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    "Created: / 18.3.1999 / 10:17:12 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    "Modified: / 15.10.1999 / 11:53:20 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
7251
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   250
hashValue
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   251
    "retunr the value of the computeted hash"
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   252
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   253
    ^ self subclassResponsibility
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   254
!
0ef2a2a16faa *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 7042
diff changeset
   255
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
isReadable
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    "return true, if reading is supported by the recevier.
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
     Always return false here"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    ^ false
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
    "Modified: / 17.3.1999 / 15:06:09 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
isWritable
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    "return true, if writing is supported by the recevier.
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
     Always return true here"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    ^ true
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    "Created: / 17.3.1999 / 15:05:49 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
!HashStream methodsFor:'testing'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
atEnd
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    "return true if the end of the stream has been reached;
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    this is never reached"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    ^ false
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    "Created: / 17.3.1999 / 15:08:55 / stefan"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
!HashStream methodsFor:'writing'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   287
nextPut:anObject
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   288
    "add the hash of anObject to the computed hash so far.
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   289
     anObject can be a Character, SmallInteger ByteArray or String"
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   290
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   291
    anObject isByteCollection ifTrue:[
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   292
        self nextPutBytes:(anObject byteSize) from:anObject startingAt:1.
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   293
        ^ self.
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   294
    ].
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   295
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   296
    anObject isCharacter ifTrue:[
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   297
        "/ only ascii allowed !!
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   298
        self nextPutBytes:(ByteArray with:anObject codePoint).
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   299
        ^ self.
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   300
    ].
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   301
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   302
    anObject isInteger ifTrue:[
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   303
        "/ only 0..255 allowed !!
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   304
        anObject < 256 ifTrue:[
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   305
            self nextPutAll:(ByteArray with:anObject).
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   306
            ^ self.
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   307
        ].
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   308
    ].
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   309
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   310
    self error:'unsupported argument'.
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   311
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   312
    "Modified (comment): / 09-01-2012 / 16:54:05 / cg"
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   313
!
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   314
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
nextPutAll:aCollection
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    "Hash streams handle Strings and ByteArrays in nextPut:"
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
11799
2cbd0a5e7c64 changed #nextPutAll:
Stefan Vogel <sv@exept.de>
parents: 7251
diff changeset
   318
    aCollection isByteCollection ifTrue:[
13900
0dc22ed6d46f changed: #nextPutAll:
Claus Gittinger <cg@exept.de>
parents: 13889
diff changeset
   319
        self nextPutBytes:(aCollection byteSize) from:aCollection startingAt:1.
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    ] ifFalse:[
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
        super nextPutAll:aCollection
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
    ].
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
13900
0dc22ed6d46f changed: #nextPutAll:
Claus Gittinger <cg@exept.de>
parents: 13889
diff changeset
   324
    "Created: / 14-10-1999 / 11:22:50 / stefan"
0dc22ed6d46f changed: #nextPutAll:
Claus Gittinger <cg@exept.de>
parents: 13889
diff changeset
   325
    "Modified: / 09-01-2012 / 13:02:44 / cg"
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   326
!
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   327
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   328
nextPutBytes:count from:anObject startingAt:start
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   329
    "write count bytes from an object starting at index start.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   330
     Return the number of bytes written.
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   331
     The object must have non-pointer indexed instvars 
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   332
     (i.e. be a ByteArray, String, Float- or DoubleArray)."
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   333
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   334
    self subclassResponsibility
7042
dbb7898901e3 Fix #hashValueOf:
Stefan Vogel <sv@exept.de>
parents: 7015
diff changeset
   335
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   336
    "Modified: / 09-01-2012 / 16:41:31 / cg"
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
! !
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
!HashStream class methodsFor:'documentation'!
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
version
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   342
    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.18 2012-01-09 15:54:24 cg Exp $'
12142
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   343
!
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   344
1814d6072f33 new: #hmac, #digestMessage:
Stefan Vogel <sv@exept.de>
parents: 11799
diff changeset
   345
version_CVS
13903
f2b227a2fcaa changed:
Claus Gittinger <cg@exept.de>
parents: 13901
diff changeset
   346
    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.18 2012-01-09 15:54:24 cg Exp $'
6864
0d5bd7218853 MD5 stuff now in base system
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
! !