'From Squeak3.8 of ''5 May 2005'' [latest update: #6665] on 9 December 2005 at 5:03:37 am'! "Change Set: msh-crypto-test Date: 30 November 2005 Author: Matthew S. Hamrick License and Copyright Copyright (c) 2003-2005, Matthew S. Hamrick All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Revejo.Org nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. About This Changeset This is the msh-crypto-test package. It contains a series of crypto primitives for smalltalk. Up to date information about this package may be found at http://www.cryptonomicon.net/msh/msh-crypto.html."! TestCase subclass: #MD2Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #MD4Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #MD5Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #SHA1Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #SHA224Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #SHA256Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #SHA384Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! TestCase subclass: #SHA512Test instanceVariableNames: 'digest digestor' classVariableNames: '' poolDictionaries: '' category: 'Crypto-Test'! !MD2Test methodsFor: 'Running' stamp: 'msh 8/7/2003 23:15'! setUp digestor _ MD2 new.! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test1 digestor update: ( 'a' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r32 16rEC 16r01 16rEC 16r4A 16r6D 16rAC 16r72 16rC0 16rAB 16r96 16rFB 16r34 16rC0 16rB5 16rD1) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test2 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rDA 16r85 16r3B 16r0D 16r3F 16r88 16rD9 16r9B 16r30 16r28 16r3A 16r69 16rE6 16rDE 16rD6 16rBB) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test3 digestor update: ( 'message digest' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rAB 16r4F 16r49 16r6B 16rFB 16r2A 16r53 16r0B 16r21 16r9F 16rF3 16r30 16r31 16rFE 16r06 16rB0) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test4 digestor update: ( 'abcdefghijklmnopqrstuvwxyz' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r4E 16r8D 16rDF 16rF3 16r65 16r02 16r92 16rAB 16r5A 16r41 16r08 16rC3 16rAA 16r47 16r94 16r0B) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test5 digestor update: ( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rDA 16r33 16rDE 16rF2 16rA4 16r2D 16rF1 16r39 16r75 16r35 16r28 16r46 16rC3 16r03 16r38 16rCD) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test6 digestor update: ( '12345678901234567890123456789012345678901234567890123456789012345678901234567890' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rD5 16r97 16r6F 16r79 16rD8 16r3D 16r3A 16r0D 16rC9 16r80 16r6C 16r3C 16r66 16rF3 16rEF 16rD8) asByteArray)).! ! !MD2Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:25'! testNullString digestor update: ( '' asByteArray ). digest _ digestor digest. self assert: (digest = (#(16r83 16r50 16rE5 16rA3 16rE2 16r4C 16r15 16r3D 16rF2 16r27 16r5C 16r9F 16r80 16r69 16r27 16r73) asByteArray)).! ! !MD4Test methodsFor: 'Running' stamp: 'msh 8/7/2003 23:15'! setUp digestor _ MD4 new.! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test1 digestor update: ( 'a' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rBD 16rE5 16r2C 16rB3 16r1D 16rE3 16r3E 16r46 16r24 16r5E 16r05 16rFB 16rDB 16rD6 16rFB 16r24) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test2 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rA4 16r48 16r01 16r7A 16rAF 16r21 16rD8 16r52 16r5F 16rC1 16r0A 16rE8 16r7A 16rA6 16r72 16r9D) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test3 digestor update: ( 'message digest' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rD9 16r13 16r0A 16r81 16r64 16r54 16r9F 16rE8 16r18 16r87 16r48 16r06 16rE1 16rC7 16r01 16r4B) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test4 digestor update: ( 'abcdefghijklmnopqrstuvwxyz' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rD7 16r9E 16r1C 16r30 16r8A 16rA5 16rBB 16rCD 16rEE 16rA8 16rED 16r63 16rDF 16r41 16r2D 16rA9) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test5 digestor update: ( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r04 16r3F 16r85 16r82 16rF2 16r41 16rDB 16r35 16r1C 16rE6 16r27 16rE1 16r53 16rE7 16rF0 16rE4) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test6 digestor update: ( '12345678901234567890123456789012345678901234567890123456789012345678901234567890' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rE3 16r3B 16r4D 16rDC 16r9C 16r38 16rF2 16r19 16r9C 16r3E 16r7B 16r16 16r4F 16rCC 16r05 16r36) asByteArray)).! ! !MD4Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:25'! testNullString digestor update: ( '' asByteArray ). digest _ digestor digest. self assert: (digest = (#(16r31 16rD6 16rCF 16rE0 16rD1 16r6A 16rE9 16r31 16rB7 16r3C 16r59 16rD7 16rE0 16rC0 16r89 16rC0) asByteArray)).! ! !MD5Test methodsFor: 'Running' stamp: 'msh 8/7/2003 23:15'! setUp digestor _ MD5 new.! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test1 digestor update: ( 'a' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r0C 16rC1 16r75 16rB9 16rC0 16rF1 16rB6 16rA8 16r31 16rC3 16r99 16rE2 16r69 16r77 16r26 16r61) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test2 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r90 16r01 16r50 16r98 16r3C 16rD2 16r4F 16rB0 16rD6 16r96 16r3F 16r7D 16r28 16rE1 16r7F 16r72) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test3 digestor update: ( 'message digest' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rF9 16r6B 16r69 16r7D 16r7C 16rB7 16r93 16r8D 16r52 16r5A 16r2F 16r31 16rAA 16rF1 16r61 16rD0) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test4 digestor update: ( 'abcdefghijklmnopqrstuvwxyz' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rC3 16rFC 16rD3 16rD7 16r61 16r92 16rE4 16r00 16r7D 16rFB 16r49 16r6C 16rCA 16r67 16rE1 16r3B) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test5 digestor update: ( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rD1 16r74 16rAB 16r98 16rD2 16r77 16rD9 16rF5 16rA5 16r61 16r1C 16r2C 16r9F 16r41 16r9D 16r9F) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test6 digestor update: ( '12345678901234567890123456789012345678901234567890123456789012345678901234567890' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r57 16rED 16rF4 16rA2 16r2B 16rE3 16rC9 16r55 16rAC 16r49 16rDA 16r2E 16r21 16r07 16rB6 16r7A) asByteArray)).! ! !MD5Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:25'! testNullString digestor update: ( '' asByteArray ). digest _ digestor digest. self assert: (digest = (#(16rD4 16r1D 16r8C 16rD9 16r8F 16r00 16rB2 16r04 16rE9 16r80 16r09 16r98 16rEC 16rF8 16r42 16r7E) asByteArray)).! ! !SHA1Test methodsFor: 'Running' stamp: 'msh 8/7/2003 23:15'! setUp digestor _ SHA1 new.! ! !SHA1Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test1 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rA9 16r99 16r3E 16r36 16r47 16r06 16r81 16r6A 16rBA 16r3E 16r25 16r71 16r78 16r50 16rC2 16r6C 16r9C 16rD0 16rD8 16r9D) asByteArray)).! ! !SHA1Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test2 digestor update: ( 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r84 16r98 16r3E 16r44 16r1C 16r3B 16rD2 16r6E 16rBA 16rAE 16r4A 16rA1 16rF9 16r51 16r29 16rE5 16rE5 16r46 16r70 16rF1) asByteArray)).! ! !SHA1Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test3 1 to: 100000 do: [ :i | digestor update: ( 'aaaaaaaaaa' asByteArray ).]. digest _ digestor digest. self assert:(digest = (#(16r34 16rAA 16r97 16r3C 16rD4 16rC4 16rDA 16rA4 16rF6 16r1E 16rEB 16r2B 16rDB 16rAD 16r27 16r31 16r65 16r34 16r01 16r6F) asByteArray)).! ! !SHA224Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:50'! test1 digestor update: ( 'abc' asByteArray ). digest := digestor digest. self assert:(digest = (#(16r23 16r09 16r7D 16r22 16r34 16r05 16rD8 16r22 16r86 16r42 16rA4 16r77 16rBD 16rA2 16r55 16rB3 16r2A 16rAD 16rBC 16rE4 16rBD 16rA0 16rB3 16rF7 16rE3 16r6C 16r9D 16rA7) asByteArray)).! ! !SHA224Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:52'! test2 digestor update: ( 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' asByteArray ). digest := digestor digest. self assert:(digest = (#(16r75 16r38 16r8B 16r16 16r51 16r27 16r76 16rCC 16r5D 16rBA 16r5D 16rA1 16rFD 16r89 16r01 16r50 16rB0 16rC6 16r45 16r5C 16rB4 16rF5 16r8B 16r19 16r52 16r52 16r25 16r25) asByteArray)).! ! !SHA224Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:53'! test3 1 to: 100000 do: [ :i | digestor update: ( 'aaaaaaaaaa' asByteArray ).]. digest := digestor digest. self assert:(digest = (#(16r20 16r79 16r46 16r55 16r98 16r0C 16r91 16rD8 16rBB 16rB4 16rC1 16rEA 16r97 16r61 16r8A 16r4B 16rF0 16r3F 16r42 16r58 16r19 16r48 16rB2 16rEE 16r4E 16rE7 16rAD 16r67) asByteArray)).! ! !SHA224Test methodsFor: 'running' stamp: 'msh 12/9/2005 00:50'! setUp digestor := SHA224 new.! ! !SHA256Test methodsFor: 'Running' stamp: 'msh 8/7/2003 23:15'! setUp digestor _ SHA256 new.! ! !SHA256Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test1 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16rBA 16r78 16r16 16rBF 16r8F 16r01 16rCF 16rEA 16r41 16r41 16r40 16rDE 16r5D 16rAE 16r22 16r23 16rB0 16r03 16r61 16rA3 16r96 16r17 16r7A 16r9C 16rB4 16r10 16rFF 16r61 16rF2 16r00 16r15 16rAD) asByteArray)).! ! !SHA256Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test2 digestor update: ( 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' asByteArray ). digest _ digestor digest. self assert:(digest = (#(16r24 16r8D 16r6A 16r61 16rD2 16r06 16r38 16rB8 16rE5 16rC0 16r26 16r93 16r0C 16r3E 16r60 16r39 16rA3 16r3C 16rE4 16r59 16r64 16rFF 16r21 16r67 16rF6 16rEC 16rED 16rD4 16r19 16rDB 16r06 16rC1) asByteArray)).! ! !SHA256Test methodsFor: 'Testing' stamp: 'msh 8/7/2003 23:15'! test3 1 to: 100000 do: [ :i | digestor update: ( 'aaaaaaaaaa' asByteArray ).]. digest _ digestor digest. self assert:(digest = (#(16rCD 16rC7 16r6E 16r5C 16r99 16r14 16rFB 16r92 16r81 16rA1 16rC7 16rE2 16r84 16rD7 16r3E 16r67 16rF1 16r80 16r9A 16r48 16rA4 16r97 16r20 16r0E 16r04 16r6D 16r39 16rCC 16rC7 16r11 16r2C 16rD0) asByteArray)).! ! !SHA384Test methodsFor: 'testing' stamp: 'msh 12/9/2005 04:53'! test1 digestor update: ( 'abc' asByteArray ). digest := digestor digest. self assert:(digest = (#(16rCB 16r00 16r75 16r3F 16r45 16rA3 16r5E 16r8B 16rB5 16rA0 16r3D 16r69 16r9A 16rC6 16r50 16r07 16r27 16r2C 16r32 16rAB 16r0E 16rDE 16rD1 16r63 16r1A 16r8B 16r60 16r5A 16r43 16rFF 16r5B 16rED 16r80 16r86 16r07 16r2B 16rA1 16rE7 16rCC 16r23 16r58 16rBA 16rEC 16rA1 16r34 16rC8 16r25 16rA7) asByteArray)).! ! !SHA384Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:44'! test2 digestor update: ( 'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu' asByteArray ). digest := digestor digest. self assert:(digest = (#(16r09 16r33 16r0C 16r33 16rF7 16r11 16r47 16rE8 16r3D 16r19 16r2F 16rC7 16r82 16rCD 16r1B 16r47 16r53 16r11 16r1B 16r17 16r3B 16r3B 16r05 16rD2 16r2F 16rA0 16r80 16r86 16rE3 16rB0 16rF7 16r12 16rFC 16rC7 16rC7 16r1A 16r55 16r7E 16r2D 16rB9 16r66 16rC3 16rE9 16rFA 16r91 16r74 16r60 16r39) asByteArray)).! ! !SHA384Test methodsFor: 'testing' stamp: 'msh 12/9/2005 04:57'! test3 1 to: 100000 do: [ :i | digestor update: ( 'aaaaaaaaaa' asByteArray ).]. digest := digestor digest. self assert:(digest = (#(16r9D 16r0E 16r18 16r09 16r71 16r64 16r74 16rCB 16r08 16r6E 16r83 16r4E 16r31 16r0A 16r4A 16r1C 16rED 16r14 16r9E 16r9C 16r00 16rF2 16r48 16r52 16r79 16r72 16rCE 16rC5 16r70 16r4C 16r2A 16r5B 16r07 16rB8 16rB3 16rDC 16r38 16rEC 16rC4 16rEB 16rAE 16r97 16rDD 16rD8 16r7F 16r3D 16r89 16r85) asByteArray)).! ! !SHA384Test methodsFor: 'running' stamp: 'msh 12/9/2005 00:39'! setUp digestor := SHA384 new.! ! !SHA512Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:33'! test1 digestor update: ( 'abc' asByteArray ). digest _ digestor digest. self assert: ( digest = ( #( 16rDD 16rAF 16r35 16rA1 16r93 16r61 16r7A 16rBA 16rCC 16r41 16r73 16r49 16rAE 16r20 16r41 16r31 16r12 16rE6 16rFA 16r4E 16r89 16rA9 16r7E 16rA2 16r0A 16r9E 16rEE 16rE6 16r4B 16r55 16rD3 16r9A 16r21 16r92 16r99 16r2A 16r27 16r4F 16rC1 16rA8 16r36 16rBA 16r3C 16r23 16rA3 16rFE 16rEB 16rBD 16r45 16r4D 16r44 16r23 16r64 16r3C 16rE8 16r0E 16r2A 16r9A 16rC9 16r4F 16rA5 16r4C 16rA4 16r9F) asByteArray ) ) .! ! !SHA512Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:36'! test2 digestor update: ( 'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu' asByteArray ). digest := digestor digest. self assert: ( digest = ( #( 16r8E 16r95 16r9B 16r75 16rDA 16rE3 16r13 16rDA 16r8C 16rF4 16rF7 16r28 16r14 16rFC 16r14 16r3F 16r8F 16r77 16r79 16rC6 16rEB 16r9F 16r7F 16rA1 16r72 16r99 16rAE 16rAD 16rB6 16r88 16r90 16r18 16r50 16r1D 16r28 16r9E 16r49 16r00 16rF7 16rE4 16r33 16r1B 16r99 16rDE 16rC4 16rB5 16r43 16r3A 16rC7 16rD3 16r29 16rEE 16rB6 16rDD 16r26 16r54 16r5E 16r96 16rE5 16r5B 16r87 16r4B 16rE9 16r09) asByteArray ) ) .! ! !SHA512Test methodsFor: 'testing' stamp: 'msh 12/9/2005 00:38'! test3 1 to: 100000 do: [ :i | digestor update: ( 'aaaaaaaaaa' asByteArray ).]. digest := digestor digest. self assert:(digest = (#(16rE7 16r18 16r48 16r3D 16r0C 16rE7 16r69 16r64 16r4E 16r2E 16r42 16rC7 16rBC 16r15 16rB4 16r63 16r8E 16r1F 16r98 16rB1 16r3B 16r20 16r44 16r28 16r56 16r32 16rA8 16r03 16rAF 16rA9 16r73 16rEB 16rDE 16r0F 16rF2 16r44 16r87 16r7E 16rA6 16r0A 16r4C 16rB0 16r43 16r2C 16rE5 16r77 16rC3 16r1B 16rEB 16r00 16r9C 16r5C 16r2C 16r49 16rAA 16r2E 16r4E 16rAD 16rB2 16r17 16rAD 16r8C 16rC0 16r9B) asByteArray)).! ! !SHA512Test methodsFor: 'running' stamp: 'msh 12/9/2005 00:28'! setUp digestor := SHA512 new.! !