From 2e6bd5369743f1b115eaf55c48a4455da1fc0437 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:24:48 +0200 Subject: [PATCH 01/36] Green tests by replacing calls on deprecated methods that got removed in Pharo 9 --- source/Cryptography/ByteArray.extension.st | 4 ++-- source/Cryptography/CryptoRC2Test.class.st | 16 ++++++------- .../CryptoRigndaelCBCTest.class.st | 24 +++++++++---------- source/Cryptography/SecureRandom.class.st | 4 ++-- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/source/Cryptography/ByteArray.extension.st b/source/Cryptography/ByteArray.extension.st index 1572589..7f8416b 100644 --- a/source/Cryptography/ByteArray.extension.st +++ b/source/Cryptography/ByteArray.extension.st @@ -111,7 +111,7 @@ ByteArray >> uint: bits at: anInteger [ 1 to: bytes do: [ :digitPosition | answer - digitAt: digitPosition + byteAt: digitPosition put: (self at: digitPosition + anInteger - 1) ]. ^answer normalize ] @@ -125,7 +125,7 @@ ByteArray >> uint: bits at: position put: anInteger [ [ :pos | self at: pos - put: (anInteger digitAt: pos-position+1) ]. + put: (anInteger byteAt: pos-position+1) ]. ^ anInteger ] diff --git a/source/Cryptography/CryptoRC2Test.class.st b/source/Cryptography/CryptoRC2Test.class.st index 555654e..79db192 100644 --- a/source/Cryptography/CryptoRC2Test.class.st +++ b/source/Cryptography/CryptoRC2Test.class.st @@ -27,7 +27,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = ebb773f9 93278eff " - self genericARC2TestKey: (ByteArray fromHexString: '0000000000000000') effectiveKeyLength: 63 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: 'ebb773f993278eff'). + self genericARC2TestKey: (ByteArray readHexFrom: '0000000000000000') effectiveKeyLength: 63 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: 'ebb773f993278eff'). "Key length (bytes) = 8 Effective key length (bits) = 64 @@ -35,7 +35,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = ffffffff ffffffff Ciphertext = 278b27e4 2e2f0d49" - self genericARC2TestKey: (ByteArray fromHexString: 'ffffffffffffffff') effectiveKeyLength: 64 plaintext: (ByteArray fromHexString: 'ffffffffffffffff') ciphertext: (ByteArray fromHexString: '278b27e42e2f0d49'). + self genericARC2TestKey: (ByteArray readHexFrom: 'ffffffffffffffff') effectiveKeyLength: 64 plaintext: (ByteArray readHexFrom: 'ffffffffffffffff') ciphertext: (ByteArray readHexFrom: '278b27e42e2f0d49'). "Key length (bytes) = 8 Effective key length (bits) = 64 @@ -43,7 +43,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 10000000 00000001 Ciphertext = 30649edf 9be7d2c2" - self genericARC2TestKey: (ByteArray fromHexString: '3000000000000000') effectiveKeyLength: 64 plaintext: (ByteArray fromHexString: '1000000000000001') ciphertext: (ByteArray fromHexString: '30649edf9be7d2c2'). + self genericARC2TestKey: (ByteArray readHexFrom: '3000000000000000') effectiveKeyLength: 64 plaintext: (ByteArray readHexFrom: '1000000000000001') ciphertext: (ByteArray readHexFrom: '30649edf9be7d2c2'). "Key length (bytes) = 1 Effective key length (bits) = 64 @@ -51,7 +51,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = 61a8a244 adacccf0" - self genericARC2TestKey: (ByteArray fromHexString: '88') effectiveKeyLength: 64 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: '61a8a244adacccf0'). + self genericARC2TestKey: (ByteArray readHexFrom: '88') effectiveKeyLength: 64 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: '61a8a244adacccf0'). "Key length (bytes) = 7 Effective key length (bits) = 64 @@ -59,7 +59,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = 6ccf4308 974c267f" - self genericARC2TestKey: (ByteArray fromHexString: '88bca90e90875a') effectiveKeyLength: 64 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: '6ccf4308974c267f'). + self genericARC2TestKey: (ByteArray readHexFrom: '88bca90e90875a') effectiveKeyLength: 64 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: '6ccf4308974c267f'). "Key length (bytes) = 16 Effective key length (bits) = 64 @@ -67,7 +67,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = 1a807d27 2bbe5db1" - self genericARC2TestKey: (ByteArray fromHexString: '88bca90e90875a7f0f79c384627bafb2') effectiveKeyLength: 64 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: '1a807d272bbe5db1'). + self genericARC2TestKey: (ByteArray readHexFrom: '88bca90e90875a7f0f79c384627bafb2') effectiveKeyLength: 64 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: '1a807d272bbe5db1'). "Key length (bytes) = 16 Effective key length (bits) = 128 @@ -75,7 +75,7 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = 2269552a b0f85ca6" - self genericARC2TestKey: (ByteArray fromHexString: '88bca90e90875a7f0f79c384627bafb2') effectiveKeyLength: 128 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: '2269552ab0f85ca6'). + self genericARC2TestKey: (ByteArray readHexFrom: '88bca90e90875a7f0f79c384627bafb2') effectiveKeyLength: 128 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: '2269552ab0f85ca6'). "Key length (bytes) = 33 Effective key length (bits) = 129 @@ -84,5 +84,5 @@ CryptoRC2Test >> testARC2 [ Plaintext = 00000000 00000000 Ciphertext = 5b78d3a4 3dfff1f1" - self genericARC2TestKey: (ByteArray fromHexString: '88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e') effectiveKeyLength: 129 plaintext: (ByteArray fromHexString: '0000000000000000') ciphertext: (ByteArray fromHexString: '5b78d3a43dfff1f1'). + self genericARC2TestKey: (ByteArray readHexFrom: '88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e') effectiveKeyLength: 129 plaintext: (ByteArray readHexFrom: '0000000000000000') ciphertext: (ByteArray readHexFrom: '5b78d3a43dfff1f1'). ] diff --git a/source/Cryptography/CryptoRigndaelCBCTest.class.st b/source/Cryptography/CryptoRigndaelCBCTest.class.st index f245e50..c75fc62 100644 --- a/source/Cryptography/CryptoRigndaelCBCTest.class.st +++ b/source/Cryptography/CryptoRigndaelCBCTest.class.st @@ -8,9 +8,9 @@ Class { CryptoRigndaelCBCTest >> testByteArrayFromHexString [ "this test requres that the cryptography core method fromHexString be loaded the main purpose of the method fromHexString is to ensure leading zeros are not chopped off and that small case letters in hex strings are allowed" - self assert: (ByteArray fromHexString: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = + self assert: (ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = '#[0 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]'. - self assert: (ByteArray fromHexString: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = + self assert: (ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = '#[0 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]'. ] @@ -24,8 +24,8 @@ CryptoRigndaelCBCTest >> testRFC3602Case1 [ Ciphertext: 0xe353779c1079aeb82708942dbe77181a" | result | ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray fromHexString: '06a9214036b8a15b512e03d534120006'))) - initialVector: (ByteArray fromHexString: '3dafba429d9eb430b422da802c9fac41')) + key: (ByteArray readHexFrom: '06a9214036b8a15b512e03d534120006'))) + initialVector: (ByteArray readHexFrom: '3dafba429d9eb430b422da802c9fac41')) encryptBlock: (result := 'Single block msg' asByteArray). self assert: result hex = 'e353779c1079aeb82708942dbe77181a' ] @@ -43,9 +43,9 @@ CryptoRigndaelCBCTest >> testRFC3602Case2 [ | result | result := ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray fromHexString: 'c286696d887c9aa0611bbb3e2025a45a'))) - initialVector: (ByteArray fromHexString: '562e17996d093d28ddb3ba695a2e6f58')) - encrypt: (result := ByteArray fromHexString: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'). + key: (ByteArray readHexFrom: 'c286696d887c9aa0611bbb3e2025a45a'))) + initialVector: (ByteArray readHexFrom: '562e17996d093d28ddb3ba695a2e6f58')) + encrypt: (result := ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'). self assert: result hex = 'd296cd94c2cccf8a3a863028b5e1dc0a7586602d253cfff91b8266bea6d61ab1bcfd81022202366bde6dd260a15841a1' ] @@ -62,8 +62,8 @@ CryptoRigndaelCBCTest >> testRFC3602Case3 [ | result | result := ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray fromHexString: '6c3ea0477630ce21a2ce334aa746c2cd'))) - initialVector: (ByteArray fromHexString: 'c782dc4c098c66cbd9cd27d825682c81')) + key: (ByteArray readHexFrom: '6c3ea0477630ce21a2ce334aa746c2cd'))) + initialVector: (ByteArray readHexFrom: 'c782dc4c098c66cbd9cd27d825682c81')) encrypt: 'This is a 48-byte message (exactly 3 AES blocks)' asByteArray. self assert: result hex = 'd0a02b3836451753d493665d33f0e8862dea54cdb293abc7506939276772f8d5021c19216bad525c8579695d83ba2684d248b3e0f2388c137102846eb06272ff' ] @@ -86,8 +86,8 @@ CryptoRigndaelCBCTest >> testRFC3602Case4 [ | result | result := ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray fromHexString: '56e47a38c5598974bc46903dba290349'))) - initialVector: (ByteArray fromHexString: '8ce82eefbea0da3c44699ed7db51b7d9')) - encrypt: (ByteArray fromHexString: 'a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'). + key: (ByteArray readHexFrom: '56e47a38c5598974bc46903dba290349'))) + initialVector: (ByteArray readHexFrom: '8ce82eefbea0da3c44699ed7db51b7d9')) + encrypt: (ByteArray readHexFrom: 'a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'). self assert: result hex = 'c30e32ffedc0774e6aff6af0869f71aa0f3af07a9a31a9c684db207eb0ef8e4e35907aa632c3ffdf868bb7b29d3d46ad83ce9f9a102ee99d49a53e87f4c3da5578b8d04731041aa2d9787ca4a4fa3eef' ] diff --git a/source/Cryptography/SecureRandom.class.st b/source/Cryptography/SecureRandom.class.st index c240e2a..97613ed 100644 --- a/source/Cryptography/SecureRandom.class.st +++ b/source/Cryptography/SecureRandom.class.st @@ -48,8 +48,8 @@ SecureRandom >> key: aByteArray [ | srcIndex | key := LargePositiveInteger new: (aByteArray size min: 64). srcIndex := 0. - key digitLength to: 1 by: -1 do: [:i | - key digitAt: i put: (aByteArray at: (srcIndex := srcIndex + 1)) asInteger]. + key bytesCount to: 1 by: -1 do: [:i | + key byteAt: i put: (aByteArray at: (srcIndex := srcIndex + 1)) asInteger]. key highBit > 512 ifTrue: [key := key bitShift: key highBit - 512]. key := key normalize. seed := 16rEFCDAB8998BADCFE10325476C3D2E1F067452301 "initial seed" From 102866c8ad5b69721f553cf9b6108bb786c622ee Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:30:05 +0200 Subject: [PATCH 02/36] Replacing calls on deprecated methods that got removed in Pharo 9 --- source/ASN1/ASN1IntegerType.class.st | 18 +++++++++--------- source/ASN1/ASN1Stream.class.st | 8 ++++---- source/Cryptography/Integer.extension.st | 10 +++++----- .../LargePositiveInteger.extension.st | 2 +- source/Cryptography/RSAPrivateKey.class.st | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/source/ASN1/ASN1IntegerType.class.st b/source/ASN1/ASN1IntegerType.class.st index 93aee74..c877e1f 100644 --- a/source/ASN1/ASN1IntegerType.class.st +++ b/source/ASN1/ASN1IntegerType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1IntegerType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Types' } { #category : #decoding } @@ -10,8 +10,8 @@ ASN1IntegerType >> decodeValueWithDERStream: derStream length: length [ | integer | integer := Integer new: length neg: false. length to: 1 by: -1 do: [:index | - integer digitAt: index put: derStream next]. - ((integer digitAt: length) allMask: 16r80) + integer byteAt: index put: derStream next]. + ((integer byteAt: length) allMask: 16r80) ifTrue: [^integer twosComplement negated normalize] ifFalse: [^integer normalize]. @@ -30,8 +30,8 @@ ASN1IntegerType >> encodeValue: anObject withDERStream: derStream [ integer := integer negated twosComplement. (integer lastDigit noMask: 16r80) ifTrue: [derStream nextPut: 16rFF]]. - integer digitLength to: 1 by: -1 do: [:digitIndex | - derStream nextPut: (integer digitAt: digitIndex)]. + integer bytesCount to: 1 by: -1 do: [:digitIndex | + derStream nextPut: (integer byteAt: digitIndex)]. ] @@ -47,13 +47,13 @@ ASN1IntegerType >> sizeOfObject: anObject [ | twosComplement | ^ anObject positive ifTrue: [(anObject lastDigit allMask: 16r80) - ifTrue: [anObject digitLength + 1] - ifFalse: [anObject digitLength]] + ifTrue: [anObject bytesCount + 1] + ifFalse: [anObject bytesCount]] ifFalse: [ twosComplement := anObject negated twosComplement. (twosComplement lastDigit noMask: 16r80) - ifTrue: [twosComplement digitLength+1] - ifFalse: [twosComplement digitLength]]. + ifTrue: [twosComplement bytesCount + 1] + ifFalse: [twosComplement bytesCount]] ] diff --git a/source/ASN1/ASN1Stream.class.st b/source/ASN1/ASN1Stream.class.st index 8dfd09a..39283a3 100644 --- a/source/ASN1/ASN1Stream.class.st +++ b/source/ASN1/ASN1Stream.class.st @@ -8,7 +8,7 @@ Class { #classVars : [ 'TagToTypeDispatchTable' ], - #category : 'ASN1' + #category : #ASN1 } { #category : #decoding } @@ -221,9 +221,9 @@ ASN1Stream >> nextPutLength: size [ size <= 127 ifTrue: [self nextPut: size] ifFalse: [ - self nextPut: ((size digitLength) bitOr: 16r80). - size digitLength to: 1 by: -1 do: [:digitIndex | - self nextPut: (size digitAt: digitIndex)]] + self nextPut: ((size bytesCount) bitOr: 16r80). + size bytesCount to: 1 by: -1 do: [:digitIndex | + self nextPut: (size byteAt: digitIndex)]] ] diff --git a/source/Cryptography/Integer.extension.st b/source/Cryptography/Integer.extension.st index 1ba0601..cb03434 100644 --- a/source/Cryptography/Integer.extension.st +++ b/source/Cryptography/Integer.extension.st @@ -3,7 +3,7 @@ Extension { #name : #Integer } { #category : #'*cryptography-core' } Integer >> areAllBitsSet [ - ^self digitLength ~= (self + 1) digitLength + ^self bytesCount ~= (self + 1) bytesCount ] { #category : #'*cryptography-core' } @@ -70,12 +70,12 @@ Integer >> toEBase64String [ { #category : #'*cryptography-core' } Integer >> twosComplement [ | complement digit length | - length := self digitLength + 1. + length := self bytesCount + 1. complement := Integer new: length neg: false. 1 to: length-1 do: [:index | - digit := self digitAt: index. + digit := self byteAt: index. digit := digit bitXor: 16rFF. "flip bits without 2's complement logic in bitInvert" - complement digitAt: index put: digit]. - self areAllBitsSet ifTrue: [complement digitAt: length put: 16rFF]. + complement byteAt: index put: digit]. + self areAllBitsSet ifTrue: [complement byteAt: length put: 16rFF]. ^complement + 1 ] diff --git a/source/Cryptography/LargePositiveInteger.extension.st b/source/Cryptography/LargePositiveInteger.extension.st index 0102eba..8cda07e 100644 --- a/source/Cryptography/LargePositiveInteger.extension.st +++ b/source/Cryptography/LargePositiveInteger.extension.st @@ -6,6 +6,6 @@ LargePositiveInteger >> destroy [ 1 to: self size do: [ : x | self - digitAt: x + byteAt: x put: 0 ] ] diff --git a/source/Cryptography/RSAPrivateKey.class.st b/source/Cryptography/RSAPrivateKey.class.st index 1449ff0..b5bd057 100644 --- a/source/Cryptography/RSAPrivateKey.class.st +++ b/source/Cryptography/RSAPrivateKey.class.st @@ -101,7 +101,7 @@ RSAPrivateKey >> v15SignMessageHash: encodedMsg [ | int emLen | - emLen := (p * q) digitLength -1. + emLen := (p * q) bytesCount -1. int := LargePositiveInteger basicNew: emLen. " Our LargeIntegers are little endian, so we have to reverse the bytes" From eaca35ebda0c830fdc2d23a770a02a799a4eaa49 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:38:10 +0200 Subject: [PATCH 03/36] use #base64Decoded now in Pharo 9 --- source/ASN1-Readers-Tests/CryptoRSATest.class.st | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/ASN1-Readers-Tests/CryptoRSATest.class.st b/source/ASN1-Readers-Tests/CryptoRSATest.class.st index ab9a46f..46e5c70 100644 --- a/source/ASN1-Readers-Tests/CryptoRSATest.class.st +++ b/source/ASN1-Readers-Tests/CryptoRSATest.class.st @@ -5,7 +5,7 @@ Class { 'privateKey', 'publicKey' ], - #category : 'ASN1-Readers-Tests' + #category : #'ASN1-Readers-Tests' } { #category : #RSA } @@ -13,9 +13,7 @@ CryptoRSATest >> derKeys [ | key64 | key64 := self encodedBase64Keys. - - ^(Base64MimeConverter mimeDecodeToBytes: key64 readStream ) contents. - + ^key64 base64Decoded ] { #category : #RSA } From c1770c86de53b5a035d8dc8f169ecbfb5632d490 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:43:42 +0200 Subject: [PATCH 04/36] Rename "ASN1" package into "ASN1-Core" package --- .../{ASN1 => ASN1-Core}/ASN1AbstractString.class.st | 2 +- .../ASN1AnyDefinedByType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1AnyType.class.st | 2 +- .../ASN1AssignmentSubType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1BMPString.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1BMPStringType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1BasicType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1BitString.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1BitStringType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1BooleanType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1ByteArrayType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1ChoiceElement.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1ChoiceType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1ConstructedType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1DefinitionModel.class.st | 2 +- .../ASN1EndOfIndefiniteLengthMarker.class.st | 2 +- .../ASN1EndOfIndefiniteLengthType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Entity.class.st | 2 +- .../ASN1ExplicitContextValue.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1ExplicitSubType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1FieldDefinition.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1GeneralString.class.st | 2 +- .../ASN1GeneralStringType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1IA5String.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1IA5StringType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1ImplicitSubType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1IntegerType.class.st | 2 +- .../ASN1MappedSequenceType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1MappedSetType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1MappedType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1MappingSubType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Module.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Null.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1NullType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1ObjectId.class.st | 2 +- .../ASN1ObjectIdentifierType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1OctetsType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Pragma.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1PragmaAccessor.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1PragmaMutator.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1PrintableString.class.st | 2 +- .../ASN1PrintableStringType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1SequenceOfType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1SequenceType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1SetOfType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1SetType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Stream.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1StringType.class.st | 2 +- .../ASN1StructureElement.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1StructuredType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1SubType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1TeletexString.class.st | 2 +- .../ASN1TeletexStringType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Type.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1TypeReference.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1UTCTimeType.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1UniversalString.class.st | 2 +- .../ASN1UniversalStringType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1UnmappedType.class.st | 2 +- .../ASN1UnstructuredType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1Value.class.st | 2 +- .../{ASN1 => ASN1-Core}/ASN1VisibleString.class.st | 2 +- .../ASN1VisibleStringType.class.st | 2 +- .../ASN1WrappedStringType.class.st | 2 +- .../ASN1WrapperConstructedType.class.st | 2 +- .../ASN1WrapperPrimitiveType.class.st | 2 +- source/{ASN1 => ASN1-Core}/ASN1WrapperType.class.st | 2 +- source/{ASN1 => ASN1-Core}/Boolean.extension.st | 4 ++-- source/{ASN1 => ASN1-Core}/ByteArray.extension.st | 2 +- source/{ASN1 => ASN1-Core}/DSAPublicKey.extension.st | 6 +++--- source/{ASN1 => ASN1-Core}/DateAndTime.extension.st | 4 ++-- source/{ASN1 => ASN1-Core}/HashFunction.extension.st | 10 +++++----- source/{ASN1 => ASN1-Core}/Integer.extension.st | 6 +++--- source/{ASN1 => ASN1-Core}/OrderedSet.class.st | 2 +- source/{ASN1 => ASN1-Core}/ReadStream.extension.st | 2 +- .../SequenceableCollection.extension.st | 4 ++-- source/{ASN1 => ASN1-Core}/Set.extension.st | 4 ++-- source/{ASN1 => ASN1-Core}/String.extension.st | 8 ++++---- .../{ASN1 => ASN1-Core}/UndefinedObject.extension.st | 4 ++-- source/ASN1-Core/package.st | 1 + source/ASN1/package.st | 1 - .../BaselineOfCryptography.class.st | 12 ++++++------ 82 files changed, 102 insertions(+), 102 deletions(-) rename source/{ASN1 => ASN1-Core}/ASN1AbstractString.class.st (96%) rename source/{ASN1 => ASN1-Core}/ASN1AnyDefinedByType.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1AnyType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1AssignmentSubType.class.st (93%) rename source/{ASN1 => ASN1-Core}/ASN1BMPString.class.st (79%) rename source/{ASN1 => ASN1-Core}/ASN1BMPStringType.class.st (91%) rename source/{ASN1 => ASN1-Core}/ASN1BasicType.class.st (65%) rename source/{ASN1 => ASN1-Core}/ASN1BitString.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1BitStringType.class.st (96%) rename source/{ASN1 => ASN1-Core}/ASN1BooleanType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1ByteArrayType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1ChoiceElement.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1ChoiceType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1ConstructedType.class.st (94%) rename source/{ASN1 => ASN1-Core}/ASN1DefinitionModel.class.st (99%) rename source/{ASN1 => ASN1-Core}/ASN1EndOfIndefiniteLengthMarker.class.st (70%) rename source/{ASN1 => ASN1-Core}/ASN1EndOfIndefiniteLengthType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1Entity.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1ExplicitContextValue.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1ExplicitSubType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1FieldDefinition.class.st (99%) rename source/{ASN1 => ASN1-Core}/ASN1GeneralString.class.st (81%) rename source/{ASN1 => ASN1-Core}/ASN1GeneralStringType.class.st (91%) rename source/{ASN1 => ASN1-Core}/ASN1IA5String.class.st (80%) rename source/{ASN1 => ASN1-Core}/ASN1IA5StringType.class.st (91%) rename source/{ASN1 => ASN1-Core}/ASN1ImplicitSubType.class.st (96%) rename source/{ASN1 => ASN1-Core}/ASN1IntegerType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1MappedSequenceType.class.st (81%) rename source/{ASN1 => ASN1-Core}/ASN1MappedSetType.class.st (80%) rename source/{ASN1 => ASN1-Core}/ASN1MappedType.class.st (99%) rename source/{ASN1 => ASN1-Core}/ASN1MappingSubType.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1Module.class.st (99%) rename source/{ASN1 => ASN1-Core}/ASN1Null.class.st (85%) rename source/{ASN1 => ASN1-Core}/ASN1NullType.class.st (93%) rename source/{ASN1 => ASN1-Core}/ASN1ObjectId.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1ObjectIdentifierType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1OctetsType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1Pragma.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1PragmaAccessor.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1PragmaMutator.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1PrintableString.class.st (82%) rename source/{ASN1 => ASN1-Core}/ASN1PrintableStringType.class.st (92%) rename source/{ASN1 => ASN1-Core}/ASN1SequenceOfType.class.st (87%) rename source/{ASN1 => ASN1-Core}/ASN1SequenceType.class.st (87%) rename source/{ASN1 => ASN1-Core}/ASN1SetOfType.class.st (86%) rename source/{ASN1 => ASN1-Core}/ASN1SetType.class.st (86%) rename source/{ASN1 => ASN1-Core}/ASN1Stream.class.st (99%) rename source/{ASN1 => ASN1-Core}/ASN1StringType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1StructureElement.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1StructuredType.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1SubType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1TeletexString.class.st (81%) rename source/{ASN1 => ASN1-Core}/ASN1TeletexStringType.class.st (91%) rename source/{ASN1 => ASN1-Core}/ASN1Type.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1TypeReference.class.st (67%) rename source/{ASN1 => ASN1-Core}/ASN1UTCTimeType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1UniversalString.class.st (82%) rename source/{ASN1 => ASN1-Core}/ASN1UniversalStringType.class.st (92%) rename source/{ASN1 => ASN1-Core}/ASN1UnmappedType.class.st (96%) rename source/{ASN1 => ASN1-Core}/ASN1UnstructuredType.class.st (97%) rename source/{ASN1 => ASN1-Core}/ASN1Value.class.st (81%) rename source/{ASN1 => ASN1-Core}/ASN1VisibleString.class.st (81%) rename source/{ASN1 => ASN1-Core}/ASN1VisibleStringType.class.st (91%) rename source/{ASN1 => ASN1-Core}/ASN1WrappedStringType.class.st (95%) rename source/{ASN1 => ASN1-Core}/ASN1WrapperConstructedType.class.st (98%) rename source/{ASN1 => ASN1-Core}/ASN1WrapperPrimitiveType.class.st (94%) rename source/{ASN1 => ASN1-Core}/ASN1WrapperType.class.st (84%) rename source/{ASN1 => ASN1-Core}/Boolean.extension.st (66%) rename source/{ASN1 => ASN1-Core}/ByteArray.extension.st (68%) rename source/{ASN1 => ASN1-Core}/DSAPublicKey.extension.st (90%) rename source/{ASN1 => ASN1-Core}/DateAndTime.extension.st (68%) rename source/{ASN1 => ASN1-Core}/HashFunction.extension.st (79%) rename source/{ASN1 => ASN1-Core}/Integer.extension.st (86%) rename source/{ASN1 => ASN1-Core}/OrderedSet.class.st (79%) rename source/{ASN1 => ASN1-Core}/ReadStream.extension.st (97%) rename source/{ASN1 => ASN1-Core}/SequenceableCollection.extension.st (73%) rename source/{ASN1 => ASN1-Core}/Set.extension.st (64%) rename source/{ASN1 => ASN1-Core}/String.extension.st (93%) rename source/{ASN1 => ASN1-Core}/UndefinedObject.extension.st (70%) create mode 100644 source/ASN1-Core/package.st delete mode 100644 source/ASN1/package.st diff --git a/source/ASN1/ASN1AbstractString.class.st b/source/ASN1-Core/ASN1AbstractString.class.st similarity index 96% rename from source/ASN1/ASN1AbstractString.class.st rename to source/ASN1-Core/ASN1AbstractString.class.st index b829a6f..71377ba 100644 --- a/source/ASN1/ASN1AbstractString.class.st +++ b/source/ASN1-Core/ASN1AbstractString.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'string' ], - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'as yet unclassified' } diff --git a/source/ASN1/ASN1AnyDefinedByType.class.st b/source/ASN1-Core/ASN1AnyDefinedByType.class.st similarity index 98% rename from source/ASN1/ASN1AnyDefinedByType.class.st rename to source/ASN1-Core/ASN1AnyDefinedByType.class.st index 8f3ed5e..2199d6b 100644 --- a/source/ASN1/ASN1AnyDefinedByType.class.st +++ b/source/ASN1-Core/ASN1AnyDefinedByType.class.st @@ -6,7 +6,7 @@ Class { 'typeMap', 'defaultType' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1AnyType.class.st b/source/ASN1-Core/ASN1AnyType.class.st similarity index 95% rename from source/ASN1/ASN1AnyType.class.st rename to source/ASN1-Core/ASN1AnyType.class.st index c19637b..40b1d0e 100644 --- a/source/ASN1/ASN1AnyType.class.st +++ b/source/ASN1-Core/ASN1AnyType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1AnyType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1AssignmentSubType.class.st b/source/ASN1-Core/ASN1AssignmentSubType.class.st similarity index 93% rename from source/ASN1/ASN1AssignmentSubType.class.st rename to source/ASN1-Core/ASN1AssignmentSubType.class.st index 694ae89..dbb1f75 100644 --- a/source/ASN1/ASN1AssignmentSubType.class.st +++ b/source/ASN1-Core/ASN1AssignmentSubType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1AssignmentSubType, #superclass : #ASN1SubType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1BMPString.class.st b/source/ASN1-Core/ASN1BMPString.class.st similarity index 79% rename from source/ASN1/ASN1BMPString.class.st rename to source/ASN1-Core/ASN1BMPString.class.st index 11cef66..b28dba9 100644 --- a/source/ASN1/ASN1BMPString.class.st +++ b/source/ASN1-Core/ASN1BMPString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1BMPString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #accessing } diff --git a/source/ASN1/ASN1BMPStringType.class.st b/source/ASN1-Core/ASN1BMPStringType.class.st similarity index 91% rename from source/ASN1/ASN1BMPStringType.class.st rename to source/ASN1-Core/ASN1BMPStringType.class.st index 9ad7bac..ad0bf98 100644 --- a/source/ASN1/ASN1BMPStringType.class.st +++ b/source/ASN1-Core/ASN1BMPStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1BMPStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1BasicType.class.st b/source/ASN1-Core/ASN1BasicType.class.st similarity index 65% rename from source/ASN1/ASN1BasicType.class.st rename to source/ASN1-Core/ASN1BasicType.class.st index c33a692..989b30f 100644 --- a/source/ASN1/ASN1BasicType.class.st +++ b/source/ASN1-Core/ASN1BasicType.class.st @@ -1,5 +1,5 @@ Class { #name : #ASN1BasicType, #superclass : #ASN1Type, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } diff --git a/source/ASN1/ASN1BitString.class.st b/source/ASN1-Core/ASN1BitString.class.st similarity index 97% rename from source/ASN1/ASN1BitString.class.st rename to source/ASN1-Core/ASN1BitString.class.st index 0fa3371..2aeb4ed 100644 --- a/source/ASN1/ASN1BitString.class.st +++ b/source/ASN1-Core/ASN1BitString.class.st @@ -5,7 +5,7 @@ Class { 'bytes', 'bitsPadding' ], - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #asn } diff --git a/source/ASN1/ASN1BitStringType.class.st b/source/ASN1-Core/ASN1BitStringType.class.st similarity index 96% rename from source/ASN1/ASN1BitStringType.class.st rename to source/ASN1-Core/ASN1BitStringType.class.st index 204b97d..051ef4f 100644 --- a/source/ASN1/ASN1BitStringType.class.st +++ b/source/ASN1-Core/ASN1BitStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1BitStringType, #superclass : #ASN1OctetsType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1BooleanType.class.st b/source/ASN1-Core/ASN1BooleanType.class.st similarity index 95% rename from source/ASN1/ASN1BooleanType.class.st rename to source/ASN1-Core/ASN1BooleanType.class.st index 0002290..6928caf 100644 --- a/source/ASN1/ASN1BooleanType.class.st +++ b/source/ASN1-Core/ASN1BooleanType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1BooleanType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1ByteArrayType.class.st b/source/ASN1-Core/ASN1ByteArrayType.class.st similarity index 95% rename from source/ASN1/ASN1ByteArrayType.class.st rename to source/ASN1-Core/ASN1ByteArrayType.class.st index f6baef1..b3b7999 100644 --- a/source/ASN1/ASN1ByteArrayType.class.st +++ b/source/ASN1-Core/ASN1ByteArrayType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ByteArrayType, #superclass : #ASN1OctetsType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1ChoiceElement.class.st b/source/ASN1-Core/ASN1ChoiceElement.class.st similarity index 98% rename from source/ASN1/ASN1ChoiceElement.class.st rename to source/ASN1-Core/ASN1ChoiceElement.class.st index 6c9de6a..877e8fc 100644 --- a/source/ASN1/ASN1ChoiceElement.class.st +++ b/source/ASN1-Core/ASN1ChoiceElement.class.st @@ -6,7 +6,7 @@ Class { 'symbol', 'type' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #private } diff --git a/source/ASN1/ASN1ChoiceType.class.st b/source/ASN1-Core/ASN1ChoiceType.class.st similarity index 97% rename from source/ASN1/ASN1ChoiceType.class.st rename to source/ASN1-Core/ASN1ChoiceType.class.st index 238b882..38f3370 100644 --- a/source/ASN1/ASN1ChoiceType.class.st +++ b/source/ASN1-Core/ASN1ChoiceType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ChoiceType, #superclass : #ASN1StructuredType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1ConstructedType.class.st b/source/ASN1-Core/ASN1ConstructedType.class.st similarity index 94% rename from source/ASN1/ASN1ConstructedType.class.st rename to source/ASN1-Core/ASN1ConstructedType.class.st index d5f1d2d..ed1dd82 100644 --- a/source/ASN1/ASN1ConstructedType.class.st +++ b/source/ASN1-Core/ASN1ConstructedType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ConstructedType, #superclass : #ASN1Type, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #encoding } diff --git a/source/ASN1/ASN1DefinitionModel.class.st b/source/ASN1-Core/ASN1DefinitionModel.class.st similarity index 99% rename from source/ASN1/ASN1DefinitionModel.class.st rename to source/ASN1-Core/ASN1DefinitionModel.class.st index ec55e3c..5764342 100644 --- a/source/ASN1/ASN1DefinitionModel.class.st +++ b/source/ASN1-Core/ASN1DefinitionModel.class.st @@ -25,7 +25,7 @@ Class { 'currentAccessor', 'fieldStack' ], - #category : 'ASN1-DefinitionModel' + #category : #'ASN1-Core-DefinitionModel' } { #category : #LICENSE } diff --git a/source/ASN1/ASN1EndOfIndefiniteLengthMarker.class.st b/source/ASN1-Core/ASN1EndOfIndefiniteLengthMarker.class.st similarity index 70% rename from source/ASN1/ASN1EndOfIndefiniteLengthMarker.class.st rename to source/ASN1-Core/ASN1EndOfIndefiniteLengthMarker.class.st index 2b0362a..0a23528 100644 --- a/source/ASN1/ASN1EndOfIndefiniteLengthMarker.class.st +++ b/source/ASN1-Core/ASN1EndOfIndefiniteLengthMarker.class.st @@ -1,5 +1,5 @@ Class { #name : #ASN1EndOfIndefiniteLengthMarker, #superclass : #Object, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } diff --git a/source/ASN1/ASN1EndOfIndefiniteLengthType.class.st b/source/ASN1-Core/ASN1EndOfIndefiniteLengthType.class.st similarity index 95% rename from source/ASN1/ASN1EndOfIndefiniteLengthType.class.st rename to source/ASN1-Core/ASN1EndOfIndefiniteLengthType.class.st index 51f9d32..887eeb0 100644 --- a/source/ASN1/ASN1EndOfIndefiniteLengthType.class.st +++ b/source/ASN1-Core/ASN1EndOfIndefiniteLengthType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1EndOfIndefiniteLengthType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1Entity.class.st b/source/ASN1-Core/ASN1Entity.class.st similarity index 97% rename from source/ASN1/ASN1Entity.class.st rename to source/ASN1-Core/ASN1Entity.class.st index 6d62eeb..f5794ea 100644 --- a/source/ASN1/ASN1Entity.class.st +++ b/source/ASN1-Core/ASN1Entity.class.st @@ -5,7 +5,7 @@ Class { 'symbol', 'module' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #'instance creation' } diff --git a/source/ASN1/ASN1ExplicitContextValue.class.st b/source/ASN1-Core/ASN1ExplicitContextValue.class.st similarity index 98% rename from source/ASN1/ASN1ExplicitContextValue.class.st rename to source/ASN1-Core/ASN1ExplicitContextValue.class.st index 22b2fb9..4eb892c 100644 --- a/source/ASN1/ASN1ExplicitContextValue.class.st +++ b/source/ASN1-Core/ASN1ExplicitContextValue.class.st @@ -6,7 +6,7 @@ Class { 'tagValue', 'tagIsPrimitive' ], - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #LICENSE } diff --git a/source/ASN1/ASN1ExplicitSubType.class.st b/source/ASN1-Core/ASN1ExplicitSubType.class.st similarity index 97% rename from source/ASN1/ASN1ExplicitSubType.class.st rename to source/ASN1-Core/ASN1ExplicitSubType.class.st index a93aaff..baff595 100644 --- a/source/ASN1/ASN1ExplicitSubType.class.st +++ b/source/ASN1-Core/ASN1ExplicitSubType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ExplicitSubType, #superclass : #ASN1SubType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1FieldDefinition.class.st b/source/ASN1-Core/ASN1FieldDefinition.class.st similarity index 99% rename from source/ASN1/ASN1FieldDefinition.class.st rename to source/ASN1-Core/ASN1FieldDefinition.class.st index 05e31bc..226a8d8 100644 --- a/source/ASN1/ASN1FieldDefinition.class.st +++ b/source/ASN1-Core/ASN1FieldDefinition.class.st @@ -11,7 +11,7 @@ Class { 'isExplicit', 'isOptional' ], - #category : 'ASN1-DefinitionModel' + #category : #'ASN1-Core-DefinitionModel' } { #category : #'instance creation' } diff --git a/source/ASN1/ASN1GeneralString.class.st b/source/ASN1-Core/ASN1GeneralString.class.st similarity index 81% rename from source/ASN1/ASN1GeneralString.class.st rename to source/ASN1-Core/ASN1GeneralString.class.st index 3d23581..db6a62f 100644 --- a/source/ASN1/ASN1GeneralString.class.st +++ b/source/ASN1-Core/ASN1GeneralString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1GeneralString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1GeneralStringType.class.st b/source/ASN1-Core/ASN1GeneralStringType.class.st similarity index 91% rename from source/ASN1/ASN1GeneralStringType.class.st rename to source/ASN1-Core/ASN1GeneralStringType.class.st index 5fb5ba8..5b9b8f7 100644 --- a/source/ASN1/ASN1GeneralStringType.class.st +++ b/source/ASN1-Core/ASN1GeneralStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1GeneralStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1IA5String.class.st b/source/ASN1-Core/ASN1IA5String.class.st similarity index 80% rename from source/ASN1/ASN1IA5String.class.st rename to source/ASN1-Core/ASN1IA5String.class.st index e7dec1d..7d739a7 100644 --- a/source/ASN1/ASN1IA5String.class.st +++ b/source/ASN1-Core/ASN1IA5String.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1IA5String, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #accessing } diff --git a/source/ASN1/ASN1IA5StringType.class.st b/source/ASN1-Core/ASN1IA5StringType.class.st similarity index 91% rename from source/ASN1/ASN1IA5StringType.class.st rename to source/ASN1-Core/ASN1IA5StringType.class.st index bdaefaf..6c0b5d1 100644 --- a/source/ASN1/ASN1IA5StringType.class.st +++ b/source/ASN1-Core/ASN1IA5StringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1IA5StringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1ImplicitSubType.class.st b/source/ASN1-Core/ASN1ImplicitSubType.class.st similarity index 96% rename from source/ASN1/ASN1ImplicitSubType.class.st rename to source/ASN1-Core/ASN1ImplicitSubType.class.st index c5b785d..c38be30 100644 --- a/source/ASN1/ASN1ImplicitSubType.class.st +++ b/source/ASN1-Core/ASN1ImplicitSubType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ImplicitSubType, #superclass : #ASN1SubType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1IntegerType.class.st b/source/ASN1-Core/ASN1IntegerType.class.st similarity index 97% rename from source/ASN1/ASN1IntegerType.class.st rename to source/ASN1-Core/ASN1IntegerType.class.st index c877e1f..f6cefbe 100644 --- a/source/ASN1/ASN1IntegerType.class.st +++ b/source/ASN1-Core/ASN1IntegerType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1IntegerType, #superclass : #ASN1BasicType, - #category : #'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1MappedSequenceType.class.st b/source/ASN1-Core/ASN1MappedSequenceType.class.st similarity index 81% rename from source/ASN1/ASN1MappedSequenceType.class.st rename to source/ASN1-Core/ASN1MappedSequenceType.class.st index 3037591..c6037a9 100644 --- a/source/ASN1/ASN1MappedSequenceType.class.st +++ b/source/ASN1-Core/ASN1MappedSequenceType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1MappedSequenceType, #superclass : #ASN1MappedType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1MappedSetType.class.st b/source/ASN1-Core/ASN1MappedSetType.class.st similarity index 80% rename from source/ASN1/ASN1MappedSetType.class.st rename to source/ASN1-Core/ASN1MappedSetType.class.st index fe424a9..f1cfad1 100644 --- a/source/ASN1/ASN1MappedSetType.class.st +++ b/source/ASN1-Core/ASN1MappedSetType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1MappedSetType, #superclass : #ASN1MappedType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1MappedType.class.st b/source/ASN1-Core/ASN1MappedType.class.st similarity index 99% rename from source/ASN1/ASN1MappedType.class.st rename to source/ASN1-Core/ASN1MappedType.class.st index c90e0aa..c85c9a9 100644 --- a/source/ASN1/ASN1MappedType.class.st +++ b/source/ASN1-Core/ASN1MappedType.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'mapping' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #'accessing - element construction' } diff --git a/source/ASN1/ASN1MappingSubType.class.st b/source/ASN1-Core/ASN1MappingSubType.class.st similarity index 98% rename from source/ASN1/ASN1MappingSubType.class.st rename to source/ASN1-Core/ASN1MappingSubType.class.st index bb9ebf0..fbd143a 100644 --- a/source/ASN1/ASN1MappingSubType.class.st +++ b/source/ASN1-Core/ASN1MappingSubType.class.st @@ -5,7 +5,7 @@ Class { 'mapping', 'mappingSymbol' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1Module.class.st b/source/ASN1-Core/ASN1Module.class.st similarity index 99% rename from source/ASN1/ASN1Module.class.st rename to source/ASN1-Core/ASN1Module.class.st index f783c5b..259891a 100644 --- a/source/ASN1/ASN1Module.class.st +++ b/source/ASN1-Core/ASN1Module.class.st @@ -9,7 +9,7 @@ Class { #classVars : [ 'Modules' ], - #category : 'ASN1' + #category : #'ASN1-Core-ASN1-Core' } { #category : #'class initialization' } diff --git a/source/ASN1/ASN1Null.class.st b/source/ASN1-Core/ASN1Null.class.st similarity index 85% rename from source/ASN1/ASN1Null.class.st rename to source/ASN1-Core/ASN1Null.class.st index d0d7bb6..7caf4c9 100644 --- a/source/ASN1/ASN1Null.class.st +++ b/source/ASN1-Core/ASN1Null.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1Null, #superclass : #ASN1Value, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'as yet unclassified' } diff --git a/source/ASN1/ASN1NullType.class.st b/source/ASN1-Core/ASN1NullType.class.st similarity index 93% rename from source/ASN1/ASN1NullType.class.st rename to source/ASN1-Core/ASN1NullType.class.st index d7cfb5a..55c6ea9 100644 --- a/source/ASN1/ASN1NullType.class.st +++ b/source/ASN1-Core/ASN1NullType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1NullType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1ObjectId.class.st b/source/ASN1-Core/ASN1ObjectId.class.st similarity index 98% rename from source/ASN1/ASN1ObjectId.class.st rename to source/ASN1-Core/ASN1ObjectId.class.st index 4130552..ad30cfd 100644 --- a/source/ASN1/ASN1ObjectId.class.st +++ b/source/ASN1-Core/ASN1ObjectId.class.st @@ -5,7 +5,7 @@ Class { 'oid', 'description' ], - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #asn } diff --git a/source/ASN1/ASN1ObjectIdentifierType.class.st b/source/ASN1-Core/ASN1ObjectIdentifierType.class.st similarity index 97% rename from source/ASN1/ASN1ObjectIdentifierType.class.st rename to source/ASN1-Core/ASN1ObjectIdentifierType.class.st index c037a49..47a9899 100644 --- a/source/ASN1/ASN1ObjectIdentifierType.class.st +++ b/source/ASN1-Core/ASN1ObjectIdentifierType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1ObjectIdentifierType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1OctetsType.class.st b/source/ASN1-Core/ASN1OctetsType.class.st similarity index 97% rename from source/ASN1/ASN1OctetsType.class.st rename to source/ASN1-Core/ASN1OctetsType.class.st index bc1b376..64bbc07 100644 --- a/source/ASN1/ASN1OctetsType.class.st +++ b/source/ASN1-Core/ASN1OctetsType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1OctetsType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1Pragma.class.st b/source/ASN1-Core/ASN1Pragma.class.st similarity index 98% rename from source/ASN1/ASN1Pragma.class.st rename to source/ASN1-Core/ASN1Pragma.class.st index 8ce9eca..9d60a48 100644 --- a/source/ASN1/ASN1Pragma.class.st +++ b/source/ASN1-Core/ASN1Pragma.class.st @@ -7,7 +7,7 @@ Class { 'systemClass', 'method' ], - #category : 'ASN1-DefinitionModel' + #category : #'ASN1-Core-DefinitionModel' } { #category : #LICENSE } diff --git a/source/ASN1/ASN1PragmaAccessor.class.st b/source/ASN1-Core/ASN1PragmaAccessor.class.st similarity index 97% rename from source/ASN1/ASN1PragmaAccessor.class.st rename to source/ASN1-Core/ASN1PragmaAccessor.class.st index 9bbb931..fd07e6d 100644 --- a/source/ASN1/ASN1PragmaAccessor.class.st +++ b/source/ASN1-Core/ASN1PragmaAccessor.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1PragmaAccessor, #superclass : #ASN1Pragma, - #category : 'ASN1-DefinitionModel' + #category : #'ASN1-Core-DefinitionModel' } { #category : #LICENSE } diff --git a/source/ASN1/ASN1PragmaMutator.class.st b/source/ASN1-Core/ASN1PragmaMutator.class.st similarity index 98% rename from source/ASN1/ASN1PragmaMutator.class.st rename to source/ASN1-Core/ASN1PragmaMutator.class.st index c999661..bf2c50f 100644 --- a/source/ASN1/ASN1PragmaMutator.class.st +++ b/source/ASN1-Core/ASN1PragmaMutator.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'classOfMutatorArgument' ], - #category : 'ASN1-DefinitionModel' + #category : #'ASN1-Core-DefinitionModel' } { #category : #LICENSE } diff --git a/source/ASN1/ASN1PrintableString.class.st b/source/ASN1-Core/ASN1PrintableString.class.st similarity index 82% rename from source/ASN1/ASN1PrintableString.class.st rename to source/ASN1-Core/ASN1PrintableString.class.st index acd9d08..e18453e 100644 --- a/source/ASN1/ASN1PrintableString.class.st +++ b/source/ASN1-Core/ASN1PrintableString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1PrintableString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1PrintableStringType.class.st b/source/ASN1-Core/ASN1PrintableStringType.class.st similarity index 92% rename from source/ASN1/ASN1PrintableStringType.class.st rename to source/ASN1-Core/ASN1PrintableStringType.class.st index d84b6cd..a27ecd0 100644 --- a/source/ASN1/ASN1PrintableStringType.class.st +++ b/source/ASN1-Core/ASN1PrintableStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1PrintableStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1SequenceOfType.class.st b/source/ASN1-Core/ASN1SequenceOfType.class.st similarity index 87% rename from source/ASN1/ASN1SequenceOfType.class.st rename to source/ASN1-Core/ASN1SequenceOfType.class.st index d5d0c75..791054a 100644 --- a/source/ASN1/ASN1SequenceOfType.class.st +++ b/source/ASN1-Core/ASN1SequenceOfType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1SequenceOfType, #superclass : #ASN1UnstructuredType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1SequenceType.class.st b/source/ASN1-Core/ASN1SequenceType.class.st similarity index 87% rename from source/ASN1/ASN1SequenceType.class.st rename to source/ASN1-Core/ASN1SequenceType.class.st index 35e8071..d5b4c07 100644 --- a/source/ASN1/ASN1SequenceType.class.st +++ b/source/ASN1-Core/ASN1SequenceType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1SequenceType, #superclass : #ASN1UnmappedType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1SetOfType.class.st b/source/ASN1-Core/ASN1SetOfType.class.st similarity index 86% rename from source/ASN1/ASN1SetOfType.class.st rename to source/ASN1-Core/ASN1SetOfType.class.st index e339606..ad1deae 100644 --- a/source/ASN1/ASN1SetOfType.class.st +++ b/source/ASN1-Core/ASN1SetOfType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1SetOfType, #superclass : #ASN1UnstructuredType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1SetType.class.st b/source/ASN1-Core/ASN1SetType.class.st similarity index 86% rename from source/ASN1/ASN1SetType.class.st rename to source/ASN1-Core/ASN1SetType.class.st index c337089..07130cd 100644 --- a/source/ASN1/ASN1SetType.class.st +++ b/source/ASN1-Core/ASN1SetType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1SetType, #superclass : #ASN1UnmappedType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1Stream.class.st b/source/ASN1-Core/ASN1Stream.class.st similarity index 99% rename from source/ASN1/ASN1Stream.class.st rename to source/ASN1-Core/ASN1Stream.class.st index 39283a3..b8b51cb 100644 --- a/source/ASN1/ASN1Stream.class.st +++ b/source/ASN1-Core/ASN1Stream.class.st @@ -8,7 +8,7 @@ Class { #classVars : [ 'TagToTypeDispatchTable' ], - #category : #ASN1 + #category : #'ASN1-Core-ASN1-Core' } { #category : #decoding } diff --git a/source/ASN1/ASN1StringType.class.st b/source/ASN1-Core/ASN1StringType.class.st similarity index 95% rename from source/ASN1/ASN1StringType.class.st rename to source/ASN1-Core/ASN1StringType.class.st index 2af832a..1a80545 100644 --- a/source/ASN1/ASN1StringType.class.st +++ b/source/ASN1-Core/ASN1StringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1StringType, #superclass : #ASN1OctetsType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1StructureElement.class.st b/source/ASN1-Core/ASN1StructureElement.class.st similarity index 98% rename from source/ASN1/ASN1StructureElement.class.st rename to source/ASN1-Core/ASN1StructureElement.class.st index aab6e06..c727c24 100644 --- a/source/ASN1/ASN1StructureElement.class.st +++ b/source/ASN1-Core/ASN1StructureElement.class.st @@ -5,7 +5,7 @@ Class { 'default', 'optional' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1StructuredType.class.st b/source/ASN1-Core/ASN1StructuredType.class.st similarity index 98% rename from source/ASN1/ASN1StructuredType.class.st rename to source/ASN1-Core/ASN1StructuredType.class.st index 47a48a6..68ffc77 100644 --- a/source/ASN1/ASN1StructuredType.class.st +++ b/source/ASN1-Core/ASN1StructuredType.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'elements' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #'accessing - element construction' } diff --git a/source/ASN1/ASN1SubType.class.st b/source/ASN1-Core/ASN1SubType.class.st similarity index 95% rename from source/ASN1/ASN1SubType.class.st rename to source/ASN1-Core/ASN1SubType.class.st index 2d3eee8..b682ce3 100644 --- a/source/ASN1/ASN1SubType.class.st +++ b/source/ASN1-Core/ASN1SubType.class.st @@ -5,7 +5,7 @@ Class { 'parent', 'tag' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1TeletexString.class.st b/source/ASN1-Core/ASN1TeletexString.class.st similarity index 81% rename from source/ASN1/ASN1TeletexString.class.st rename to source/ASN1-Core/ASN1TeletexString.class.st index d793be8..b92a641 100644 --- a/source/ASN1/ASN1TeletexString.class.st +++ b/source/ASN1-Core/ASN1TeletexString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1TeletexString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1TeletexStringType.class.st b/source/ASN1-Core/ASN1TeletexStringType.class.st similarity index 91% rename from source/ASN1/ASN1TeletexStringType.class.st rename to source/ASN1-Core/ASN1TeletexStringType.class.st index 04093f4..822670c 100644 --- a/source/ASN1/ASN1TeletexStringType.class.st +++ b/source/ASN1-Core/ASN1TeletexStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1TeletexStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1Type.class.st b/source/ASN1-Core/ASN1Type.class.st similarity index 98% rename from source/ASN1/ASN1Type.class.st rename to source/ASN1-Core/ASN1Type.class.st index dfaf77a..78b4850 100644 --- a/source/ASN1/ASN1Type.class.st +++ b/source/ASN1-Core/ASN1Type.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1Type, #superclass : #ASN1Entity, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #accessing } diff --git a/source/ASN1/ASN1TypeReference.class.st b/source/ASN1-Core/ASN1TypeReference.class.st similarity index 67% rename from source/ASN1/ASN1TypeReference.class.st rename to source/ASN1-Core/ASN1TypeReference.class.st index 6d1cbf2..a2e87de 100644 --- a/source/ASN1/ASN1TypeReference.class.st +++ b/source/ASN1-Core/ASN1TypeReference.class.st @@ -1,5 +1,5 @@ Class { #name : #ASN1TypeReference, #superclass : #ASN1Entity, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } diff --git a/source/ASN1/ASN1UTCTimeType.class.st b/source/ASN1-Core/ASN1UTCTimeType.class.st similarity index 97% rename from source/ASN1/ASN1UTCTimeType.class.st rename to source/ASN1-Core/ASN1UTCTimeType.class.st index 920ae90..f66ec55 100644 --- a/source/ASN1/ASN1UTCTimeType.class.st +++ b/source/ASN1-Core/ASN1UTCTimeType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1UTCTimeType, #superclass : #ASN1BasicType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1UniversalString.class.st b/source/ASN1-Core/ASN1UniversalString.class.st similarity index 82% rename from source/ASN1/ASN1UniversalString.class.st rename to source/ASN1-Core/ASN1UniversalString.class.st index 3cca9ab..e54d138 100644 --- a/source/ASN1/ASN1UniversalString.class.st +++ b/source/ASN1-Core/ASN1UniversalString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1UniversalString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1UniversalStringType.class.st b/source/ASN1-Core/ASN1UniversalStringType.class.st similarity index 92% rename from source/ASN1/ASN1UniversalStringType.class.st rename to source/ASN1-Core/ASN1UniversalStringType.class.st index b5c514d..e8b30d0 100644 --- a/source/ASN1/ASN1UniversalStringType.class.st +++ b/source/ASN1-Core/ASN1UniversalStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1UniversalStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1UnmappedType.class.st b/source/ASN1-Core/ASN1UnmappedType.class.st similarity index 96% rename from source/ASN1/ASN1UnmappedType.class.st rename to source/ASN1-Core/ASN1UnmappedType.class.st index 821644b..b3880f3 100644 --- a/source/ASN1/ASN1UnmappedType.class.st +++ b/source/ASN1-Core/ASN1UnmappedType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1UnmappedType, #superclass : #ASN1ConstructedType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1UnstructuredType.class.st b/source/ASN1-Core/ASN1UnstructuredType.class.st similarity index 97% rename from source/ASN1/ASN1UnstructuredType.class.st rename to source/ASN1-Core/ASN1UnstructuredType.class.st index 77b5445..4435430 100644 --- a/source/ASN1/ASN1UnstructuredType.class.st +++ b/source/ASN1-Core/ASN1UnstructuredType.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'elementType' ], - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1Value.class.st b/source/ASN1-Core/ASN1Value.class.st similarity index 81% rename from source/ASN1/ASN1Value.class.st rename to source/ASN1-Core/ASN1Value.class.st index 0779f34..57c59c3 100644 --- a/source/ASN1/ASN1Value.class.st +++ b/source/ASN1-Core/ASN1Value.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1Value, #superclass : #Object, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1VisibleString.class.st b/source/ASN1-Core/ASN1VisibleString.class.st similarity index 81% rename from source/ASN1/ASN1VisibleString.class.st rename to source/ASN1-Core/ASN1VisibleString.class.st index 8dc874a..d636edb 100644 --- a/source/ASN1/ASN1VisibleString.class.st +++ b/source/ASN1-Core/ASN1VisibleString.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1VisibleString, #superclass : #ASN1AbstractString, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #'private - parsing' } diff --git a/source/ASN1/ASN1VisibleStringType.class.st b/source/ASN1-Core/ASN1VisibleStringType.class.st similarity index 91% rename from source/ASN1/ASN1VisibleStringType.class.st rename to source/ASN1-Core/ASN1VisibleStringType.class.st index 490a8e1..58a3033 100644 --- a/source/ASN1/ASN1VisibleStringType.class.st +++ b/source/ASN1-Core/ASN1VisibleStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1VisibleStringType, #superclass : #ASN1WrappedStringType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/ASN1WrappedStringType.class.st b/source/ASN1-Core/ASN1WrappedStringType.class.st similarity index 95% rename from source/ASN1/ASN1WrappedStringType.class.st rename to source/ASN1-Core/ASN1WrappedStringType.class.st index 731faf1..4337dc1 100644 --- a/source/ASN1/ASN1WrappedStringType.class.st +++ b/source/ASN1-Core/ASN1WrappedStringType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1WrappedStringType, #superclass : #ASN1OctetsType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1WrapperConstructedType.class.st b/source/ASN1-Core/ASN1WrapperConstructedType.class.st similarity index 98% rename from source/ASN1/ASN1WrapperConstructedType.class.st rename to source/ASN1-Core/ASN1WrapperConstructedType.class.st index bd8b27e..7f9415d 100644 --- a/source/ASN1/ASN1WrapperConstructedType.class.st +++ b/source/ASN1-Core/ASN1WrapperConstructedType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1WrapperConstructedType, #superclass : #ASN1WrapperType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1WrapperPrimitiveType.class.st b/source/ASN1-Core/ASN1WrapperPrimitiveType.class.st similarity index 94% rename from source/ASN1/ASN1WrapperPrimitiveType.class.st rename to source/ASN1-Core/ASN1WrapperPrimitiveType.class.st index 591e4f7..862e2e0 100644 --- a/source/ASN1/ASN1WrapperPrimitiveType.class.st +++ b/source/ASN1-Core/ASN1WrapperPrimitiveType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1WrapperPrimitiveType, #superclass : #ASN1WrapperType, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #decoding } diff --git a/source/ASN1/ASN1WrapperType.class.st b/source/ASN1-Core/ASN1WrapperType.class.st similarity index 84% rename from source/ASN1/ASN1WrapperType.class.st rename to source/ASN1-Core/ASN1WrapperType.class.st index c5678e9..4dedfd3 100644 --- a/source/ASN1/ASN1WrapperType.class.st +++ b/source/ASN1-Core/ASN1WrapperType.class.st @@ -1,7 +1,7 @@ Class { #name : #ASN1WrapperType, #superclass : #ASN1Type, - #category : 'ASN1-Types' + #category : #'ASN1-Core-Types' } { #category : #testing } diff --git a/source/ASN1/Boolean.extension.st b/source/ASN1-Core/Boolean.extension.st similarity index 66% rename from source/ASN1/Boolean.extension.st rename to source/ASN1-Core/Boolean.extension.st index 1c65de7..d4e6260 100644 --- a/source/ASN1/Boolean.extension.st +++ b/source/ASN1-Core/Boolean.extension.st @@ -1,13 +1,13 @@ Extension { #name : #Boolean } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Boolean >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Boolean >> asn1Tag [ ^ 1 diff --git a/source/ASN1/ByteArray.extension.st b/source/ASN1-Core/ByteArray.extension.st similarity index 68% rename from source/ASN1/ByteArray.extension.st rename to source/ASN1-Core/ByteArray.extension.st index 5c62fad..f3b5951 100644 --- a/source/ASN1/ByteArray.extension.st +++ b/source/ASN1-Core/ByteArray.extension.st @@ -1,6 +1,6 @@ Extension { #name : #ByteArray } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } ByteArray >> asn1Tag [ ^ 4 diff --git a/source/ASN1/DSAPublicKey.extension.st b/source/ASN1-Core/DSAPublicKey.extension.st similarity index 90% rename from source/ASN1/DSAPublicKey.extension.st rename to source/ASN1-Core/DSAPublicKey.extension.st index 092a45f..b936a4e 100644 --- a/source/ASN1/DSAPublicKey.extension.st +++ b/source/ASN1-Core/DSAPublicKey.extension.st @@ -1,6 +1,6 @@ Extension { #name : #DSAPublicKey } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } DSAPublicKey >> asAsn1Bytes [ | algorithm keyInfo | @@ -12,7 +12,7 @@ DSAPublicKey >> asAsn1Bytes [ ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } DSAPublicKey class >> fromAsnDerBytes: bytes [ | collection algorithm dssSig p q g y | @@ -28,7 +28,7 @@ DSAPublicKey class >> fromAsnDerBytes: bytes [ ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } DSAPublicKey >> subjectPublicKey [ ^ ASN1BitString fromByteArray: y asAsn1Bytes diff --git a/source/ASN1/DateAndTime.extension.st b/source/ASN1-Core/DateAndTime.extension.st similarity index 68% rename from source/ASN1/DateAndTime.extension.st rename to source/ASN1-Core/DateAndTime.extension.st index fb99298..94e16ed 100644 --- a/source/ASN1/DateAndTime.extension.st +++ b/source/ASN1-Core/DateAndTime.extension.st @@ -1,13 +1,13 @@ Extension { #name : #DateAndTime } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } DateAndTime >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } DateAndTime >> asn1Tag [ ^ 23 diff --git a/source/ASN1/HashFunction.extension.st b/source/ASN1-Core/HashFunction.extension.st similarity index 79% rename from source/ASN1/HashFunction.extension.st rename to source/ASN1-Core/HashFunction.extension.st index df4d232..4399520 100644 --- a/source/ASN1/HashFunction.extension.st +++ b/source/ASN1-Core/HashFunction.extension.st @@ -1,12 +1,12 @@ Extension { #name : #HashFunction } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } HashFunction class >> digestInfoAsn1DerEncodingFromMessage: msg [ ^ (self digestInfoFromMessage: msg) asAsn1Bytes ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } HashFunction class >> digestInfoFromMessage: msg [ ^ (OrderedCollection @@ -15,19 +15,19 @@ HashFunction class >> digestInfoFromMessage: msg [ ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } HashFunction class >> doubleHashMessage: aStringOrByteArray [ ^ self new doubleHashMessage: aStringOrByteArray ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } HashFunction class >> oid [ ^ ASN1ObjectId fromString: self oidString. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } HashFunction class >> oidString [ ^ self subclassResponsibility diff --git a/source/ASN1/Integer.extension.st b/source/ASN1-Core/Integer.extension.st similarity index 86% rename from source/ASN1/Integer.extension.st rename to source/ASN1-Core/Integer.extension.st index 0fc4901..7ec6e0d 100644 --- a/source/ASN1/Integer.extension.st +++ b/source/ASN1-Core/Integer.extension.st @@ -1,20 +1,20 @@ Extension { #name : #Integer } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Integer >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Integer >> asn1Tag [ ^ 2 ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Integer class >> asnDerLengthFromHexStreamWithBytes: aStream [ | byte length bytes | diff --git a/source/ASN1/OrderedSet.class.st b/source/ASN1-Core/OrderedSet.class.st similarity index 79% rename from source/ASN1/OrderedSet.class.st rename to source/ASN1-Core/OrderedSet.class.st index f34e029..9edb30c 100644 --- a/source/ASN1/OrderedSet.class.st +++ b/source/ASN1-Core/OrderedSet.class.st @@ -1,7 +1,7 @@ Class { #name : #OrderedSet, #superclass : #OrderedCollection, - #category : 'ASN1-Objects' + #category : #'ASN1-Core-Objects' } { #category : #accessing } diff --git a/source/ASN1/ReadStream.extension.st b/source/ASN1-Core/ReadStream.extension.st similarity index 97% rename from source/ASN1/ReadStream.extension.st rename to source/ASN1-Core/ReadStream.extension.st index 02a765a..94d3fc0 100644 --- a/source/ASN1/ReadStream.extension.st +++ b/source/ASN1-Core/ReadStream.extension.st @@ -1,6 +1,6 @@ Extension { #name : #ReadStream } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } ReadStream >> formatASN1TabLevel: aTabLevel [ | result tag aString size tabs sizeAndBytes bytes | self atEnd diff --git a/source/ASN1/SequenceableCollection.extension.st b/source/ASN1-Core/SequenceableCollection.extension.st similarity index 73% rename from source/ASN1/SequenceableCollection.extension.st rename to source/ASN1-Core/SequenceableCollection.extension.st index 729cf86..f6fd8c9 100644 --- a/source/ASN1/SequenceableCollection.extension.st +++ b/source/ASN1-Core/SequenceableCollection.extension.st @@ -1,13 +1,13 @@ Extension { #name : #SequenceableCollection } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } SequenceableCollection >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } SequenceableCollection >> asn1Tag [ ^ 48 diff --git a/source/ASN1/Set.extension.st b/source/ASN1-Core/Set.extension.st similarity index 64% rename from source/ASN1/Set.extension.st rename to source/ASN1-Core/Set.extension.st index 7cb597b..add45c0 100644 --- a/source/ASN1/Set.extension.st +++ b/source/ASN1-Core/Set.extension.st @@ -1,13 +1,13 @@ Extension { #name : #Set } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Set >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } Set >> asn1Tag [ ^ 49 diff --git a/source/ASN1/String.extension.st b/source/ASN1-Core/String.extension.st similarity index 93% rename from source/ASN1/String.extension.st rename to source/ASN1-Core/String.extension.st index 5e8b2de..2a397fe 100644 --- a/source/ASN1/String.extension.st +++ b/source/ASN1-Core/String.extension.st @@ -1,13 +1,13 @@ Extension { #name : #String } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } String >> asn1Tag [ ^ 12 ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } String >> formatASN1 [ "return a asn1 tab formed string '30818513818154686973206973206120313239206279746520737472696E672C2062757420746861742069732061207265616C6C79206C6F6E6720737472696E6720736F204920686176652061206C6F7420746F20747970652E20204E6F7065204920616D206E6F7420646F6E65207965742C207374696C6C206E6F7420646F6E6520616C6D6F' formatASN1 @@ -15,7 +15,7 @@ String >> formatASN1 [ ^self formatASN1TabLevel: 0 ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } String >> formatASN1TabLevel: aTabLevel [ | aReadStream aWriteStream | "return a asn1 tab formed string @@ -27,7 +27,7 @@ String >> formatASN1TabLevel: aTabLevel [ ^aWriteStream contents ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } String >> tokensBasedOn: aChar [ "Answer an array of the substrings that compose the receiver." | result end begin | diff --git a/source/ASN1/UndefinedObject.extension.st b/source/ASN1-Core/UndefinedObject.extension.st similarity index 70% rename from source/ASN1/UndefinedObject.extension.st rename to source/ASN1-Core/UndefinedObject.extension.st index c723679..609a04c 100644 --- a/source/ASN1/UndefinedObject.extension.st +++ b/source/ASN1-Core/UndefinedObject.extension.st @@ -1,13 +1,13 @@ Extension { #name : #UndefinedObject } -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } UndefinedObject >> asAsn1Bytes [ ^ ASN1Stream encode: self. ] -{ #category : #'*ASN1' } +{ #category : #'*ASN1-Core' } UndefinedObject >> asn1Tag [ ^ 5 diff --git a/source/ASN1-Core/package.st b/source/ASN1-Core/package.st new file mode 100644 index 0000000..4e64873 --- /dev/null +++ b/source/ASN1-Core/package.st @@ -0,0 +1 @@ +Package { #name : #'ASN1-Core' } diff --git a/source/ASN1/package.st b/source/ASN1/package.st deleted file mode 100644 index b5cee3e..0000000 --- a/source/ASN1/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #ASN1 } diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index f40d5c2..bf491d9 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -1,7 +1,7 @@ Class { #name : #BaselineOfCryptography, #superclass : #BaselineOf, - #category : 'BaselineOfCryptography' + #category : #BaselineOfCryptography } { #category : #baselines } @@ -11,13 +11,13 @@ BaselineOfCryptography >> baseline: spec [ spec for: #common do: [ spec package: 'Cryptography'. spec - package: 'ASN1' with: [ spec requires: #(#'Cryptography' ) ]; - package: 'ASN1-Tests' with: [ spec requires: #(#'ASN1' ) ]; - package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography' #'ASN1') ]; + package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography' ) ]; + package: 'ASN1-Tests' with: [ spec requires: #(#'ASN1-Core' ) ]; + package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; package: 'ASN1-Readers-Tests' with: [ spec requires: #(#'ASN1-Readers') ]; - package: 'PKCS12' with: [ spec requires: #(#'Cryptography' #'ASN1') ]; + package: 'PKCS12' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; package: 'PKCS12-Tests' with: [ spec requires: #(#'PKCS12') ]; - package: 'X509' with: [ spec requires: #(#'Cryptography' #'ASN1' ) ]; + package: 'X509' with: [ spec requires: #(#'Cryptography' #'ASN1-Core' ) ]; package: 'X509-Tests' with: [ spec requires: #(#'X509' ) ]; package: 'PBKDF2' with: [ spec requires: #(#'Cryptography') ]; package: 'PBKDF2-Tests' with: [ spec requires: #(#'PBKDF2' ) ]; From e6ea1b3ca359d5cc44195eabb80f5f6fd11bc498 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:47:56 +0200 Subject: [PATCH 05/36] Categorize uncategorized classes --- source/ASN1-Core/ASN1Module.class.st | 2 +- source/ASN1-Core/ASN1Stream.class.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ASN1-Core/ASN1Module.class.st b/source/ASN1-Core/ASN1Module.class.st index 259891a..a8f23b3 100644 --- a/source/ASN1-Core/ASN1Module.class.st +++ b/source/ASN1-Core/ASN1Module.class.st @@ -9,7 +9,7 @@ Class { #classVars : [ 'Modules' ], - #category : #'ASN1-Core-ASN1-Core' + #category : #'ASN1-Core-Base' } { #category : #'class initialization' } diff --git a/source/ASN1-Core/ASN1Stream.class.st b/source/ASN1-Core/ASN1Stream.class.st index b8b51cb..bfc3c80 100644 --- a/source/ASN1-Core/ASN1Stream.class.st +++ b/source/ASN1-Core/ASN1Stream.class.st @@ -8,7 +8,7 @@ Class { #classVars : [ 'TagToTypeDispatchTable' ], - #category : #'ASN1-Core-ASN1-Core' + #category : #'ASN1-Core-Base' } { #category : #decoding } From 7fff88747a1817a138669485c4cf049803481952 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:51:54 +0200 Subject: [PATCH 06/36] mark ASN1Value and ASN1AbstractString as abstract classes --- source/ASN1-Core/ASN1AbstractString.class.st | 6 ++++++ source/ASN1-Core/ASN1Value.class.st | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/source/ASN1-Core/ASN1AbstractString.class.st b/source/ASN1-Core/ASN1AbstractString.class.st index 71377ba..0e2d9ad 100644 --- a/source/ASN1-Core/ASN1AbstractString.class.st +++ b/source/ASN1-Core/ASN1AbstractString.class.st @@ -15,6 +15,12 @@ ASN1AbstractString class >> fromString: aString [ yourself ] +{ #category : #testing } +ASN1AbstractString class >> isAbstract [ + + ^ self == ASN1AbstractString +] + { #category : #printing } ASN1AbstractString >> , aString [ diff --git a/source/ASN1-Core/ASN1Value.class.st b/source/ASN1-Core/ASN1Value.class.st index 57c59c3..0afc46f 100644 --- a/source/ASN1-Core/ASN1Value.class.st +++ b/source/ASN1-Core/ASN1Value.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Objects' } +{ #category : #testing } +ASN1Value class >> isAbstract [ + + ^ self == ASN1Value +] + { #category : #'private - parsing' } ASN1Value >> asAsn1Bytes [ From 44b0193af22ce216075aba46884d7de4127cdd88 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 08:53:24 +0200 Subject: [PATCH 07/36] ASN1Pragma is an abstract superclass too --- source/ASN1-Core/ASN1Pragma.class.st | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/ASN1-Core/ASN1Pragma.class.st b/source/ASN1-Core/ASN1Pragma.class.st index 9d60a48..020039f 100644 --- a/source/ASN1-Core/ASN1Pragma.class.st +++ b/source/ASN1-Core/ASN1Pragma.class.st @@ -30,6 +30,12 @@ ASN1Pragma class >> fromPragma: aPragma [ ^aClass fromPragma: aPragma ] +{ #category : #testing } +ASN1Pragma class >> isAbstract [ + + ^ self == ASN1Pragma +] + { #category : #'instance creation' } ASN1Pragma class >> isAccessorPragma: aPragma [ ^aPragma keyword = #asn1FieldAccessor: From 5e7e2ed76b3a55e50c47a09363a49fe7983e838f Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 09:13:07 +0200 Subject: [PATCH 08/36] mark all abstract (super)classes within Types hierarchy --- source/ASN1-Core/ASN1BasicType.class.st | 6 ++++++ source/ASN1-Core/ASN1ConstructedType.class.st | 6 ++++++ source/ASN1-Core/ASN1Entity.class.st | 6 ++++++ source/ASN1-Core/ASN1MappedType.class.st | 6 ++++++ source/ASN1-Core/ASN1OctetsType.class.st | 6 ++++++ source/ASN1-Core/ASN1StructuredType.class.st | 6 ++++++ source/ASN1-Core/ASN1SubType.class.st | 6 ++++++ source/ASN1-Core/ASN1Type.class.st | 6 ++++++ source/ASN1-Core/ASN1UnmappedType.class.st | 6 ++++++ source/ASN1-Core/ASN1UnstructuredType.class.st | 6 ++++++ source/ASN1-Core/ASN1WrappedStringType.class.st | 6 ++++++ source/ASN1-Core/ASN1WrapperType.class.st | 6 ++++++ 12 files changed, 72 insertions(+) diff --git a/source/ASN1-Core/ASN1BasicType.class.st b/source/ASN1-Core/ASN1BasicType.class.st index 989b30f..3eb6c24 100644 --- a/source/ASN1-Core/ASN1BasicType.class.st +++ b/source/ASN1-Core/ASN1BasicType.class.st @@ -3,3 +3,9 @@ Class { #superclass : #ASN1Type, #category : #'ASN1-Core-Types' } + +{ #category : #testing } +ASN1BasicType class >> isAbstract [ + + ^ self == ASN1BasicType +] diff --git a/source/ASN1-Core/ASN1ConstructedType.class.st b/source/ASN1-Core/ASN1ConstructedType.class.st index ed1dd82..136498c 100644 --- a/source/ASN1-Core/ASN1ConstructedType.class.st +++ b/source/ASN1-Core/ASN1ConstructedType.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1ConstructedType class >> isAbstract [ + + ^ self == ASN1ConstructedType +] + { #category : #encoding } ASN1ConstructedType >> encode: anObject withDERStream: derStream [ diff --git a/source/ASN1-Core/ASN1Entity.class.st b/source/ASN1-Core/ASN1Entity.class.st index f5794ea..2395438 100644 --- a/source/ASN1-Core/ASN1Entity.class.st +++ b/source/ASN1-Core/ASN1Entity.class.st @@ -8,6 +8,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1Entity class >> isAbstract [ + + ^ self == ASN1Entity +] + { #category : #'instance creation' } ASN1Entity class >> name: aSymbol [ diff --git a/source/ASN1-Core/ASN1MappedType.class.st b/source/ASN1-Core/ASN1MappedType.class.st index c85c9a9..f1d16f8 100644 --- a/source/ASN1-Core/ASN1MappedType.class.st +++ b/source/ASN1-Core/ASN1MappedType.class.st @@ -7,6 +7,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1MappedType class >> isAbstract [ + + ^ self == ASN1StructuredType +] + { #category : #'accessing - element construction' } ASN1MappedType >> add: aSymbol type: type default: anObject [ diff --git a/source/ASN1-Core/ASN1OctetsType.class.st b/source/ASN1-Core/ASN1OctetsType.class.st index 64bbc07..32f0af2 100644 --- a/source/ASN1-Core/ASN1OctetsType.class.st +++ b/source/ASN1-Core/ASN1OctetsType.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1OctetsType class >> isAbstract [ + + ^ self == ASN1OctetsType +] + { #category : #decoding } ASN1OctetsType >> decodeConstructedValueWithDERStream: derStream length: length [ diff --git a/source/ASN1-Core/ASN1StructuredType.class.st b/source/ASN1-Core/ASN1StructuredType.class.st index 68ffc77..a9ea8eb 100644 --- a/source/ASN1-Core/ASN1StructuredType.class.st +++ b/source/ASN1-Core/ASN1StructuredType.class.st @@ -7,6 +7,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1StructuredType class >> isAbstract [ + + ^ self == ASN1StructuredType +] + { #category : #'accessing - element construction' } ASN1StructuredType >> add: aSymbol type: type [ diff --git a/source/ASN1-Core/ASN1SubType.class.st b/source/ASN1-Core/ASN1SubType.class.st index b682ce3..b28914d 100644 --- a/source/ASN1-Core/ASN1SubType.class.st +++ b/source/ASN1-Core/ASN1SubType.class.st @@ -8,6 +8,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1SubType class >> isAbstract [ + + ^ self == ASN1SubType +] + { #category : #testing } ASN1SubType >> isTypeFor: anObject [ diff --git a/source/ASN1-Core/ASN1Type.class.st b/source/ASN1-Core/ASN1Type.class.st index 78b4850..087639f 100644 --- a/source/ASN1-Core/ASN1Type.class.st +++ b/source/ASN1-Core/ASN1Type.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1Type class >> isAbstract [ + + ^ self == ASN1Type +] + { #category : #accessing } ASN1Type >> asn1Tag [ diff --git a/source/ASN1-Core/ASN1UnmappedType.class.st b/source/ASN1-Core/ASN1UnmappedType.class.st index b3880f3..aab3f5b 100644 --- a/source/ASN1-Core/ASN1UnmappedType.class.st +++ b/source/ASN1-Core/ASN1UnmappedType.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1UnmappedType class >> isAbstract [ + + ^ self == ASN1UnmappedType +] + { #category : #decoding } ASN1UnmappedType >> decodeValueIndefiniteLengthWithDERStream: derStream [ diff --git a/source/ASN1-Core/ASN1UnstructuredType.class.st b/source/ASN1-Core/ASN1UnstructuredType.class.st index 4435430..14233ab 100644 --- a/source/ASN1-Core/ASN1UnstructuredType.class.st +++ b/source/ASN1-Core/ASN1UnstructuredType.class.st @@ -7,6 +7,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1UnstructuredType class >> isAbstract [ + + ^ self == ASN1UnstructuredType +] + { #category : #decoding } ASN1UnstructuredType >> decodeValueIndefiniteLengthWithDERStream: derStream [ diff --git a/source/ASN1-Core/ASN1WrappedStringType.class.st b/source/ASN1-Core/ASN1WrappedStringType.class.st index 4337dc1..0018b08 100644 --- a/source/ASN1-Core/ASN1WrappedStringType.class.st +++ b/source/ASN1-Core/ASN1WrappedStringType.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1WrappedStringType class >> isAbstract [ + + ^ self == ASN1WrappedStringType +] + { #category : #decoding } ASN1WrappedStringType >> decodeValueWithDERStream: derStream length: length [ diff --git a/source/ASN1-Core/ASN1WrapperType.class.st b/source/ASN1-Core/ASN1WrapperType.class.st index 4dedfd3..63772e9 100644 --- a/source/ASN1-Core/ASN1WrapperType.class.st +++ b/source/ASN1-Core/ASN1WrapperType.class.st @@ -4,6 +4,12 @@ Class { #category : #'ASN1-Core-Types' } +{ #category : #testing } +ASN1WrapperType class >> isAbstract [ + + ^ self == ASN1WrapperType +] + { #category : #testing } ASN1WrapperType >> matchesTag: anInteger [ From 5e67ef312616ecb1c3746f7b7d04d9c8c8467763 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:31:32 +0200 Subject: [PATCH 09/36] Cleanup dots at end of method and formatting (for ASN1-Core package) --- source/ASN1-Core/ASN1AbstractString.class.st | 6 +- .../ASN1-Core/ASN1AnyDefinedByType.class.st | 32 ++--- source/ASN1-Core/ASN1AnyType.class.st | 11 +- .../ASN1-Core/ASN1AssignmentSubType.class.st | 6 +- source/ASN1-Core/ASN1BitString.class.st | 5 +- source/ASN1-Core/ASN1BitStringType.class.st | 6 +- source/ASN1-Core/ASN1BooleanType.class.st | 7 +- source/ASN1-Core/ASN1ChoiceElement.class.st | 22 ++-- source/ASN1-Core/ASN1ChoiceType.class.st | 23 ++-- source/ASN1-Core/ASN1DefinitionModel.class.st | 87 +++++++------ source/ASN1-Core/ASN1Entity.class.st | 19 ++- .../ASN1ExplicitContextValue.class.st | 4 +- source/ASN1-Core/ASN1ExplicitSubType.class.st | 21 ++-- source/ASN1-Core/ASN1ImplicitSubType.class.st | 27 ++-- source/ASN1-Core/ASN1IntegerType.class.st | 25 ++-- source/ASN1-Core/ASN1MappedType.class.st | 110 ++++++++-------- source/ASN1-Core/ASN1MappingSubType.class.st | 5 +- source/ASN1-Core/ASN1Module.class.st | 118 ++++++++---------- source/ASN1-Core/ASN1ObjectId.class.st | 7 +- .../ASN1ObjectIdentifierType.class.st | 19 ++- source/ASN1-Core/ASN1OctetsType.class.st | 31 +++-- source/ASN1-Core/ASN1Pragma.class.st | 10 +- source/ASN1-Core/ASN1Stream.class.st | 86 ++++++------- source/ASN1-Core/ASN1StringType.class.st | 6 +- .../ASN1-Core/ASN1StructureElement.class.st | 44 +++---- source/ASN1-Core/ASN1StructuredType.class.st | 24 ++-- source/ASN1-Core/ASN1Type.class.st | 16 +-- source/ASN1-Core/ASN1UTCTimeType.class.st | 21 ++-- source/ASN1-Core/ASN1UnmappedType.class.st | 29 ++--- .../ASN1-Core/ASN1UnstructuredType.class.st | 25 ++-- .../ASN1-Core/ASN1WrappedStringType.class.st | 6 +- .../ASN1WrapperConstructedType.class.st | 20 ++- source/ASN1-Core/Boolean.extension.st | 3 +- source/ASN1-Core/DSAPublicKey.extension.st | 15 +-- source/ASN1-Core/DateAndTime.extension.st | 3 +- source/ASN1-Core/HashFunction.extension.st | 13 +- source/ASN1-Core/Integer.extension.st | 3 +- source/ASN1-Core/ReadStream.extension.st | 41 +++--- .../SequenceableCollection.extension.st | 3 +- source/ASN1-Core/Set.extension.st | 3 +- source/ASN1-Core/UndefinedObject.extension.st | 3 +- 41 files changed, 453 insertions(+), 512 deletions(-) diff --git a/source/ASN1-Core/ASN1AbstractString.class.st b/source/ASN1-Core/ASN1AbstractString.class.st index 0e2d9ad..7c778c7 100644 --- a/source/ASN1-Core/ASN1AbstractString.class.st +++ b/source/ASN1-Core/ASN1AbstractString.class.st @@ -52,15 +52,13 @@ ASN1AbstractString >> hash [ { #category : #'initialize-release' } ASN1AbstractString >> initialize [ - self string: ''. - + self string: '' ] { #category : #printing } ASN1AbstractString >> printOn: aStream [ - self string printOn: aStream. - + self string printOn: aStream ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1AnyDefinedByType.class.st b/source/ASN1-Core/ASN1AnyDefinedByType.class.st index 2199d6b..c441c25 100644 --- a/source/ASN1-Core/ASN1AnyDefinedByType.class.st +++ b/source/ASN1-Core/ASN1AnyDefinedByType.class.st @@ -12,31 +12,29 @@ Class { { #category : #accessing } ASN1AnyDefinedByType >> at: key [ - ^self typeMap at: key ifAbsent: [self defaultType] + ^ self typeMap at: key ifAbsent: [ self defaultType ] ] { #category : #accessing } ASN1AnyDefinedByType >> at: key put: typeSpec [ - ^self typeMap at: key put: (self typeFrom: typeSpec) + ^ self typeMap at: key put: (self typeFrom: typeSpec) ] { #category : #decoding } ASN1AnyDefinedByType >> decodeWithDERStream: derStream [ - self error: 'must decode in the scope of a structured container'. - + self error: 'must decode in the scope of a structured container' ] { #category : #decoding } ASN1AnyDefinedByType >> decodeWithDERStream: derStream owner: owner ownerType: ownerType [ | keyValue type | - keyValue := (ownerType elementWithSymbol: self definedBy) - valueFrom: owner. + keyValue := (ownerType elementWithSymbol: self definedBy) valueFrom: + owner. type := self at: keyValue. - ^ type decodeWithDERStream: derStream. - + ^ type decodeWithDERStream: derStream ] { #category : #accessing } @@ -70,35 +68,31 @@ ASN1AnyDefinedByType >> definedBy: anObject [ { #category : #encoding } ASN1AnyDefinedByType >> encode: obj withDERStream: derStream [ - self error: 'must encode in the scope of a structured container'. - + self error: 'must encode in the scope of a structured container' ] { #category : #encoding } ASN1AnyDefinedByType >> encode: anObject withDERStream: derStream owner: owner ownerType: ownerType [ | keyValue type | - keyValue := (ownerType elementWithSymbol: self definedBy) - valueFrom: owner. + keyValue := (ownerType elementWithSymbol: self definedBy) valueFrom: + owner. type := self at: keyValue. - ^ type encode: anObject withDERStream: derStream. - + ^ type encode: anObject withDERStream: derStream ] { #category : #'initialize-release' } ASN1AnyDefinedByType >> initialize [ - self typeMap: Dictionary new. - + self typeMap: Dictionary new ] { #category : #testing } ASN1AnyDefinedByType >> matchesTag: anInteger [ ^ (self typeMap - detect: [:each | each matchesTag: anInteger] - ifNone: [nil]) notNil - + detect: [ :each | each matchesTag: anInteger ] + ifNone: [ nil ]) notNil ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1AnyType.class.st b/source/ASN1-Core/ASN1AnyType.class.st index 40b1d0e..69bab0b 100644 --- a/source/ASN1-Core/ASN1AnyType.class.st +++ b/source/ASN1-Core/ASN1AnyType.class.st @@ -7,24 +7,21 @@ Class { { #category : #decoding } ASN1AnyType >> decodeWithDERStream: derStream [ - ^ derStream decode. - + ^ derStream decode ] { #category : #encoding } ASN1AnyType >> encode: anObject withDERStream: derStream [ - derStream encode: anObject. - + derStream encode: anObject ] { #category : #testing } ASN1AnyType >> isTypeFor: anObject [ ^ (ASN1Stream tagToTypeDispatchTable - detect: [:eachType | eachType isTypeFor: anObject] - ifNone: [nil]) notNil - + detect: [ :eachType | eachType isTypeFor: anObject ] + ifNone: [ nil ]) notNil ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1AssignmentSubType.class.st b/source/ASN1-Core/ASN1AssignmentSubType.class.st index dbb1f75..85ced7a 100644 --- a/source/ASN1-Core/ASN1AssignmentSubType.class.st +++ b/source/ASN1-Core/ASN1AssignmentSubType.class.st @@ -7,15 +7,13 @@ Class { { #category : #decoding } ASN1AssignmentSubType >> decodeWithDERStream: derStream [ - ^ self parent decodeWithDERStream: derStream. - + ^ self parent decodeWithDERStream: derStream ] { #category : #encoding } ASN1AssignmentSubType >> encode: anObject withDERStream: derStream [ - ^ self parent encode: anObject withDERStream: derStream. - + ^ self parent encode: anObject withDERStream: derStream ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1BitString.class.st b/source/ASN1-Core/ASN1BitString.class.st index 2aeb4ed..9cba1c6 100644 --- a/source/ASN1-Core/ASN1BitString.class.st +++ b/source/ASN1-Core/ASN1BitString.class.st @@ -12,9 +12,8 @@ Class { ASN1BitString class >> fromByteArray: bytes [ ^ self new - bytes: bytes; - yourself. - + bytes: bytes; + yourself ] { #category : #'initialize-release' } diff --git a/source/ASN1-Core/ASN1BitStringType.class.st b/source/ASN1-Core/ASN1BitStringType.class.st index 051ef4f..a0fed4f 100644 --- a/source/ASN1-Core/ASN1BitStringType.class.st +++ b/source/ASN1-Core/ASN1BitStringType.class.st @@ -12,16 +12,14 @@ ASN1BitStringType >> decodeValueWithDERStream: derStream length: length [ bitString bitsPadding: derStream next. bitString bytes: (derStream next: length - 1). ^ bitString - ] { #category : #encoding } ASN1BitStringType >> encodeValue: anObject withDERStream: derStream [ - derStream + derStream nextPut: anObject bitsPadding; - nextPutAll: anObject bytes asByteArray. - + nextPutAll: anObject bytes asByteArray ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1BooleanType.class.st b/source/ASN1-Core/ASN1BooleanType.class.st index 6928caf..df2b535 100644 --- a/source/ASN1-Core/ASN1BooleanType.class.st +++ b/source/ASN1-Core/ASN1BooleanType.class.st @@ -13,10 +13,9 @@ ASN1BooleanType >> decodeValueWithDERStream: derStream length: length [ { #category : #encoding } ASN1BooleanType >> encodeValue: anObject withDERStream: derStream [ - anObject - ifTrue: [derStream nextPut: 255] - ifFalse: [derStream nextPut: 0]. - + anObject + ifTrue: [ derStream nextPut: 255 ] + ifFalse: [ derStream nextPut: 0 ] ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1ChoiceElement.class.st b/source/ASN1-Core/ASN1ChoiceElement.class.st index 877e8fc..967bb9b 100644 --- a/source/ASN1-Core/ASN1ChoiceElement.class.st +++ b/source/ASN1-Core/ASN1ChoiceElement.class.st @@ -12,54 +12,50 @@ Class { { #category : #private } ASN1ChoiceElement >> addedTo: aType [ - owner := aType. - + owner := aType ] { #category : #decoding } ASN1ChoiceElement >> decodeWithDERStream: derStream [ | tag | - derStream atEnd ifTrue: [^ self error: 'missing element']. + derStream atEnd ifTrue: [ ^ self error: 'missing element' ]. tag := derStream peekTag. (self matchesTag: tag) - ifTrue: [^ type decodeWithDERStream: derStream] - ifFalse: [^ self error: 'bad choice']. - + ifTrue: [ ^ type decodeWithDERStream: derStream ] + ifFalse: [ ^ self error: 'bad choice' ] ] { #category : #encoding } ASN1ChoiceElement >> encode: anObject withDERStream: derStream [ - self type encode: anObject withDERStream: derStream. + self type encode: anObject withDERStream: derStream ] { #category : #'subtype utilities' } ASN1ChoiceElement >> explicitTag: integer [ self type: self type explicitSubType. - ^ self type tag: integer. - + ^ self type tag: integer ] { #category : #'subtype utilities' } ASN1ChoiceElement >> implicitTag: integer [ self type: self type implicitSubType. - ^ self type tag: integer. - + ^ self type tag: integer ] { #category : #testing } ASN1ChoiceElement >> isTypeFor: anObject [ - ^self type isTypeFor: anObject + ^ self type isTypeFor: anObject ] { #category : #testing } ASN1ChoiceElement >> matchesTag: anInteger [ - ^self type matchesTag: anInteger + ^ self type matchesTag: anInteger ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1ChoiceType.class.st b/source/ASN1-Core/ASN1ChoiceType.class.st index 38f3370..0d1a78e 100644 --- a/source/ASN1-Core/ASN1ChoiceType.class.st +++ b/source/ASN1-Core/ASN1ChoiceType.class.st @@ -10,10 +10,9 @@ ASN1ChoiceType >> decodeValueWithDERStream: derStream length: length [ | aTag ele | aTag := derStream currentTag bitAnd: 2r00011111. ele := self elements - detect: [:x | x matchesTag: aTag] - ifNone: [self error: 'no choice']. - ^ ele decodeValueWithDERStream: derStream length: length. - + detect: [ :x | x matchesTag: aTag ] + ifNone: [ self error: 'no choice' ]. + ^ ele decodeValueWithDERStream: derStream length: length ] { #category : #decoding } @@ -22,10 +21,9 @@ ASN1ChoiceType >> decodeWithDERStream: derStream [ | aTag ele | aTag := derStream peekTag. ele := self elements - detect: [:x | x matchesTag: aTag] - ifNone: [self error: 'no choice']. - ^ ele decodeWithDERStream: derStream. - + detect: [ :x | x matchesTag: aTag ] + ifNone: [ self error: 'no choice' ]. + ^ ele decodeWithDERStream: derStream ] { #category : #encoding } @@ -33,16 +31,15 @@ ASN1ChoiceType >> encode: anObject withDERStream: derStream [ | ele | ele := self elements - detect: [:x | x isTypeFor: anObject] - ifNone: [self error: 'no choice']. - ele encode: anObject withDERStream: derStream. - + detect: [ :x | x isTypeFor: anObject ] + ifNone: [ self error: 'no choice' ]. + ele encode: anObject withDERStream: derStream ] { #category : #testing } ASN1ChoiceType >> matchesTag: aTag [ - ^ elements anySatisfy: [:e | e matchesTag: aTag] + ^ elements anySatisfy: [ :e | e matchesTag: aTag ] ] { #category : #private } diff --git a/source/ASN1-Core/ASN1DefinitionModel.class.st b/source/ASN1-Core/ASN1DefinitionModel.class.st index 5764342..a5f9142 100644 --- a/source/ASN1-Core/ASN1DefinitionModel.class.st +++ b/source/ASN1-Core/ASN1DefinitionModel.class.st @@ -53,7 +53,9 @@ ASN1DefinitionModel class >> on: aClassWithASN1Definitions [ ASN1DefinitionModel >> asn1ClassName [ "Answer the value of asn1ClassName" - ^ asn1ClassName ifNil: [asn1ClassName := self parseASN1ClassName. asn1ClassName] + ^ asn1ClassName ifNil: [ + asn1ClassName := self parseASN1ClassName. + asn1ClassName ] ] { #category : #accessing } @@ -67,7 +69,9 @@ ASN1DefinitionModel >> asn1ClassName: anObject [ ASN1DefinitionModel >> asn1DefinitionString [ "Answer the value of asn1DefinitionString" - ^ asn1DefinitionString ifNil: [asn1DefinitionString := self parseASN1DefinitionString. asn1DefinitionString] + ^ asn1DefinitionString ifNil: [ + asn1DefinitionString := self parseASN1DefinitionString. + asn1DefinitionString ] ] { #category : #accessing } @@ -79,15 +83,13 @@ ASN1DefinitionModel >> asn1DefinitionString: anObject [ { #category : #'services parsing' } ASN1DefinitionModel >> createObjectsAndPushFields [ - self resultObject ifNil: - [self setRootObject]. - self currentObject ifNil: - [self setCurrentObject]. - self currentField isNil - ifTrue: [self setCurrentField] - ifFalse: [self pushNextField]. - self setCurrentMutator. - + + self resultObject ifNil: [ self setRootObject ]. + self currentObject ifNil: [ self setCurrentObject ]. + self currentField isNil + ifTrue: [ self setCurrentField ] + ifFalse: [ self pushNextField ]. + self setCurrentMutator ] { #category : #accessing } @@ -150,7 +152,7 @@ ASN1DefinitionModel >> currentObject: anObject [ ASN1DefinitionModel >> fieldStack [ "Answer the value of fieldStack" - ^ fieldStack ifNil: [fieldStack := Stack new]. + ^ fieldStack ifNil: [ fieldStack := Stack new ] ] { #category : #accessing } @@ -164,7 +166,9 @@ ASN1DefinitionModel >> fieldStack: anObject [ ASN1DefinitionModel >> fields [ "Answer the value of fields" - ^ fields ifNil: [fields := self parseFieldNames. fields]. + ^ fields ifNil: [ + fields := self parseFieldNames. + fields ] ] { #category : #accessing } @@ -176,7 +180,7 @@ ASN1DefinitionModel >> fields: anObject [ { #category : #'services pragma' } ASN1DefinitionModel >> getPragmaAccessors [ - "return the pragmas defined on this class. These values are usually put in the accessor of the ivar, but could be in other regular methods if it is appropriate. The form of the pragma is . + "Return the pragmas defined on this class. These values are usually put in the accessor of the ivar, but could be in other regular methods if it is appropriate. The form of the pragma is . for example if you have an ivar named: #title that has a definition MyASN1Object ::= Sequence { asn1Title DisplayableString @@ -188,13 +192,14 @@ ASN1DefinitionModel >> getPragmaAccessors [ ^title Every field definition in the asn1Defintion string must have a corresponding pragma" - - ^(Pragma allNamed: #asn1FieldAccessor: in: self subject) collect: [:aPragma | ASN1PragmaAccessor fromPragma: aPragma]. + + ^ (Pragma allNamed: #asn1FieldAccessor: in: self subject) collect: [ + :aPragma | ASN1PragmaAccessor fromPragma: aPragma ] ] { #category : #'services pragma' } ASN1DefinitionModel >> getPragmaMutators [ - "return the pragmas defined on this class. These values are usually put in the mutator of the ivar, but could be in other regular methods if it is appropriate. The form of the pragma is . Use symbol for class because of monticello loading problems. + "Return the pragmas defined on this class. These values are usually put in the mutator of the ivar, but could be in other regular methods if it is appropriate. The form of the pragma is . Use symbol for class because of monticello loading problems. for example if you have an ivar named: #title that has a definition MyASN1Object ::= Sequence { asn1Title DisplayableString @@ -206,30 +211,33 @@ ASN1DefinitionModel >> getPragmaMutators [ title := aTitle. Every field definition in the asn1Defintion string must have a corresponding pragma" - - ^(Pragma allNamed: #asn1FieldMutator:class: in: self subject) collect: [:aPragma | ASN1PragmaMutator fromPragma: aPragma]. + + ^ (Pragma allNamed: #asn1FieldMutator:class: in: self subject) + collect: [ :aPragma | ASN1PragmaMutator fromPragma: aPragma ] ] { #category : #'services parsing' } ASN1DefinitionModel >> parseASN1ClassName [ - "return the ans1definition argument string" + "Return the ans1definition argument string" + | aDefString classSepIndex | - aDefString := self asn1DefinitionString ifNil: [^nil]. + aDefString := self asn1DefinitionString ifNil: [ ^ nil ]. classSepIndex := aDefString indexOfSubCollection: '::='. - classSepIndex = 0 ifTrue: [^nil]. - ^(aDefString copyFrom: 1 to: classSepIndex - 1) withBlanksTrimmed. + classSepIndex = 0 ifTrue: [ ^ nil ]. + ^ (aDefString copyFrom: 1 to: classSepIndex - 1) withBlanksTrimmed ] { #category : #'services parsing' } ASN1DefinitionModel >> parseASN1DefinitionString [ - "return the ans1definition argument string" + "Return the ans1definition argument string" + | aPragma aCollection | - aCollection := Pragma allNamed: #asn1Definition: in: self subject class. - ^ aCollection isEmpty - ifFalse: [aPragma := aCollection first. - aPragma arguments - at: 1 - ifAbsent: []] + aCollection := Pragma + allNamed: #asn1Definition: + in: self subject class. + ^ aCollection isEmpty ifFalse: [ + aPragma := aCollection first. + aPragma arguments at: 1 ifAbsent: [ ]] ] { #category : #'services parsing' } @@ -277,15 +285,17 @@ ASN1DefinitionModel >> resultObject: anObject [ { #category : #'services parsing' } ASN1DefinitionModel >> setCurrentObject [ - self currentObject: self subject new. + + self currentObject: self subject new ] { #category : #'services parsing' } ASN1DefinitionModel >> setRootObject [ + self resultObject: self parseRootObjectType new. self resultObject isCollection - ifTrue: [self currentObject: self subject new] - ifFalse: [self currentObject: self resultObject] + ifTrue: [ self currentObject: self subject new ] + ifFalse: [ self currentObject: self resultObject ] ] { #category : #accessing } @@ -304,12 +314,13 @@ ASN1DefinitionModel >> subject: anObject [ { #category : #'services verifying' } ASN1DefinitionModel >> verifyFieldAccessorsAndMutators [ - "check to see that the ans1 definition is represented by all the appropriate accessor and mutator definitions" + "Check to see that the ASN1 definition is represented by all the appropriate accessor and mutator definitions" + | myAccessors myMutators | myAccessors := self getPragmaAccessors. myMutators := self getPragmaMutators. - ^self parseFieldNames allSatisfy: [:aField | - (myAccessors anySatisfy: [:anAccessor | anAccessor asn1name = aField]) and: [ - (myMutators anySatisfy: [:aMutator | aMutator asn1name = aField])]]. - + ^ self parseFieldNames allSatisfy: [ :aField | + (myAccessors anySatisfy: [ :anAccessor | + anAccessor asn1name = aField ]) and: [ + myMutators anySatisfy: [ :aMutator | aMutator asn1name = aField ] ] ] ] diff --git a/source/ASN1-Core/ASN1Entity.class.st b/source/ASN1-Core/ASN1Entity.class.st index 2395438..adae619 100644 --- a/source/ASN1-Core/ASN1Entity.class.st +++ b/source/ASN1-Core/ASN1Entity.class.st @@ -32,18 +32,16 @@ ASN1Entity class >> name: aSymbol in: aModule [ ASN1Entity >> explicitSubType [ ^ (ASN1ExplicitSubType name: nil) - parent: self; - yourself. - + parent: self; + yourself ] { #category : #'subtype utilities' } ASN1Entity >> implicitSubType [ ^ (ASN1ImplicitSubType name: nil) - parent: self; - yourself. - + parent: self; + yourself ] { #category : #accessing } @@ -78,8 +76,9 @@ ASN1Entity >> name: anObject [ ASN1Entity >> typeFrom: typeSpec [ ^ self module - ifNil: [typeSpec isBehavior - ifTrue: [typeSpec new] - ifFalse: [typeSpec]] - ifNotNil: [self module typeFrom: typeSpec] + ifNil: [ + typeSpec isBehavior + ifTrue: [ typeSpec new ] + ifFalse: [ typeSpec ] ] + ifNotNil: [ self module typeFrom: typeSpec ] ] diff --git a/source/ASN1-Core/ASN1ExplicitContextValue.class.st b/source/ASN1-Core/ASN1ExplicitContextValue.class.st index 4eb892c..7e7273c 100644 --- a/source/ASN1-Core/ASN1ExplicitContextValue.class.st +++ b/source/ASN1-Core/ASN1ExplicitContextValue.class.st @@ -34,8 +34,8 @@ ASN1ExplicitContextValue >> asn1Tag [ { #category : #printing } ASN1ExplicitContextValue >> printOn: aStream [ - aStream nextPutAll: '[', self tagIndex asString, ']', (self tagValue printString). - + aStream nextPutAll: + '[' , self tagIndex asString , ']' , self tagValue printString ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1ExplicitSubType.class.st b/source/ASN1-Core/ASN1ExplicitSubType.class.st index baff595..80fa688 100644 --- a/source/ASN1-Core/ASN1ExplicitSubType.class.st +++ b/source/ASN1-Core/ASN1ExplicitSubType.class.st @@ -9,8 +9,7 @@ ASN1ExplicitSubType >> decodeWithDERStream: derStream [ derStream nextTag. derStream nextLength. - ^ self parent decodeWithDERStream: derStream. - + ^ self parent decodeWithDERStream: derStream ] { #category : #decoding } @@ -18,8 +17,10 @@ ASN1ExplicitSubType >> decodeWithDERStream: derStream owner: owner ownerType: ow derStream nextTag. derStream nextLength. - ^ self parent decodeWithDERStream: derStream owner: owner ownerType: ownerType. - + ^ self parent + decodeWithDERStream: derStream + owner: owner + ownerType: ownerType ] { #category : #encoding } @@ -30,8 +31,7 @@ ASN1ExplicitSubType >> encode: anObject withDERStream: derStream [ tempStream := derStream newStream. self parent encode: anObject withDERStream: tempStream. derStream nextPutLength: tempStream size. - derStream nextPutAll: tempStream contents. - + derStream nextPutAll: tempStream contents ] { #category : #encoding } @@ -40,8 +40,11 @@ ASN1ExplicitSubType >> encode: anObject withDERStream: derStream owner: owner ow | tempStream | derStream nextPutTag: (self asn1Tag bitOr: 160). tempStream := derStream newStream. - self parent encode: anObject withDERStream: tempStream owner: owner ownerType: ownerType. + self parent + encode: anObject + withDERStream: tempStream + owner: owner + ownerType: ownerType. derStream nextPutLength: tempStream size. - derStream nextPutAll: tempStream contents. - + derStream nextPutAll: tempStream contents ] diff --git a/source/ASN1-Core/ASN1ImplicitSubType.class.st b/source/ASN1-Core/ASN1ImplicitSubType.class.st index c38be30..835d097 100644 --- a/source/ASN1-Core/ASN1ImplicitSubType.class.st +++ b/source/ASN1-Core/ASN1ImplicitSubType.class.st @@ -9,14 +9,16 @@ ASN1ImplicitSubType >> decodeWithDERStream: derStream [ | thisTag | thisTag := derStream nextTag. - (self parent isConstructed not and: [(thisTag bitAnd: 2r00100000) > 0]) - ifTrue: [^ self parent - decodeConstructedValueWithDERStream: derStream - length: derStream nextLength] - ifFalse: [^ self parent - decodeValueWithDERStream: derStream - length: derStream nextLength]. - + (self parent isConstructed not and: [ + (thisTag bitAnd: 2r00100000) > 0 ]) + ifTrue: [ + ^ self parent + decodeConstructedValueWithDERStream: derStream + length: derStream nextLength ] + ifFalse: [ + ^ self parent + decodeValueWithDERStream: derStream + length: derStream nextLength ] ] { #category : #encoding } @@ -24,15 +26,10 @@ ASN1ImplicitSubType >> encode: anObject withDERStream: derStream [ | myTag tempStream | myTag := self asn1Tag bitOr: 128. - self parent isConstructed - ifTrue: [myTag := myTag bitOr: 32]. + self parent isConstructed ifTrue: [ myTag := myTag bitOr: 32 ]. derStream nextPutTag: myTag. tempStream := derStream newStream. self parent encodeValue: anObject withDERStream: tempStream. derStream nextPutLength: tempStream size. - derStream nextPutAll: tempStream contents. - - - - + derStream nextPutAll: tempStream contents ] diff --git a/source/ASN1-Core/ASN1IntegerType.class.st b/source/ASN1-Core/ASN1IntegerType.class.st index f6cefbe..badca59 100644 --- a/source/ASN1-Core/ASN1IntegerType.class.st +++ b/source/ASN1-Core/ASN1IntegerType.class.st @@ -9,12 +9,11 @@ ASN1IntegerType >> decodeValueWithDERStream: derStream length: length [ | integer | integer := Integer new: length neg: false. - length to: 1 by: -1 do: [:index | - integer byteAt: index put: derStream next]. + length to: 1 by: -1 do: [ :index | + integer byteAt: index put: derStream next ]. ((integer byteAt: length) allMask: 16r80) - ifTrue: [^integer twosComplement negated normalize] - ifFalse: [^integer normalize]. - + ifTrue: [ ^ integer twosComplement negated normalize ] + ifFalse: [ ^ integer normalize ] ] { #category : #encoding } @@ -23,16 +22,14 @@ ASN1IntegerType >> encodeValue: anObject withDERStream: derStream [ | integer | integer := anObject. integer positive - ifTrue: [ - (integer lastDigit allMask: 16r80) - ifTrue: [derStream nextPut: 0]] - ifFalse: [ + ifTrue: [ + (integer lastDigit allMask: 16r80) ifTrue: [ derStream nextPut: 0 ] ] + ifFalse: [ integer := integer negated twosComplement. - (integer lastDigit noMask: 16r80) - ifTrue: [derStream nextPut: 16rFF]]. - integer bytesCount to: 1 by: -1 do: [:digitIndex | - derStream nextPut: (integer byteAt: digitIndex)]. - + (integer lastDigit noMask: 16r80) ifTrue: [ + derStream nextPut: 16rFF ] ]. + integer bytesCount to: 1 by: -1 do: [ :digitIndex | + derStream nextPut: (integer byteAt: digitIndex) ] ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1MappedType.class.st b/source/ASN1-Core/ASN1MappedType.class.st index f1d16f8..fca91d5 100644 --- a/source/ASN1-Core/ASN1MappedType.class.st +++ b/source/ASN1-Core/ASN1MappedType.class.st @@ -16,65 +16,58 @@ ASN1MappedType class >> isAbstract [ { #category : #'accessing - element construction' } ASN1MappedType >> add: aSymbol type: type default: anObject [ - ^(self add: aSymbol type: type) - default: anObject; - yourself. - + ^ (self add: aSymbol type: type) + default: anObject; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> add: aSymbol type: type explicitTag: integer default: anObject [ - ^(self add: aSymbol type: type explicitTag: integer) - default: anObject; - yourself. - + ^ (self add: aSymbol type: type explicitTag: integer) + default: anObject; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> add: aSymbol type: type implicitTag: integer default: anObject [ - ^(self add: aSymbol type: type implicitTag: integer) - default: anObject; - yourself. - + ^ (self add: aSymbol type: type implicitTag: integer) + default: anObject; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> addOptional: aSymbol type: type [ - ^(self add: aSymbol type: type) - optional: true; - yourself. - + ^ (self add: aSymbol type: type) + optional: true; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> addOptional: aSymbol type: type default: anObject [ - ^(self add: aSymbol type: type) - optional: true; - default: anObject; - yourself. - + ^ (self add: aSymbol type: type) + optional: true; + default: anObject; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> addOptional: aSymbol type: type explicitTag: integer [ - ^(self add: aSymbol type: type explicitTag: integer) - optional: true; - yourself. - + ^ (self add: aSymbol type: type explicitTag: integer) + optional: true; + yourself ] { #category : #'accessing - element construction' } ASN1MappedType >> addOptional: aSymbol type: type implicitTag: integer [ - ^(self add: aSymbol type: type implicitTag: integer) - optional: true; - yourself. - + ^ (self add: aSymbol type: type implicitTag: integer) + optional: true; + yourself ] { #category : #decoding } @@ -83,59 +76,56 @@ ASN1MappedType >> decodeValueIndefiniteLengthWithDERStream: derStream [ | target elementStream ele value | target := self mapping new. elementStream := self elements readStream. - [derStream peekTag = 0 - ifTrue: [value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream] - ifFalse: [value := elementStream next decode: target withDERStream: derStream]. - value isKindOf: ASN1EndOfIndefiniteLengthMarker] whileFalse. - [elementStream atEnd] - whileFalse: [ - ele := elementStream next. - ele hasDefault ifTrue: [ele value: ele default into: target]. - ele hasDefaultOrIsOptional - ifFalse: [self error: 'missing element'] ]. + [ + derStream peekTag = 0 + ifTrue: [ + value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: + derStream ] + ifFalse: [ + value := elementStream next decode: target withDERStream: derStream ]. + value isKindOf: ASN1EndOfIndefiniteLengthMarker ] whileFalse. + [ elementStream atEnd ] whileFalse: [ + ele := elementStream next. + ele hasDefault ifTrue: [ ele value: ele default into: target ]. + ele hasDefaultOrIsOptional ifFalse: [ self error: 'missing element' ] ]. ^ target - ] { #category : #decoding } ASN1MappedType >> decodeValueWithDERStream: derStream length: length [ | stopPosition target elementStream ele | - length = -1 - ifTrue: [^ self decodeValueIndefiniteLengthWithDERStream: derStream]. + length = -1 ifTrue: [ + ^ self decodeValueIndefiniteLengthWithDERStream: derStream ]. stopPosition := derStream position + length. target := self mapping new. elementStream := self elements readStream. - [elementStream atEnd or: [derStream position >= stopPosition]] - whileFalse: [ - ele := elementStream next. - ele decode: target withDERStream: derStream]. - [elementStream atEnd] - whileFalse: [ + [ elementStream atEnd or: [ derStream position >= stopPosition ] ] + whileFalse: [ ele := elementStream next. - ele hasDefault ifTrue: [ele value: ele default into: target]. - ele hasDefaultOrIsOptional - ifFalse: [self error: 'missing element'] ]. - derStream position < stopPosition ifTrue: [self error: 'invalid length']. + ele decode: target withDERStream: derStream ]. + [ elementStream atEnd ] whileFalse: [ + ele := elementStream next. + ele hasDefault ifTrue: [ ele value: ele default into: target ]. + ele hasDefaultOrIsOptional ifFalse: [ self error: 'missing element' ] ]. + derStream position < stopPosition ifTrue: [ + self error: 'invalid length' ]. ^ target - ] { #category : #encoding } ASN1MappedType >> encodeValue: anObject withDERStream: derStream [ - self elements do: [:each | - each encode: anObject withDERStream: derStream]. - + self elements do: [ :each | + each encode: anObject withDERStream: derStream ] ] { #category : #testing } ASN1MappedType >> isTypeFor: anObject [ - ^ self mapping notNil - ifTrue: [anObject isKindOf: self mapping] - ifFalse: [anObject asn1Tag = self tag] - + ^ self mapping notNil + ifTrue: [ anObject isKindOf: self mapping ] + ifFalse: [ anObject asn1Tag = self tag ] ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1MappingSubType.class.st b/source/ASN1-Core/ASN1MappingSubType.class.st index fbd143a..8f0718f 100644 --- a/source/ASN1-Core/ASN1MappingSubType.class.st +++ b/source/ASN1-Core/ASN1MappingSubType.class.st @@ -78,8 +78,7 @@ ASN1MappingSubType >> mapping: aClass mappingSymbol: aSymbol type: aType [ self mapping: aClass. self mappingSymbol: aSymbol. - self parent: aType. - + self parent: aType ] { #category : #accessing } @@ -105,5 +104,5 @@ ASN1MappingSubType >> matchesTag: anInteger [ { #category : #accessing } ASN1MappingSubType >> mutator [ - ^(self mappingSymbol copyWith: $:) asSymbol + ^ (self mappingSymbol copyWith: $:) asSymbol ] diff --git a/source/ASN1-Core/ASN1Module.class.st b/source/ASN1-Core/ASN1Module.class.st index a8f23b3..bb8e9b5 100644 --- a/source/ASN1-Core/ASN1Module.class.st +++ b/source/ASN1-Core/ASN1Module.class.st @@ -15,7 +15,7 @@ Class { { #category : #'class initialization' } ASN1Module class >> initialize [ - Modules := Dictionary new. + Modules := Dictionary new ] @@ -37,7 +37,7 @@ ASN1Module class >> name: aSymbol [ name: aSymbol; yourself. self modules at: mod name put: mod. - mod]. + mod] ] @@ -45,72 +45,69 @@ ASN1Module class >> name: aSymbol [ ASN1Module >> add: aType [ | old | - old := self definitions at: aType name ifAbsent: [nil]. + old := self definitions at: aType name ifAbsent: [ nil ]. aType module: self. - old ifNotNil: [old becomeForward: aType]. - ^self definitions at: aType name put: aType. - + old ifNotNil: [ old becomeForward: aType ]. + ^ self definitions at: aType name put: aType ] { #category : #accessing } ASN1Module >> addImport: aModule [ - (self imports includes: aModule) - ifFalse: [self imports add: aModule]. - + (self imports includes: aModule) ifFalse: [ + self imports add: aModule ] ] { #category : #'definitions - mapped' } ASN1Module >> any: aSymbol [ - ^ASN1AnyType name: aSymbol in: self + ^ ASN1AnyType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> any: aSymbol definedBy: slotSymbol [ ^ (ASN1AnyDefinedByType name: aSymbol in: self) - definedBy: slotSymbol; - yourself. - + definedBy: slotSymbol; + yourself ] { #category : #'definitions - mapped' } ASN1Module >> assign: aSymbol from: otherSymbol [ ^ (ASN1AssignmentSubType name: aSymbol in: self) - parent: otherSymbol; - yourself + parent: otherSymbol; + yourself ] { #category : #'definitions - mapped' } ASN1Module >> bitString: aSymbol [ - ^ASN1BitStringType name: aSymbol in: self + ^ ASN1BitStringType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> bmpString: aSymbol [ - ^ASN1BMPStringType name: aSymbol in: self + ^ ASN1BMPStringType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> boolean: aSymbol [ - ^ASN1BooleanType name: aSymbol in: self + ^ ASN1BooleanType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> byteArray: aSymbol [ - ^ASN1ByteArrayType name: aSymbol in: self + ^ ASN1ByteArrayType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> choice: aSymbol [ - ^ASN1ChoiceType name: aSymbol in: self + ^ ASN1ChoiceType name: aSymbol in: self ] { #category : #accessing } @@ -138,10 +135,9 @@ ASN1Module >> enumerated: aSymbol [ ASN1Module >> explicit: aSymbol type: type tag: tag [ ^ (ASN1ExplicitSubType name: aSymbol in: self) - parent: type; - tag: tag; - yourself - + parent: type; + tag: tag; + yourself ] { #category : #services } @@ -154,31 +150,28 @@ ASN1Module >> find: aSymbol [ | type | type := self primitiveTypeFind: aSymbol. - type notNil ifTrue: [^ type]. + type notNil ifTrue: [ ^ type ]. type := self localFind: aSymbol. - type notNil ifTrue: [^ type]. - self imports - do: [:eachImportModule | - type := eachImportModule localFind: aSymbol. - type notNil ifTrue: [^ type]]. - ^ ASN1TypeReference name: aSymbol in: self. - + type notNil ifTrue: [ ^ type ]. + self imports do: [ :eachImportModule | + type := eachImportModule localFind: aSymbol. + type notNil ifTrue: [ ^ type ] ]. + ^ ASN1TypeReference name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> ia5String: aSymbol [ - ^ASN1IA5StringType name: aSymbol in: self + ^ ASN1IA5StringType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> implicit: aSymbol type: type tag: tag [ ^ (ASN1ImplicitSubType name: aSymbol in: self) - parent: type; - tag: tag; - yourself - + parent: type; + tag: tag; + yourself ] { #category : #accessing } @@ -199,8 +192,7 @@ ASN1Module >> imports: anObject [ ASN1Module >> initialize [ self definitions: Dictionary new. - self imports: OrderedCollection new. - + self imports: OrderedCollection new ] { #category : #'definitions - mapped' } @@ -212,10 +204,7 @@ ASN1Module >> integer: aSymbol [ { #category : #services } ASN1Module >> localFind: aSymbol [ - ^ self definitions - at: aSymbol - ifAbsent: [^ nil]. - + ^ self definitions at: aSymbol ifAbsent: [ ^ nil ] ] { #category : #'definitions - mapped' } @@ -241,28 +230,27 @@ ASN1Module >> name: anObject [ { #category : #'definitions - mapped' } ASN1Module >> null: aSymbol [ - ^ASN1NullType name: aSymbol in: self + ^ ASN1NullType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> objectIdentifier: aSymbol [ - ^ASN1ObjectIdentifierType name: aSymbol in: self + ^ ASN1ObjectIdentifierType name: aSymbol in: self ] { #category : #services } ASN1Module >> primitiveTypeFind: aSymbol [ ^ (ASN1Type allSubclasses - detect: [:class | class name asSymbol = aSymbol] - ifNone: [^ nil]) new - + detect: [ :class | class name asSymbol = aSymbol ] + ifNone: [ ^ nil ]) new ] { #category : #'definitions - mapped' } ASN1Module >> printableString: aSymbol [ - ^ASN1PrintableStringType name: aSymbol in: self + ^ ASN1PrintableStringType name: aSymbol in: self ] { #category : #services } @@ -270,43 +258,43 @@ ASN1Module >> remove: aType [ self definitions removeKey: aType name. aType module: nil. - ^aType + ^ aType ] { #category : #'definitions - mapped' } ASN1Module >> sequence: aSymbol [ - ^ASN1SequenceType name: aSymbol in: self + ^ ASN1SequenceType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> sequence: aSymbol mapping: mappingClass [ ^ (ASN1MappedSequenceType name: aSymbol in: self) - mapping: mappingClass; - yourself + mapping: mappingClass; + yourself ] { #category : #'definitions - mapped' } ASN1Module >> sequence: aSymbol of: typeSpec [ ^ (ASN1SequenceOfType name: aSymbol in: self) - elementType: typeSpec; - yourself + elementType: typeSpec; + yourself ] { #category : #'definitions - mapped' } ASN1Module >> set: aSymbol [ - ^ASN1SetType name: aSymbol in: self + ^ ASN1SetType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> set: aSymbol mapping: mappingClass [ ^ (ASN1MappedSetType name: aSymbol in: self) - mapping: mappingClass; - yourself + mapping: mappingClass; + yourself ] { #category : #'definitions - mapped' } @@ -320,31 +308,31 @@ ASN1Module >> set: aSymbol of: typeSpec [ { #category : #'definitions - mapped' } ASN1Module >> teletextString: aSymbol [ - ^ASN1TeletexStringType name: aSymbol in: self + ^ ASN1TeletexStringType name: aSymbol in: self ] { #category : #services } ASN1Module >> typeFrom: aTypeSpec [ - (aTypeSpec isKindOf: ASN1Type) ifTrue: [^ aTypeSpec]. - aTypeSpec isBehavior ifTrue: [^ aTypeSpec new]. - ^self find: aTypeSpec + (aTypeSpec isKindOf: ASN1Type) ifTrue: [ ^ aTypeSpec ]. + aTypeSpec isBehavior ifTrue: [ ^ aTypeSpec new ]. + ^ self find: aTypeSpec ] { #category : #'definitions - mapped' } ASN1Module >> universalString: aSymbol [ - ^ASN1UniversalStringType name: aSymbol in: self + ^ ASN1UniversalStringType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> utcTime: aSymbol [ - ^ASN1UTCTimeType name: aSymbol in: self + ^ ASN1UTCTimeType name: aSymbol in: self ] { #category : #'definitions - mapped' } ASN1Module >> utf8String: aSymbol [ - ^ASN1StringType name: aSymbol in: self + ^ ASN1StringType name: aSymbol in: self ] diff --git a/source/ASN1-Core/ASN1ObjectId.class.st b/source/ASN1-Core/ASN1ObjectId.class.st index ad30cfd..19e1f84 100644 --- a/source/ASN1-Core/ASN1ObjectId.class.st +++ b/source/ASN1-Core/ASN1ObjectId.class.st @@ -19,7 +19,8 @@ ASN1ObjectId class >> fromString: oidString [ { #category : #'private - parsing' } ASN1ObjectId >> = anotherOid [ - ^anotherOid class = self class and: [self oid = anotherOid oid] + + ^ anotherOid class = self class and: [ self oid = anotherOid oid ] ] { #category : #'private - parsing' } @@ -44,7 +45,7 @@ ASN1ObjectId >> asByteArray [ bytes := lengthStream contents reversed. dataStream nextPutAll: bytes ]]. - ^ dataStream contents. + ^ dataStream contents ] @@ -96,7 +97,7 @@ ASN1ObjectId >> initializeDescription [ ASN1ObjectId >> oid [ "Answer the receiver's instance variable oid." - ^oid + ^ oid ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1ObjectIdentifierType.class.st b/source/ASN1-Core/ASN1ObjectIdentifierType.class.st index 47a9899..44cd665 100644 --- a/source/ASN1-Core/ASN1ObjectIdentifierType.class.st +++ b/source/ASN1-Core/ASN1ObjectIdentifierType.class.st @@ -9,17 +9,17 @@ ASN1ObjectIdentifierType >> decodeValueWithDERStream: derStream length: length [ | b oid len | b := derStream next. - oid := ((b // 40) asString) , '.' ,((b rem:40) asString). + oid := (b // 40) asString , '.' , (b rem: 40) asString. len := 0. - 2 to: length do: [:i | + 2 to: length do: [ :i | b := derStream next. - ((b bitAnd: 16r80) = 16r80) - ifTrue: [len := ((len bitShift: 7) + (b bitAnd: 16r7F))] - ifFalse: [ + (b bitAnd: 16r80) = 16r80 + ifTrue: [ len := (len bitShift: 7) + (b bitAnd: 16r7F) ] + ifFalse: [ len := (len bitShift: 7) + b. - oid := oid , '.', (len asString). - len := 0]]. - ^ ASN1ObjectId fromString: oid. + oid := oid , '.' , len asString. + len := 0 ] ]. + ^ ASN1ObjectId fromString: oid ] { #category : #encoding } @@ -54,8 +54,7 @@ ASN1ObjectIdentifierType >> isTypeFor: anObject [ { #category : #encoding } ASN1ObjectIdentifierType >> sizeOfObject: anObject [ - ^ anObject asByteArray size. - + ^ anObject asByteArray size ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1OctetsType.class.st b/source/ASN1-Core/ASN1OctetsType.class.st index 32f0af2..706a6ab 100644 --- a/source/ASN1-Core/ASN1OctetsType.class.st +++ b/source/ASN1-Core/ASN1OctetsType.class.st @@ -28,11 +28,14 @@ ASN1OctetsType >> decodeValueIndefiniteLengthWithDERStream: derStream [ | octets value | octets := self octetsClass new. - [derStream peekTag = 0 - ifTrue: [value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream] - ifFalse: [value := self decodeWithDERStream: derStream]. - value isKindOf: ASN1EndOfIndefiniteLengthMarker] whileFalse: [ - octets := octets, value]. + [ + derStream peekTag = 0 + ifTrue: [ + value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: + derStream ] + ifFalse: [ value := self decodeWithDERStream: derStream ]. + value isKindOf: ASN1EndOfIndefiniteLengthMarker ] whileFalse: [ + octets := octets , value ]. ^ octets ] @@ -42,16 +45,18 @@ ASN1OctetsType >> decodeWithDERStream: derStream [ | tag numericTag object | tag := derStream peekTag. numericTag := tag bitAnd: 2r00011111. - numericTag = (self asn1Tag bitAnd: 2r00011111) - ifFalse: [self error: 'asn1 decoder: bad tag']. + numericTag = (self asn1Tag bitAnd: 2r00011111) ifFalse: [ + self error: 'asn1 decoder: bad tag' ]. derStream nextTag. (tag bitAnd: 2r00100000) > 0 - ifTrue: [object := self - decodeConstructedValueWithDERStream: derStream - length: derStream nextLength] - ifFalse: [object := self - decodeValueWithDERStream: derStream - length: derStream nextLength]. + ifTrue: [ + object := self + decodeConstructedValueWithDERStream: derStream + length: derStream nextLength ] + ifFalse: [ + object := self + decodeValueWithDERStream: derStream + length: derStream nextLength ]. ^ object ] diff --git a/source/ASN1-Core/ASN1Pragma.class.st b/source/ASN1-Core/ASN1Pragma.class.st index 020039f..e3abe31 100644 --- a/source/ASN1-Core/ASN1Pragma.class.st +++ b/source/ASN1-Core/ASN1Pragma.class.st @@ -25,9 +25,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI { #category : #'instance creation' } ASN1Pragma class >> fromPragma: aPragma [ + | aClass | - aClass := (self isAccessorPragma: aPragma) ifTrue: [ASN1PragmaAccessor] ifFalse: [ASN1PragmaMutator]. - ^aClass fromPragma: aPragma + aClass := (self isAccessorPragma: aPragma) + ifTrue: [ ASN1PragmaAccessor ] + ifFalse: [ ASN1PragmaMutator ]. + ^ aClass fromPragma: aPragma ] { #category : #testing } @@ -38,7 +41,8 @@ ASN1Pragma class >> isAbstract [ { #category : #'instance creation' } ASN1Pragma class >> isAccessorPragma: aPragma [ - ^aPragma keyword = #asn1FieldAccessor: + + ^ aPragma keyword = #asn1FieldAccessor: ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1Stream.class.st b/source/ASN1-Core/ASN1Stream.class.st index bfc3c80..ea7a7f7 100644 --- a/source/ASN1-Core/ASN1Stream.class.st +++ b/source/ASN1-Core/ASN1Stream.class.st @@ -65,14 +65,14 @@ ASN1Stream class >> initializeTagToTypeDispatchTable [ { #category : #'instance creation' } ASN1Stream class >> new [ - ^ self onStream: (ByteArray new: 100) writeStream. + ^ self onStream: (ByteArray new: 100) writeStream ] { #category : #'instance creation' } ASN1Stream class >> onBytes: bytes [ - ^ self onStream: bytes readStream. + ^ self onStream: bytes readStream ] @@ -81,16 +81,16 @@ ASN1Stream class >> onStream: aStream [ ^ super new stream: aStream; - yourself. + yourself ] { #category : #'class initialization' } ASN1Stream class >> tagToTypeDispatchTable [ - TagToTypeDispatchTable isNil ifTrue: [self initializeTagToTypeDispatchTable]. + TagToTypeDispatchTable isNil ifTrue: [ + self initializeTagToTypeDispatchTable ]. ^ TagToTypeDispatchTable - ] { #category : #'stream - api' } @@ -128,19 +128,18 @@ ASN1Stream >> decode [ tagClass := tag bitAnd: 2r11000000. isConstructed := (tag bitAnd: 2r00100000) > 0. tagClass > 0 - ifTrue: [isConstructed - ifTrue: [type := ASN1WrapperConstructedType new] - ifFalse: [type := ASN1WrapperPrimitiveType new]] - ifFalse: [type := self class tagToTypeDispatchTable at: numericTag]. - ^ self decodeWithType: type. - + ifTrue: [ + isConstructed + ifTrue: [ type := ASN1WrapperConstructedType new ] + ifFalse: [ type := ASN1WrapperPrimitiveType new ] ] + ifFalse: [ type := self class tagToTypeDispatchTable at: numericTag ]. + ^ self decodeWithType: type ] { #category : #decoding } ASN1Stream >> decodeWithType: type [ - ^ type decodeWithDERStream: self. - + ^ type decodeWithDERStream: self ] { #category : #encoding } @@ -152,12 +151,12 @@ ASN1Stream >> encode: anObject [ tagClass := tag bitAnd: 2r11000000. isConstructed := (tag bitAnd: 2r00100000) > 0. tagClass > 0 - ifTrue: [isConstructed - ifTrue: [type := ASN1WrapperConstructedType new] - ifFalse: [type := ASN1WrapperPrimitiveType new]] - ifFalse: [type := self class tagToTypeDispatchTable at: numericTag]. - ^ self encode: anObject withType: type. - + ifTrue: [ + isConstructed + ifTrue: [ type := ASN1WrapperConstructedType new ] + ifFalse: [ type := ASN1WrapperPrimitiveType new ] ] + ifFalse: [ type := self class tagToTypeDispatchTable at: numericTag ]. + ^ self encode: anObject withType: type ] { #category : #encoding } @@ -165,7 +164,6 @@ ASN1Stream >> encode: anObject withType: type [ type encode: anObject withDERStream: self. ^ self contents - ] { #category : #'stream - api' } @@ -191,16 +189,14 @@ ASN1Stream >> nextLength [ | tag val | tag := self stream next. - tag = 2r10000000 - ifTrue: [^ -1]. - ((tag bitAnd: 2r10000000) > 0) - ifTrue: [ + tag = 2r10000000 ifTrue: [ ^ -1 ]. + (tag bitAnd: 2r10000000) > 0 + ifTrue: [ val := 0. - (tag bitClear: 2r10000000) timesRepeat: [ - val := (val bitShift: 8) + self stream next]. - ^ val] - ifFalse: [^ tag]. - + (tag bitClear: 2r10000000) timesRepeat: [ + val := (val bitShift: 8) + self stream next ]. + ^ val ] + ifFalse: [ ^ tag ] ] { #category : #'stream - api' } @@ -218,21 +214,19 @@ ASN1Stream >> nextPutAll: bytes [ { #category : #'stream - api' } ASN1Stream >> nextPutLength: size [ - size <= 127 - ifTrue: [self nextPut: size] - ifFalse: [ - self nextPut: ((size bytesCount) bitOr: 16r80). - size bytesCount to: 1 by: -1 do: [:digitIndex | - self nextPut: (size byteAt: digitIndex)]] - + size <= 127 + ifTrue: [ self nextPut: size ] + ifFalse: [ + self nextPut: (size bytesCount bitOr: 16r80). + size bytesCount to: 1 by: -1 do: [ :digitIndex | + self nextPut: (size byteAt: digitIndex) ] ] ] { #category : #'stream - api' } ASN1Stream >> nextPutTag: tag [ "It's not clear how to encode a tag whose numerical value is greater than 30" - self nextPut: tag. - + self nextPut: tag ] { #category : #'stream - api' } @@ -240,14 +234,12 @@ ASN1Stream >> nextTag [ | tag octet | tag := self stream next. - ((tag bitAnd: 2r00011111) == 2r00011111) - ifTrue: [ - tag := 0. - [ - octet := self stream next. - tag := (tag bitShift: 7) bitOr: (octet bitClear: 2r10000000). - (octet bitAnd: 2r10000000) > 0] - whileTrue]. + (tag bitAnd: 2r00011111) == 2r00011111 ifTrue: [ + tag := 0. + [ + octet := self stream next. + tag := (tag bitShift: 7) bitOr: (octet bitClear: 2r10000000). + (octet bitAnd: 2r10000000) > 0 ] whileTrue ]. self currentTag: tag. ^ tag ] @@ -257,7 +249,7 @@ ASN1Stream >> peekTag [ | start | start := self position. - ^[self nextTag] ensure: [self position: start] + ^ [ self nextTag ] ensure: [ self position: start ] ] { #category : #'stream - api' } diff --git a/source/ASN1-Core/ASN1StringType.class.st b/source/ASN1-Core/ASN1StringType.class.st index 1a80545..7ff7c69 100644 --- a/source/ASN1-Core/ASN1StringType.class.st +++ b/source/ASN1-Core/ASN1StringType.class.st @@ -7,8 +7,7 @@ Class { { #category : #decoding } ASN1StringType >> decodeValueWithDERStream: derStream length: length [ - ^(derStream next: length) asByteArray asString. - + ^ (derStream next: length) asByteArray asString ] { #category : #encoding } @@ -32,8 +31,7 @@ ASN1StringType >> octetsClass [ { #category : #encoding } ASN1StringType >> sizeOfObject: anObject [ - ^ anObject size. - + ^ anObject size ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1StructureElement.class.st b/source/ASN1-Core/ASN1StructureElement.class.st index c727c24..e1eb2c7 100644 --- a/source/ASN1-Core/ASN1StructureElement.class.st +++ b/source/ASN1-Core/ASN1StructureElement.class.st @@ -12,24 +12,23 @@ Class { ASN1StructureElement >> decode: aTarget withDERStream: derStream [ | tag val | - derStream atEnd ifTrue: [ - self hasDefault ifTrue: [^self value: self default into: aTarget]. - self isOptional ifTrue: [^self]. - ^ self error: 'missing element']. + derStream atEnd ifTrue: [ + self hasDefault ifTrue: [ ^ self value: self default into: aTarget ]. + self isOptional ifTrue: [ ^ self ]. + ^ self error: 'missing element' ]. tag := derStream peekTag. (self matchesTag: tag) - ifTrue: [ - val := type - decodeWithDERStream: derStream - owner: aTarget - ownerType: self owner. + ifTrue: [ + val := type + decodeWithDERStream: derStream + owner: aTarget + ownerType: self owner. self value: val into: aTarget. ^ val ] - ifFalse: [ - self hasDefault ifTrue: [^self value: self default into: aTarget]. - self isOptional ifTrue: [^self]. - ^ self error: 'missing element']. - + ifFalse: [ + self hasDefault ifTrue: [ ^ self value: self default into: aTarget ]. + self isOptional ifTrue: [ ^ self ]. + ^ self error: 'missing element' ] ] { #category : #accessing } @@ -51,16 +50,13 @@ ASN1StructureElement >> encode: anObject withDERStream: derStream [ | val | val := self valueFrom: anObject. - (val == nil and: [self isOptional]) - ifTrue: [^self]. - (self hasDefault and: [self default = val]) - ifTrue: [^self]. - self type - encode: val + (val == nil and: [ self isOptional ]) ifTrue: [ ^ self ]. + (self hasDefault and: [ self default = val ]) ifTrue: [ ^ self ]. + self type + encode: val withDERStream: derStream - owner: anObject - ownerType: self owner. - + owner: anObject + ownerType: self owner ] { #category : #testing } @@ -78,7 +74,7 @@ ASN1StructureElement >> hasDefaultOrIsOptional [ { #category : #'initialize-release' } ASN1StructureElement >> initialize [ - self optional: false. + self optional: false ] { #category : #testing } diff --git a/source/ASN1-Core/ASN1StructuredType.class.st b/source/ASN1-Core/ASN1StructuredType.class.st index a9ea8eb..a11b4fe 100644 --- a/source/ASN1-Core/ASN1StructuredType.class.st +++ b/source/ASN1-Core/ASN1StructuredType.class.st @@ -25,19 +25,17 @@ ASN1StructuredType >> add: aSymbol type: type [ { #category : #'accessing - element construction' } ASN1StructuredType >> add: aSymbol type: type explicitTag: integer [ - ^(self add: aSymbol type: type) - explicitTag: integer; - yourself. - + ^ (self add: aSymbol type: type) + explicitTag: integer; + yourself ] { #category : #'accessing - element construction' } ASN1StructuredType >> add: aSymbol type: type implicitTag: integer [ - ^(self add: aSymbol type: type) - implicitTag: integer; - yourself. - + ^ (self add: aSymbol type: type) + implicitTag: integer; + yourself ] { #category : #private } @@ -45,16 +43,15 @@ ASN1StructuredType >> addElement: element [ self elements addLast: element. element addedTo: self. - ^element + ^ element ] { #category : #accessing } ASN1StructuredType >> elementWithSymbol: aSymbol [ ^ self elements - detect: [:each | each symbol == aSymbol] - ifNone: [self error: 'no element specified in structured type']. - + detect: [ :each | each symbol == aSymbol ] + ifNone: [ self error: 'no element specified in structured type' ] ] { #category : #accessing } @@ -81,8 +78,7 @@ ASN1StructuredType >> hasElements [ ASN1StructuredType >> initialize [ super initialize. - self elements: (OrderedCollection new: 5). - + self elements: (OrderedCollection new: 5) ] { #category : #private } diff --git a/source/ASN1-Core/ASN1Type.class.st b/source/ASN1-Core/ASN1Type.class.st index 087639f..d8e49eb 100644 --- a/source/ASN1-Core/ASN1Type.class.st +++ b/source/ASN1-Core/ASN1Type.class.st @@ -27,20 +27,17 @@ ASN1Type >> decodeWithDERStream: derStream [ | tag | tag := derStream nextTag. - (self matchesTag: tag) - ifFalse: [self error: 'asn1 decoder: bad tag']. - ^ self - decodeValueWithDERStream: derStream - length: derStream nextLength. - - + (self matchesTag: tag) ifFalse: [ + self error: 'asn1 decoder: bad tag' ]. + ^ self + decodeValueWithDERStream: derStream + length: derStream nextLength ] { #category : #decoding } ASN1Type >> decodeWithDERStream: derStream owner: owner ownerType: ownerType [ - ^ self decodeWithDERStream: derStream. - + ^ self decodeWithDERStream: derStream ] { #category : #encoding } @@ -52,7 +49,6 @@ ASN1Type >> encode: anObject withDERStream: derStream [ derStream nextPutLength: size. self encodeValue: anObject withDERStream: derStream. ^ derStream - ] { #category : #encoding } diff --git a/source/ASN1-Core/ASN1UTCTimeType.class.st b/source/ASN1-Core/ASN1UTCTimeType.class.st index f66ec55..ad8e047 100644 --- a/source/ASN1-Core/ASN1UTCTimeType.class.st +++ b/source/ASN1-Core/ASN1UTCTimeType.class.st @@ -25,16 +25,14 @@ ASN1UTCTimeType >> decodeValueWithDERStream: derStream length: length [ ASN1UTCTimeType >> encodeValue: anObject withDERStream: derStream [ | yy mo dd hh mm ss utcDateTime | - yy := anObject year asString copyFrom: 3 to: 4. - mo := anObject month asString padded: #left to: 2 with: $0. - dd := anObject dayOfMonth asString padded: #left to: 2 with: $0. - hh := anObject hour asString padded: #left to: 2 with: $0. - mm := anObject minute asString padded: #left to: 2 with: $0. - ss := anObject seconds asString padded: #left to: 2 with: $0. - utcDateTime := (yy, mo, dd, hh, mm, ss, 'Z') asByteArray. - derStream nextPutAll: utcDateTime. - - + yy := anObject year asString copyFrom: 3 to: 4. + mo := anObject month asString padded: #left to: 2 with: $0. + dd := anObject dayOfMonth asString padded: #left to: 2 with: $0. + hh := anObject hour asString padded: #left to: 2 with: $0. + mm := anObject minute asString padded: #left to: 2 with: $0. + ss := anObject seconds asString padded: #left to: 2 with: $0. + utcDateTime := (yy , mo , dd , hh , mm , ss , 'Z') asByteArray. + derStream nextPutAll: utcDateTime ] { #category : #testing } @@ -46,8 +44,7 @@ ASN1UTCTimeType >> isTypeFor: anObject [ { #category : #encoding } ASN1UTCTimeType >> sizeOfObject: anObject [ - ^ 13. - + ^ 13 ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1UnmappedType.class.st b/source/ASN1-Core/ASN1UnmappedType.class.st index aab3f5b..feea4ea 100644 --- a/source/ASN1-Core/ASN1UnmappedType.class.st +++ b/source/ASN1-Core/ASN1UnmappedType.class.st @@ -15,32 +15,33 @@ ASN1UnmappedType >> decodeValueIndefiniteLengthWithDERStream: derStream [ | coll value | coll := self containerClass new. - [derStream peekTag = 0 - ifTrue: [value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream] - ifFalse: [value := derStream decode]. - value isKindOf: ASN1EndOfIndefiniteLengthMarker] - whileFalse: [coll add: value]. - ^coll + [ + derStream peekTag = 0 + ifTrue: [ + value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: + derStream ] + ifFalse: [ value := derStream decode ]. + value isKindOf: ASN1EndOfIndefiniteLengthMarker ] whileFalse: [ + coll add: value ]. + ^ coll ] { #category : #decoding } ASN1UnmappedType >> decodeValueWithDERStream: derStream length: length [ | coll end obj | - length = -1 - ifTrue: [^ self decodeValueIndefiniteLengthWithDERStream: derStream]. + length = -1 ifTrue: [ + ^ self decodeValueIndefiniteLengthWithDERStream: derStream ]. coll := self containerClass new. end := derStream position + length. - [derStream position < end ] whileTrue: [ + [ derStream position < end ] whileTrue: [ obj := derStream decode. - coll add: obj]. - ^coll + coll add: obj ]. + ^ coll ] { #category : #encoding } ASN1UnmappedType >> encodeValue: anObject withDERStream: derStream [ - anObject do: [:each | - derStream encode: each]. - + anObject do: [ :each | derStream encode: each ] ] diff --git a/source/ASN1-Core/ASN1UnstructuredType.class.st b/source/ASN1-Core/ASN1UnstructuredType.class.st index 14233ab..765a086 100644 --- a/source/ASN1-Core/ASN1UnstructuredType.class.st +++ b/source/ASN1-Core/ASN1UnstructuredType.class.st @@ -18,26 +18,29 @@ ASN1UnstructuredType >> decodeValueIndefiniteLengthWithDERStream: derStream [ | coll value | coll := self containerClass new. - [derStream peekTag = 0 - ifTrue: [value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream] - ifFalse: [value := self elementType decodeWithDERStream: derStream]. - value isKindOf: ASN1EndOfIndefiniteLengthMarker] - whileFalse: [coll add: value]. - ^coll + [ + derStream peekTag = 0 + ifTrue: [ + value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: + derStream ] + ifFalse: [ value := self elementType decodeWithDERStream: derStream ]. + value isKindOf: ASN1EndOfIndefiniteLengthMarker ] whileFalse: [ + coll add: value ]. + ^ coll ] { #category : #decoding } ASN1UnstructuredType >> decodeValueWithDERStream: derStream length: length [ | coll end obj | - length = -1 - ifTrue: [^ self decodeValueIndefiniteLengthWithDERStream: derStream]. + length = -1 ifTrue: [ + ^ self decodeValueIndefiniteLengthWithDERStream: derStream ]. coll := self containerClass new. end := derStream position + length. - [derStream position < end ] whileTrue: [ + [ derStream position < end ] whileTrue: [ obj := self elementType decodeWithDERStream: derStream. - coll add: obj]. - ^coll + coll add: obj ]. + ^ coll ] { #category : #accessing } diff --git a/source/ASN1-Core/ASN1WrappedStringType.class.st b/source/ASN1-Core/ASN1WrappedStringType.class.st index 0018b08..c3ec428 100644 --- a/source/ASN1-Core/ASN1WrappedStringType.class.st +++ b/source/ASN1-Core/ASN1WrappedStringType.class.st @@ -15,8 +15,7 @@ ASN1WrappedStringType >> decodeValueWithDERStream: derStream length: length [ | string | string := (derStream next: length) asByteArray asString. - ^ self wrapperClass fromString: string. - + ^ self wrapperClass fromString: string ] { #category : #encoding } @@ -34,6 +33,5 @@ ASN1WrappedStringType >> octetsClass [ { #category : #encoding } ASN1WrappedStringType >> sizeOfObject: anObject [ - ^ anObject string size. - + ^ anObject string size ] diff --git a/source/ASN1-Core/ASN1WrapperConstructedType.class.st b/source/ASN1-Core/ASN1WrapperConstructedType.class.st index 7f9415d..c598770 100644 --- a/source/ASN1-Core/ASN1WrapperConstructedType.class.st +++ b/source/ASN1-Core/ASN1WrapperConstructedType.class.st @@ -12,15 +12,14 @@ ASN1WrapperConstructedType >> decodeValueIndefiniteLengthWithDERStream: derStrea contextValue tagIndex: (derStream currentTag bitAnd: 2r00011111). contextValue tagIsPrimitive: false. sequence := OrderedCollection new. - [derStream peekTag = 0 - ifTrue: [value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream] - ifFalse: [value := derStream decode]. - value isKindOf: ASN1EndOfIndefiniteLengthMarker] - whileFalse: [sequence add: value]. + [ + derStream peekTag = 0 + ifTrue: [ value := ASN1EndOfIndefiniteLengthType new decodeWithDERStream: derStream ] + ifFalse: [ value := derStream decode ]. + value isKindOf: ASN1EndOfIndefiniteLengthMarker ] whileFalse: [ + sequence add: value ]. contextValue tagValue: sequence. - ^contextValue - - + ^ contextValue ] { #category : #decoding } @@ -45,10 +44,7 @@ ASN1WrapperConstructedType >> decodeValueWithDERStream: derStream length: length { #category : #encoding } ASN1WrapperConstructedType >> encodeValue: anObject withDERStream: derStream [ - anObject tagValue do: [:each | - derStream encode: each]. - - + anObject tagValue do: [ :each | derStream encode: each ] ] { #category : #encoding } diff --git a/source/ASN1-Core/Boolean.extension.st b/source/ASN1-Core/Boolean.extension.st index d4e6260..7343891 100644 --- a/source/ASN1-Core/Boolean.extension.st +++ b/source/ASN1-Core/Boolean.extension.st @@ -3,8 +3,7 @@ Extension { #name : #Boolean } { #category : #'*ASN1-Core' } Boolean >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/DSAPublicKey.extension.st b/source/ASN1-Core/DSAPublicKey.extension.st index b936a4e..2d22e5f 100644 --- a/source/ASN1-Core/DSAPublicKey.extension.st +++ b/source/ASN1-Core/DSAPublicKey.extension.st @@ -4,12 +4,13 @@ Extension { #name : #DSAPublicKey } DSAPublicKey >> asAsn1Bytes [ | algorithm keyInfo | - algorithm := OrderedCollection - with: (ASN1ObjectId fromString: '1.2.840.10040.4.1') - with: self dssSig. - keyInfo := OrderedCollection with: algorithm with: self subjectPublicKey. - ^ keyInfo asAsn1Bytes. - + algorithm := OrderedCollection + with: (ASN1ObjectId fromString: '1.2.840.10040.4.1') + with: self dssSig. + keyInfo := OrderedCollection + with: algorithm + with: self subjectPublicKey. + ^ keyInfo asAsn1Bytes ] { #category : #'*ASN1-Core' } @@ -24,7 +25,7 @@ DSAPublicKey class >> fromAsnDerBytes: bytes [ q := dssSig at: 2. g := dssSig at: 3. y := ASN1Stream decodeBytes: collection last bytes. - ^ DSAPublicKey p: p q: q g: g y: y. + ^ DSAPublicKey p: p q: q g: g y: y ] diff --git a/source/ASN1-Core/DateAndTime.extension.st b/source/ASN1-Core/DateAndTime.extension.st index 94e16ed..ac48702 100644 --- a/source/ASN1-Core/DateAndTime.extension.st +++ b/source/ASN1-Core/DateAndTime.extension.st @@ -3,8 +3,7 @@ Extension { #name : #DateAndTime } { #category : #'*ASN1-Core' } DateAndTime >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/HashFunction.extension.st b/source/ASN1-Core/HashFunction.extension.st index 4399520..ce36cda 100644 --- a/source/ASN1-Core/HashFunction.extension.st +++ b/source/ASN1-Core/HashFunction.extension.st @@ -9,22 +9,21 @@ HashFunction class >> digestInfoAsn1DerEncodingFromMessage: msg [ { #category : #'*ASN1-Core' } HashFunction class >> digestInfoFromMessage: msg [ - ^ (OrderedCollection - with: (OrderedCollection with: self oid with: nil) - with: (self hashMessage: msg)) - + ^ OrderedCollection + with: (OrderedCollection with: self oid with: nil) + with: (self hashMessage: msg) ] { #category : #'*ASN1-Core' } -HashFunction class >> doubleHashMessage: aStringOrByteArray [ +HashFunction class >> doubleHashMessage: aStringOrByteArray [ + ^ self new doubleHashMessage: aStringOrByteArray ] { #category : #'*ASN1-Core' } HashFunction class >> oid [ - ^ ASN1ObjectId fromString: self oidString. - + ^ ASN1ObjectId fromString: self oidString ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/Integer.extension.st b/source/ASN1-Core/Integer.extension.st index 7ec6e0d..f4d3b58 100644 --- a/source/ASN1-Core/Integer.extension.st +++ b/source/ASN1-Core/Integer.extension.st @@ -3,8 +3,7 @@ Extension { #name : #Integer } { #category : #'*ASN1-Core' } Integer >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/ReadStream.extension.st b/source/ASN1-Core/ReadStream.extension.st index 94d3fc0..065085a 100644 --- a/source/ASN1-Core/ReadStream.extension.st +++ b/source/ASN1-Core/ReadStream.extension.st @@ -1,27 +1,32 @@ Extension { #name : #ReadStream } { #category : #'*ASN1-Core' } -ReadStream >> formatASN1TabLevel: aTabLevel [ +ReadStream >> formatASN1TabLevel: aTabLevel [ + | result tag aString size tabs sizeAndBytes bytes | - self atEnd - ifTrue: [^ String new]. - tabs := ((1 to: aTabLevel) - collect: [:i | '.' , String tab]) merge. + self atEnd ifTrue: [ ^ String new ]. + tabs := ((1 to: aTabLevel) collect: [ :i | '.' , String tab ]) merge. result := tabs , (tag := self next) , String tab. sizeAndBytes := tag = '00' - ifTrue: [(Number readFrom: (bytes := self next: 2) merge asUppercase base: 16) -> bytes merge] - ifFalse: [Integer asnDerLengthFromHexStreamWithBytes: self]. + ifTrue: [ + (Number + readFrom: + (bytes := self next: 2) merge asUppercase + base: 16) -> bytes merge ] + ifFalse: [ + Integer asnDerLengthFromHexStreamWithBytes: self ]. size := sizeAndBytes key. aString := (self next: size) merge. - aString isEmpty - ifTrue: [aString := String new]. - (tag = '30' - or: [tag = '31' - or: [tag first asLowercase = $a or: [tag = '00']]]) - ifTrue: [result := result , sizeAndBytes value , ' (' , size asString , '): ' , String cr - , (aString formatASN1TabLevel: aTabLevel + 1)] - ifFalse: [result := result , sizeAndBytes value , ' (' , size asString , '): ' , String cr , tabs , String tab , aString , String cr - , (self formatASN1TabLevel: aTabLevel)]. - ^ result - , (self formatASN1TabLevel: aTabLevel) + aString isEmpty ifTrue: [ aString := String new ]. + (tag = '30' or: [ + tag = '31' or: [ tag first asLowercase = $a or: [ tag = '00' ] ] ]) + ifTrue: [ + result := result , sizeAndBytes value , ' (' , size asString + , '): ' , String cr + , (aString formatASN1TabLevel: aTabLevel + 1) ] + ifFalse: [ + result := result , sizeAndBytes value , ' (' , size asString + , '): ' , String cr , tabs , String tab , aString + , String cr , (self formatASN1TabLevel: aTabLevel) ]. + ^ result , (self formatASN1TabLevel: aTabLevel) ] diff --git a/source/ASN1-Core/SequenceableCollection.extension.st b/source/ASN1-Core/SequenceableCollection.extension.st index f6fd8c9..8057a4d 100644 --- a/source/ASN1-Core/SequenceableCollection.extension.st +++ b/source/ASN1-Core/SequenceableCollection.extension.st @@ -3,8 +3,7 @@ Extension { #name : #SequenceableCollection } { #category : #'*ASN1-Core' } SequenceableCollection >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/Set.extension.st b/source/ASN1-Core/Set.extension.st index add45c0..815ae8e 100644 --- a/source/ASN1-Core/Set.extension.st +++ b/source/ASN1-Core/Set.extension.st @@ -3,8 +3,7 @@ Extension { #name : #Set } { #category : #'*ASN1-Core' } Set >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } diff --git a/source/ASN1-Core/UndefinedObject.extension.st b/source/ASN1-Core/UndefinedObject.extension.st index 609a04c..d946549 100644 --- a/source/ASN1-Core/UndefinedObject.extension.st +++ b/source/ASN1-Core/UndefinedObject.extension.st @@ -3,8 +3,7 @@ Extension { #name : #UndefinedObject } { #category : #'*ASN1-Core' } UndefinedObject >> asAsn1Bytes [ - ^ ASN1Stream encode: self. - + ^ ASN1Stream encode: self ] { #category : #'*ASN1-Core' } From 1a43988353688c227021fb64ea2fa6f1ecb6639b Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:37:06 +0200 Subject: [PATCH 10/36] Cleanup dots at end of method and formatting (for ASN1-Readers package) --- source/ASN1-Readers/DSAPrivateKeyFileReader.class.st | 2 +- source/ASN1-Readers/RSAPrivateKeyFileReader.class.st | 2 +- source/ASN1-Readers/RSAPublicKeyFileReader.class.st | 2 +- source/ASN1-Readers/X509CertificateDerReader.class.st | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st index 3ad8e34..6b83d72 100644 --- a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st @@ -18,7 +18,7 @@ DSAPrivateKeyFileReader class >> fromFile: filename [ | fs data | fs := StandardFileStream fileNamed: filename. data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data. + ^ self new initializeFromFileContents: data ] diff --git a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st index 3d8d37c..50a569a 100644 --- a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st @@ -18,7 +18,7 @@ RSAPrivateKeyFileReader class >> fromFile: filename [ | fs data | fs := StandardFileStream fileNamed: filename. data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data. + ^ self new initializeFromFileContents: data ] diff --git a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st index 9d87c1c..ac20059 100644 --- a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st @@ -15,7 +15,7 @@ RSAPublicKeyFileReader class >> fromFile: filename [ | fs data | fs := StandardFileStream fileNamed: filename. data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data. + ^ self new initializeFromFileContents: data ] diff --git a/source/ASN1-Readers/X509CertificateDerReader.class.st b/source/ASN1-Readers/X509CertificateDerReader.class.st index 7be9615..b0e8914 100644 --- a/source/ASN1-Readers/X509CertificateDerReader.class.st +++ b/source/ASN1-Readers/X509CertificateDerReader.class.st @@ -26,7 +26,7 @@ X509CertificateDerReader class >> fromFile: filename [ | fs data | fs := StandardFileStream fileNamed: filename. data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data. + ^ self new initializeFromFileContents: data ] From ed70d1770c00dbea29198fe8fd6e2cfcf8e4e749 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:37:18 +0200 Subject: [PATCH 11/36] Cleanup dots at end of method and formatting (for ASN1-Readers-Tests package) --- .../ASN1-Readers-Tests/CryptoRSATest.class.st | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/source/ASN1-Readers-Tests/CryptoRSATest.class.st b/source/ASN1-Readers-Tests/CryptoRSATest.class.st index 46e5c70..8049472 100644 --- a/source/ASN1-Readers-Tests/CryptoRSATest.class.st +++ b/source/ASN1-Readers-Tests/CryptoRSATest.class.st @@ -13,7 +13,7 @@ CryptoRSATest >> derKeys [ | key64 | key64 := self encodedBase64Keys. - ^key64 base64Decoded + ^ key64 base64Decoded ] { #category : #RSA } @@ -35,41 +35,44 @@ jcosTQvBjrc//rCnb2Pgm8QRGeN/CXKc9kKoWNqUQSYchQ== MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkI45GM6mYLlbxrKozE6bXWMox vtVuIWOIF1KcGLED+4GipriwNt0hkosuil513/CMjn9XBSZtaSsiIOLkXLZtbKYh ATtvODR1nD/dl0JpFH7BLcD9NGGRKOow0jg8fcPtXhLTy6Dsl7rfmVPJYuc4IlzZ -ImTdErllmhzrTKT3YQIDAQAB'. +ImTdErllmhzrTKT3YQIDAQAB' ] { #category : #tests } CryptoRSATest >> genericRSATest: bits [ + | generator public private msg c | generator := RSAKeyPairGenerator new bits: bits. public := generator publicKey. "this may take a while" private := generator privateKey. msg := 1234567890987654321. "the plaintext" - -c := public crypt: msg. "the ciphertext (print it and take a look)" + + c := public crypt: msg. "the ciphertext (print it and take a look)" self assert: (private crypt: c) = msg ] { #category : #running } CryptoRSATest >> setUp [ + | reader | super setUp. - + reader := RSAPrivateKeyFileReader new. reader decryptedBytes: self derKeys. privateKey := reader asPrivateKey. - publicKey := reader asPublicKey. - + publicKey := reader asPublicKey ] { #category : #tests } CryptoRSATest >> testRSA128 [ + self genericRSATest: 128 ] { #category : #tests } CryptoRSATest >> testRSA64 [ + self genericRSATest: 64 ] @@ -77,9 +80,8 @@ CryptoRSATest >> testRSA64 [ CryptoRSATest >> testRSASHASignVerification [ | signBytes | - - signBytes := privateKey v15SignMessage: 'hello'. - + signBytes := privateKey v15SignMessage: 'hello'. + self assert: (publicKey v15Verify: signBytes isSignatureOf: 'hello') ] From 675c25bf731e8155a2d3143a4bb629fdbf1efddf Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:38:48 +0200 Subject: [PATCH 12/36] Rename ASN1-Tests into ASN1-Core-Tests --- source/{ASN1-Tests => ASN1-Core-Tests}/ASN1TestModel.class.st | 2 +- source/{ASN1-Tests => ASN1-Core-Tests}/CryptoASN1Test.class.st | 2 +- source/ASN1-Core-Tests/package.st | 1 + source/ASN1-Tests/package.st | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) rename source/{ASN1-Tests => ASN1-Core-Tests}/ASN1TestModel.class.st (94%) rename source/{ASN1-Tests => ASN1-Core-Tests}/CryptoASN1Test.class.st (99%) create mode 100644 source/ASN1-Core-Tests/package.st delete mode 100644 source/ASN1-Tests/package.st diff --git a/source/ASN1-Tests/ASN1TestModel.class.st b/source/ASN1-Core-Tests/ASN1TestModel.class.st similarity index 94% rename from source/ASN1-Tests/ASN1TestModel.class.st rename to source/ASN1-Core-Tests/ASN1TestModel.class.st index 6f3ecb8..ea3e7c1 100644 --- a/source/ASN1-Tests/ASN1TestModel.class.st +++ b/source/ASN1-Core-Tests/ASN1TestModel.class.st @@ -5,7 +5,7 @@ Class { 'testSlot1', 'testSlot2' ], - #category : 'ASN1-Tests' + #category : #'ASN1-Core-Tests' } { #category : #accessing } diff --git a/source/ASN1-Tests/CryptoASN1Test.class.st b/source/ASN1-Core-Tests/CryptoASN1Test.class.st similarity index 99% rename from source/ASN1-Tests/CryptoASN1Test.class.st rename to source/ASN1-Core-Tests/CryptoASN1Test.class.st index 89f282d..8070b2a 100644 --- a/source/ASN1-Tests/CryptoASN1Test.class.st +++ b/source/ASN1-Core-Tests/CryptoASN1Test.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoASN1Test, #superclass : #TestCase, - #category : 'ASN1-Tests' + #category : #'ASN1-Core-Tests' } { #category : #'tests - base' } diff --git a/source/ASN1-Core-Tests/package.st b/source/ASN1-Core-Tests/package.st new file mode 100644 index 0000000..240d39e --- /dev/null +++ b/source/ASN1-Core-Tests/package.st @@ -0,0 +1 @@ +Package { #name : #'ASN1-Core-Tests' } diff --git a/source/ASN1-Tests/package.st b/source/ASN1-Tests/package.st deleted file mode 100644 index 101d177..0000000 --- a/source/ASN1-Tests/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'ASN1-Tests' } From 69811b06163fa074504e87fec8c5484a93ad8004 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:42:10 +0200 Subject: [PATCH 13/36] Rename ASN1-Tests into ASN1-Core-Tests (baseline adoptions) --- source/BaselineOfCryptography/BaselineOfCryptography.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index bf491d9..842204f 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -12,7 +12,7 @@ BaselineOfCryptography >> baseline: spec [ spec package: 'Cryptography'. spec package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography' ) ]; - package: 'ASN1-Tests' with: [ spec requires: #(#'ASN1-Core' ) ]; + package: 'ASN1-Core-Tests' with: [ spec requires: #(#'ASN1-Core' ) ]; package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; package: 'ASN1-Readers-Tests' with: [ spec requires: #(#'ASN1-Readers') ]; package: 'PKCS12' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; @@ -29,6 +29,6 @@ BaselineOfCryptography >> baseline: spec [ group: 'core' with: #('Cryptography'); group: 'default' with: #('legacy'); group: 'legacy' with: #('Cryptography' 'ASN1-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); - group: 'all' with: #('Cryptography' 'ASN1-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') + group: 'all' with: #('Cryptography' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') ]. ] From 527901bbbec1a21ea51e015d5b9ab29f5cf2f438 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:46:21 +0200 Subject: [PATCH 14/36] Rename ASN1-Tests into ASN1-Core-Tests (baseline adoptions) --- source/BaselineOfCryptography/BaselineOfCryptography.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index 842204f..419b745 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -28,7 +28,7 @@ BaselineOfCryptography >> baseline: spec [ spec group: 'core' with: #('Cryptography'); group: 'default' with: #('legacy'); - group: 'legacy' with: #('Cryptography' 'ASN1-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); + group: 'legacy' with: #('Cryptography' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); group: 'all' with: #('Cryptography' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') ]. ] From 2e2008fa4e6e82122f41a3ba7783acfdfcbdf94a Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:49:13 +0200 Subject: [PATCH 15/36] tag classes --- source/ASN1-Core-Tests/ASN1TestModel.class.st | 2 +- source/ASN1-Core-Tests/CryptoASN1Test.class.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ASN1-Core-Tests/ASN1TestModel.class.st b/source/ASN1-Core-Tests/ASN1TestModel.class.st index ea3e7c1..acca024 100644 --- a/source/ASN1-Core-Tests/ASN1TestModel.class.st +++ b/source/ASN1-Core-Tests/ASN1TestModel.class.st @@ -5,7 +5,7 @@ Class { 'testSlot1', 'testSlot2' ], - #category : #'ASN1-Core-Tests' + #category : #'ASN1-Core-Tests-Utilities' } { #category : #accessing } diff --git a/source/ASN1-Core-Tests/CryptoASN1Test.class.st b/source/ASN1-Core-Tests/CryptoASN1Test.class.st index 8070b2a..3085095 100644 --- a/source/ASN1-Core-Tests/CryptoASN1Test.class.st +++ b/source/ASN1-Core-Tests/CryptoASN1Test.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoASN1Test, #superclass : #TestCase, - #category : #'ASN1-Core-Tests' + #category : #'ASN1-Core-Tests-Base' } { #category : #'tests - base' } From 5bd5086bfacde72c8ea3b3f45d15bc65cb2393c0 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 13:51:23 +0200 Subject: [PATCH 16/36] Tag streaming class --- source/ASN1-Core/ASN1Stream.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ASN1-Core/ASN1Stream.class.st b/source/ASN1-Core/ASN1Stream.class.st index ea7a7f7..db75397 100644 --- a/source/ASN1-Core/ASN1Stream.class.st +++ b/source/ASN1-Core/ASN1Stream.class.st @@ -8,7 +8,7 @@ Class { #classVars : [ 'TagToTypeDispatchTable' ], - #category : #'ASN1-Core-Base' + #category : #'ASN1-Core-Streaming' } { #category : #decoding } From 3d089f8113817818288bab89fb5622e6403aa45c Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 14:24:55 +0200 Subject: [PATCH 17/36] use assert:equals: in tests --- .../ASN1-Core-Tests/CryptoASN1Test.class.st | 282 +++++++++--------- .../ASN1-Readers-Tests/CryptoRSATest.class.st | 19 +- source/Cryptography/CryptoDESTest.class.st | 101 +++++-- .../CryptoDiffieHellmanTest.class.st | 6 +- .../CryptoHashFunctionTest.class.st | 119 ++++++-- source/Cryptography/CryptoRC2Test.class.st | 9 +- source/Cryptography/CryptoRC4Test.class.st | 5 +- source/Cryptography/CryptoRandomTest.class.st | 20 +- .../CryptoRigndaelCBCTest.class.st | 94 ++++-- .../Cryptography/CryptoRijndaelTest.class.st | 18 +- 10 files changed, 416 insertions(+), 257 deletions(-) diff --git a/source/ASN1-Core-Tests/CryptoASN1Test.class.st b/source/ASN1-Core-Tests/CryptoASN1Test.class.st index 3085095..7d25659 100644 --- a/source/ASN1-Core-Tests/CryptoASN1Test.class.st +++ b/source/ASN1-Core-Tests/CryptoASN1Test.class.st @@ -8,100 +8,102 @@ Class { CryptoASN1Test >> testBMPString [ | bytes obj newBytes testObj | - bytes := #(30 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 30 11 104 101 108 108 111 32 119 111 114 108 100 ). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } CryptoASN1Test >> testBaseExplicitType [ | bytes obj newBytes type | - (ASN1Module name: #test) explicit: #TestExplicit type: #ASN1IntegerType tag: 0. + (ASN1Module name: #test) + explicit: #TestExplicit + type: #ASN1IntegerType + tag: 0. type := (ASN1Module name: #test) find: #TestExplicit. - bytes := #(160 4 2 2 3 21). + bytes := #( 160 4 2 2 3 21 ). obj := ASN1Stream decodeBytes: bytes withType: type. - self assert: (obj = 789). + self assert: obj equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } CryptoASN1Test >> testBaseImplicitConstructedType [ | bytes obj newBytes type | - (ASN1Module name: #test) implicit: #TestImplicit type: #ASN1SequenceType tag: 0. + (ASN1Module name: #test) + implicit: #TestImplicit + type: #ASN1SequenceType + tag: 0. type := (ASN1Module name: #test) find: #TestImplicit. - bytes := #(160 4 2 2 3 21). + bytes := #( 160 4 2 2 3 21 ). obj := ASN1Stream decodeBytes: bytes withType: type. - self assert: (obj = (OrderedCollection with: 789)). + self assert: obj equals: (OrderedCollection with: 789). newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } CryptoASN1Test >> testBaseImplicitPrimitiveType [ | bytes obj newBytes type | - (ASN1Module name: #test) implicit: #TestImplicit type: #ASN1IntegerType tag: 0. + (ASN1Module name: #test) + implicit: #TestImplicit + type: #ASN1IntegerType + tag: 0. type := (ASN1Module name: #test) find: #TestImplicit. - bytes := #(128 2 3 21). + bytes := #( 128 2 3 21 ). obj := ASN1Stream decodeBytes: bytes withType: type. - self assert: (obj = 789). + self assert: obj equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testBitString [ | bytes obj newBytes testObj | - bytes := #(3 3 3 168 121). - testObj := ASN1BitString new - bytes: #(168 121); - bitsPadding: 3; - yourself. + bytes := #( 3 3 3 168 121 ). + testObj := ASN1BitString new + bytes: #( 168 121 ); + bitsPadding: 3; + yourself. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testBoolean [ | bytes obj newBytes testObj | - bytes := #(1 1 255). + bytes := #( 1 1 255 ). testObj := true. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testByteArray [ | bytes obj newBytes testObj | - bytes := #(4 5 3 21 55 43 76). - testObj := #(3 21 55 43 76) asByteArray. + bytes := #( 4 5 3 21 55 43 76 ). + testObj := #( 3 21 55 43 76 ) asByteArray. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - BER' } @@ -241,16 +243,16 @@ CryptoASN1Test >> testDefinedAnyType [ bytes := #(48 3 1 1 255). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = true). + self assert: obj testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes. bytes := #(48 4 2 2 3 21). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 789). + self assert: obj testSlot1 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -271,16 +273,16 @@ CryptoASN1Test >> testDefinedChoiceType [ bytes := #(48 3 1 1 255). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = true). + self assert: obj testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes. bytes := #(48 4 2 2 3 21). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 789). + self assert: obj testSlot1 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -296,9 +298,9 @@ CryptoASN1Test >> testDefinedExplicitType [ bytes := #(48 6 160 4 2 2 3 21). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 789). + self assert: obj testSlot1 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -314,9 +316,9 @@ CryptoASN1Test >> testDefinedImplicitConstructedType [ bytes := #(48 6 160 4 2 2 3 21). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = (OrderedCollection with: 789)). + self assert: obj testSlot1 equals: (OrderedCollection with: 789). newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -332,10 +334,9 @@ CryptoASN1Test >> testDefinedImplicitPrimitiveType [ bytes := #(48 4 128 2 3 21). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 789). + self assert: obj testSlot1 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - mapped' } @@ -343,16 +344,17 @@ CryptoASN1Test >> testDefinedMappedBMPStringType [ | bytes obj newBytes type | ((ASN1Module name: #test) mapped: #TestMapped) - mapping: ASN1TestModel mappingSymbol: #testSlot1 type: #ASN1BMPStringType. + mapping: ASN1TestModel + mappingSymbol: #testSlot1 + type: #ASN1BMPStringType. type := (ASN1Module name: #test) find: #TestMapped. - bytes := #(30 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 30 11 104 101 108 108 111 32 119 111 114 108 100 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 'hello world'). + self assert: obj testSlot1 equals: 'hello world'. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - mapped' } @@ -360,16 +362,17 @@ CryptoASN1Test >> testDefinedMappedBooleanType [ | bytes obj newBytes type | ((ASN1Module name: #test) mapped: #TestMapped) - mapping: ASN1TestModel mappingSymbol: #testSlot1 type: #ASN1BooleanType. + mapping: ASN1TestModel + mappingSymbol: #testSlot1 + type: #ASN1BooleanType. type := (ASN1Module name: #test) find: #TestMapped. - bytes := #(1 1 255). + bytes := #( 1 1 255 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = true). + self assert: obj testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - mapped' } @@ -377,16 +380,17 @@ CryptoASN1Test >> testDefinedMappedIntegerType [ | bytes obj newBytes type | ((ASN1Module name: #test) mapped: #TestMapped) - mapping: ASN1TestModel mappingSymbol: #testSlot1 type: #ASN1IntegerType. + mapping: ASN1TestModel + mappingSymbol: #testSlot1 + type: #ASN1IntegerType. type := (ASN1Module name: #test) find: #TestMapped. - bytes := #(2 2 3 21). + bytes := #( 2 2 3 21 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 789). + self assert: obj testSlot1 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - mapped' } @@ -394,19 +398,21 @@ CryptoASN1Test >> testDefinedMappedSequenceType [ | bytes obj newBytes type | ((ASN1Module name: #test) mapped: #TestMapped) - mapping: ASN1TestModel mappingSymbol: #testSlot1 type: #TestSequence. - ((ASN1Module name: #test) sequence: #TestSequence mapping: ASN1TestModel) - add: #testSlot1 type: #ASN1BooleanType. + mapping: ASN1TestModel + mappingSymbol: #testSlot1 + type: #TestSequence. + ((ASN1Module name: #test) + sequence: #TestSequence + mapping: ASN1TestModel) add: #testSlot1 type: #ASN1BooleanType. type := (ASN1Module name: #test) find: #TestMapped. - bytes := #(48 3 1 1 255). + bytes := #( 48 3 1 1 255 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). self assert: (obj testSlot1 isKindOf: ASN1TestModel). - self assert: (obj testSlot1 testSlot1 = true). + self assert: obj testSlot1 testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - mapped' } @@ -414,16 +420,17 @@ CryptoASN1Test >> testDefinedMappedUTF8StringType [ | bytes obj newBytes type | ((ASN1Module name: #test) mapped: #TestMapped) - mapping: ASN1TestModel mappingSymbol: #testSlot1 type: #ASN1StringType. + mapping: ASN1TestModel + mappingSymbol: #testSlot1 + type: #ASN1StringType. type := (ASN1Module name: #test) find: #TestMapped. - bytes := #(12 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 12 11 104 101 108 108 111 32 119 111 114 108 100 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = 'hello world'). + self assert: obj testSlot1 equals: 'hello world'. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } @@ -454,9 +461,9 @@ CryptoASN1Test >> testDefinedSequenceType [ bytes := #(48 3 1 1 255). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = true). + self assert: obj testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -472,10 +479,9 @@ CryptoASN1Test >> testDefinedSequenceTypeDefault [ bytes := #(48 0). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = false). + self assert: obj testSlot1 equals: false. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } @@ -491,7 +497,7 @@ CryptoASN1Test >> testDefinedSequenceTypeOptional [ obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -507,9 +513,9 @@ CryptoASN1Test >> testDefinedSequenceTypeOptionalDefault [ bytes := #(48 0). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = false). + self assert: obj testSlot1 equals: false. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -525,9 +531,9 @@ CryptoASN1Test >> testDefinedSetType [ bytes := #(49 3 1 1 255). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = true). + self assert: obj testSlot1 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -538,13 +544,12 @@ CryptoASN1Test >> testDefinedUnmappedSequenceType [ (ASN1Module name: #test) sequence: #TestSequence. type := (ASN1Module name: #test) find: #TestSequence. - bytes := #(48 3 1 1 255). + bytes := #( 48 3 1 1 255 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: OrderedCollection). - self assert: (obj first = true). + self assert: obj first equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } @@ -554,33 +559,30 @@ CryptoASN1Test >> testDefinedUnmappedSetType [ (ASN1Module name: #test) set: #TestSet. type := (ASN1Module name: #test) find: #TestSet. - bytes := #(49 3 1 1 255). + bytes := #( 49 3 1 1 255 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: OrderedSet). self assert: (obj includes: true). newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testEqualsChecksType [ - self deny: (ASN1ObjectId fromString: '1.3.6.1.5.5.7.8.5') = Object new - + self deny: (ASN1ObjectId fromString: '1.3.6.1.5.5.7.8.5') equals: Object new ] { #category : #'tests - base' } CryptoASN1Test >> testIA5String [ | bytes obj newBytes testObj | - bytes := #(22 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 22 11 104 101 108 108 111 32 119 111 114 108 100 ). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - BER' } @@ -602,13 +604,12 @@ CryptoASN1Test >> testIndefiniteLengthSequence [ CryptoASN1Test >> testInteger [ | bytes obj newBytes testObj | - bytes := #(2 2 3 21). + bytes := #( 2 2 3 21 ). testObj := 789. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } @@ -619,7 +620,7 @@ CryptoASN1Test >> testNull [ obj := ASN1Stream decodeBytes: bytes. self assert: obj isNil. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -627,88 +628,82 @@ CryptoASN1Test >> testNull [ CryptoASN1Test >> testObjectIdentifier [ | bytes obj newBytes testObj | - bytes := #(6 8 43 6 1 5 5 7 8 5). + bytes := #( 6 8 43 6 1 5 5 7 8 5 ). testObj := ASN1ObjectId new - oid: '1.3.6.1.5.5.7.8.5'; - yourself. + oid: '1.3.6.1.5.5.7.8.5'; + yourself. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testPrintableString [ | bytes obj newBytes testObj | - bytes := #(19 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 19 11 104 101 108 108 111 32 119 111 114 108 100 ). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testSequence [ | bytes obj newBytes testObj | - bytes := #(48 11 1 1 255 2 2 3 21 4 2 108 100). + bytes := #( 48 11 1 1 255 2 2 3 21 4 2 108 100 ). testObj := OrderedCollection new - add: true; - add: 789; - add: #(108 100) asByteArray; - yourself. + add: true; + add: 789; + add: #( 108 100 ) asByteArray; + yourself. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testSet [ | bytes obj newBytes testObj | - bytes := #(49 11 1 1 255 4 2 108 100 2 2 3 21 ). + bytes := #( 49 11 1 1 255 4 2 108 100 2 2 3 21 ). testObj := OrderedSet new - add: true; - add: #(108 100) asByteArray; - add: 789; - yourself. + add: true; + add: #( 108 100 ) asByteArray; + add: 789; + yourself. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testString [ | bytes obj newBytes testObj | - bytes := #(12 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 12 11 104 101 108 108 111 32 119 111 114 108 100 ). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray = newBytes ] { #category : #'tests - base' } CryptoASN1Test >> testTeletexString [ | bytes obj newBytes testObj | - bytes := #(20 11 104 101 108 108 111 32 119 111 114 108 100). + bytes := #( 20 11 104 101 108 108 111 32 119 111 114 108 100 ). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - base' } @@ -720,7 +715,7 @@ CryptoASN1Test >> testUTCTime [ testObj := DateAndTime fromString: '2007-03-22T15:58:17+00:00'. self assert: obj rounded equals: testObj rounded. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes ] @@ -731,8 +726,7 @@ CryptoASN1Test >> testUniversalString [ bytes := #(28 11 104 101 108 108 111 32 119 111 114 108 100). testObj := 'hello world'. obj := ASN1Stream decodeBytes: bytes. - self assert: (obj = testObj). + self assert: obj equals: testObj. newBytes := ASN1Stream encode: obj. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] diff --git a/source/ASN1-Readers-Tests/CryptoRSATest.class.st b/source/ASN1-Readers-Tests/CryptoRSATest.class.st index 8049472..c67bb71 100644 --- a/source/ASN1-Readers-Tests/CryptoRSATest.class.st +++ b/source/ASN1-Readers-Tests/CryptoRSATest.class.st @@ -88,12 +88,19 @@ CryptoRSATest >> testRSASHASignVerification [ { #category : #tests } CryptoRSATest >> testRSASHASigning [ - | signBytes | - - signBytes := privateKey v15SignMessage: 'hello'. - - self assert: signBytes = -#[217 255 224 189 56 76 46 39 224 98 134 191 90 24 145 47 7 195 143 29 131 44 93 172 118 161 3 217 231 74 82 55 37 193 86 114 7 137 22 207 107 27 26 121 40 155 185 172 20 23 27 27 187 162 97 64 151 41 173 230 53 54 174 53 73 76 252 145 252 215 166 53 37 21 174 21 185 171 201 163 197 43 15 202 40 48 150 9 233 126 34 221 219 27 215 142 161 15 225 230 238 150 82 130 2 51 197 124 242 211 222 60 145 93 145 198 48 122 160 232 31 75 161 244 8 194 143 170] + | signBytes | + signBytes := privateKey v15SignMessage: 'hello'. + self + assert: signBytes + equals: + #[ 217 255 224 189 56 76 46 39 224 98 134 191 90 24 145 47 7 195 + 143 29 131 44 93 172 118 161 3 217 231 74 82 55 37 193 86 114 + 7 137 22 207 107 27 26 121 40 155 185 172 20 23 27 27 187 162 + 97 64 151 41 173 230 53 54 174 53 73 76 252 145 252 215 166 53 + 37 21 174 21 185 171 201 163 197 43 15 202 40 48 150 9 233 126 + 34 221 219 27 215 142 161 15 225 230 238 150 82 130 2 51 197 124 + 242 211 222 60 145 93 145 198 48 122 160 232 31 75 161 244 8 194 + 143 170 ] ] { #category : #tests } diff --git a/source/Cryptography/CryptoDESTest.class.st b/source/Cryptography/CryptoDESTest.class.st index 5dd9b70..28a94ee 100644 --- a/source/Cryptography/CryptoDESTest.class.st +++ b/source/Cryptography/CryptoDESTest.class.st @@ -4,44 +4,57 @@ Class { #category : #'Cryptography-Tests' } -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testDES [ + | plain key d | - plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. - key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) asByteArray. + plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) + asByteArray. + key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF ) + asByteArray. d := DES key: key. d encryptBlock: plain. - self assert: plain = #(16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D) asByteArray + self + assert: plain + equals: + #( 16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D ) asByteArray ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testDES2 [ + | plain key d | plain := 'squeaker' asByteArray. key := 'hacking!' asByteArray. d := DES key: key. d encryptBlock: plain. - self assert: plain = #[64 222 70 13 59 145 76 186] + self assert: plain equals: #[ 64 222 70 13 59 145 76 186 ] ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testDES3 [ + | plain plainCopy key d | plain := 'squeaker'. key := 'hacking!'. plainCopy := plain copy. d := DES key: key. d encryptBlock: plainCopy. - self assert: plainCopy asByteArray = #[64 222 70 13 59 145 76 186]. - + self + assert: plainCopy asByteArray + equals: #[ 64 222 70 13 59 145 76 186 ] ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testDESCBC [ + | plain key encryptor decryptor vector | - plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. - key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) asByteArray. - vector := #(16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77) asByteArray. + plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) + asByteArray. + key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF ) + asByteArray. + vector := #( 16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77 ) + asByteArray. encryptor := (DES key: key) cbc. encryptor initialVector: vector copy. decryptor := (DES key: key) cbc. @@ -50,40 +63,61 @@ CryptoDESTest >> testDESCBC [ decryptor decryptBlock: plain. encryptor encryptBlock: plain. decryptor decryptBlock: plain. - self assert: plain = #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. + self + assert: plain + equals: + #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testDESFormal [ + | x d | - x := #(16r94 16r74 16rB8 16rE8 16rC7 16r3B 16rCA 16r7D) asByteArray. - 1 to: 16 do: [:i | + x := #( 16r94 16r74 16rB8 16rE8 16rC7 16r3B 16rCA 16r7D ) asByteArray. + 1 to: 16 do: [ :i | d := DES key: x. - (i - 1) even - ifTrue: [d encryptBlock: x] - ifFalse: [d decryptBlock: x] ]. - self assert: x = #(16r1B 16r1A 16r2D 16rDB 16r4C 16r64 16r24 16r38) asByteArray + (i - 1) even + ifTrue: [ d encryptBlock: x ] + ifFalse: [ d decryptBlock: x ] ]. + self + assert: x + equals: + #( 16r1B 16r1A 16r2D 16rDB 16r4C 16r64 16r24 16r38 ) asByteArray ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testTripleDES [ + | plain key d | - plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. - key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) asByteArray. + plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) + asByteArray. + key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 + 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 + 16r89 16rAB 16rCD 16rEF ) asByteArray. d := TripleDES key: key. d encryptBlock: plain. - self assert: plain = #(16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D) asByteArray. + self + assert: plain + equals: + #( 16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D ) asByteArray. d decryptBlock: plain. - self assert: plain = #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. - + self + assert: plain + equals: + #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoDESTest >> testTripleDESCBC [ + | plain key encryptor decryptor vector | - plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. - key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) asByteArray. - vector := #(16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77) asByteArray. + plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) + asByteArray. + key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 + 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 + 16r89 16rAB 16rCD 16rEF ) asByteArray. + vector := #( 16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77 ) + asByteArray. encryptor := (TripleDES key: key) cbc. encryptor initialVector: vector copy. decryptor := (TripleDES key: key) cbc. @@ -92,5 +126,8 @@ CryptoDESTest >> testTripleDESCBC [ decryptor decryptBlock: plain. encryptor encryptBlock: plain. decryptor decryptBlock: plain. - self assert: plain = #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. + self + assert: plain + equals: + #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray ] diff --git a/source/Cryptography/CryptoDiffieHellmanTest.class.st b/source/Cryptography/CryptoDiffieHellmanTest.class.st index 5ce70cc..ea63265 100644 --- a/source/Cryptography/CryptoDiffieHellmanTest.class.st +++ b/source/Cryptography/CryptoDiffieHellmanTest.class.st @@ -26,18 +26,18 @@ CryptoDiffieHellmanTest >> testDiffieHellman [ fromBob := bob sendMessage. k1 := alice receiveMessage: fromBob. k2 := bob receiveMessage: fromAlice. - self assert: k1 = k2 + self assert: k1 equals: k2 ] { #category : #testing } CryptoDiffieHellmanTest >> testDiffieHellmanWithGeneration [ | alice bob fromAlice fromBob k1 k2 | - alice := DiffieHellman bits: 64. "very low for speed" + alice := DiffieHellman bits: 64. "very low for speed" bob := DiffieHellman prime: alice prime generator: alice generator. fromAlice := alice sendMessage. fromBob := bob sendMessage. k1 := alice receiveMessage: fromBob. k2 := bob receiveMessage: fromAlice. - self assert: k1 = k2 + self assert: k1 equals: k2 ] diff --git a/source/Cryptography/CryptoHashFunctionTest.class.st b/source/Cryptography/CryptoHashFunctionTest.class.st index a2b6020..f80c1da 100644 --- a/source/Cryptography/CryptoHashFunctionTest.class.st +++ b/source/Cryptography/CryptoHashFunctionTest.class.st @@ -6,20 +6,47 @@ Class { { #category : #'hash algorithms' } CryptoHashFunctionTest >> testHMAC [ - self assert: (MD5 new hmac key: (ByteArray new: 16 withAll: 16r0B); digestMessage: 'Hi There' asByteArray) asInteger = 16r9294727A3638BB1C13F48EF8158BFC9D. - self assert: (MD5 new hmac key: 'Jefe' asByteArray; digestMessage: 'what do ya want for nothing?' asByteArray) asInteger = 16r750C783E6AB0B503EAA86E310A5DB738. - self assert: (MD5 new hmac key: (ByteArray new: 16 withAll: 16rAA); digestMessage: (ByteArray new: 50 withAll: 16rDD)) asInteger = 16r56BE34521D144C88DBB8C733F0E8B3F6 + + self + assert: (MD5 new hmac + key: (ByteArray new: 16 withAll: 16r0B); + digestMessage: 'Hi There' asByteArray) asInteger + equals: 16r9294727A3638BB1C13F48EF8158BFC9D. + self + assert: (MD5 new hmac + key: 'Jefe' asByteArray; + digestMessage: 'what do ya want for nothing?' asByteArray) + asInteger + equals: 16r750C783E6AB0B503EAA86E310A5DB738. + self + assert: (MD5 new hmac + key: (ByteArray new: 16 withAll: 16rAA); + digestMessage: (ByteArray new: 50 withAll: 16rDD)) asInteger + equals: 16r56BE34521D144C88DBB8C733F0E8B3F6 ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testHMACSHA1 [ - self assert: ((SHA1 new hmac key: (ByteArray new: 16 withAll: 16r0B); digestMessage: 'Hi There' asByteArray) asByteArray) = #(16r67 16r5B 16rB 16r3A 16r1B 16r4D 16rDF 16r4E 16r12 16r48 16r72 16rDA 16r6C 16r2F 16r63 16r2B 16rFE 16rD9 16r57 16rE9) asByteArray + + self + assert: (SHA1 new hmac + key: (ByteArray new: 16 withAll: 16r0B); + digestMessage: 'Hi There' asByteArray) asByteArray + equals: + #( 16r67 16r5B 16rB 16r3A 16r1B 16r4D 16rDF 16r4E 16r12 16r48 16r72 + 16rDA 16r6C 16r2F 16r63 16r2B 16rFE 16rD9 16r57 16rE9 ) + asByteArray ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testLargeSHA1 [ + "Here is the third example from the specification document (FIPS PUB 180-1). This example may take several minutes." - self assert: (SHA1 hashMessage: (String new: 1000000 withAll: $a)) asInteger = 16r34AA973CD4C4DAA4F61EEB2BDBAD27316534016F + + self + assert: + (SHA1 hashMessage: (String new: 1000000 withAll: $a)) asInteger + equals: 16r34AA973CD4C4DAA4F61EEB2BDBAD27316534016F ] { #category : #'hash algorithms' } @@ -35,64 +62,108 @@ CryptoHashFunctionTest >> testMD2 [ { #category : #'hash algorithms' } CryptoHashFunctionTest >> testMD4 [ - self assert: (MD4 hashMessage: #(115 0 115 0 110 0) asByteArray) = #(252 63 129 51 180 217 221 240 64 37 167 140 183 214 26 126) asByteArray + + self + assert: (MD4 hashMessage: #( 115 0 115 0 110 0 ) asByteArray) + equals: + #( 252 63 129 51 180 217 221 240 64 37 167 140 183 214 26 126 ) + asByteArray ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testMD5 [ - self assert: (MD5 hashMessage: '') asInteger = 16rD41D8CD98F00B204E9800998ECF8427E. - self assert: (MD5 hashMessage: 'a') asInteger = 16r0CC175B9C0F1B6A831C399E269772661. - self assert: (MD5 hashMessage: 'abc') asInteger = 16r900150983CD24FB0D6963F7D28E17F72. - self assert: (MD5 hashMessage: 'message digest') asInteger = 16rF96B697D7CB7938D525A2F31AAF161D0. - self assert: (MD5 hashMessage: 'abcdefghijklmnopqrstuvwxyz') asInteger = 16rC3FCD3D76192E4007DFB496CCA67E13B. - self assert: (MD5 hashMessage: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') asInteger = 16rD174AB98D277D9F5A5611C2C9F419D9F. - self assert: (MD5 hashMessage: '12345678901234567890123456789012345678901234567890123456789012345678901234567890') asInteger = 16r57EDF4A22BE3C955AC49DA2E2107B67A + self + assert: (MD5 hashMessage: '') asInteger + equals: 16rD41D8CD98F00B204E9800998ECF8427E. + self + assert: (MD5 hashMessage: 'a') asInteger + equals: 16r0CC175B9C0F1B6A831C399E269772661. + self + assert: (MD5 hashMessage: 'abc') asInteger + equals: 16r900150983CD24FB0D6963F7D28E17F72. + self + assert: (MD5 hashMessage: 'message digest') asInteger + equals: 16rF96B697D7CB7938D525A2F31AAF161D0. + self + assert: (MD5 hashMessage: 'abcdefghijklmnopqrstuvwxyz') asInteger + equals: 16rC3FCD3D76192E4007DFB496CCA67E13B. + self + assert: (MD5 hashMessage: + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') + asInteger + equals: 16rD174AB98D277D9F5A5611C2C9F419D9F. + self + assert: (MD5 hashMessage: + '12345678901234567890123456789012345678901234567890123456789012345678901234567890') + asInteger + equals: 16r57EDF4A22BE3C955AC49DA2E2107B67A ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testMD5Implementations [ + "Check if the two implementations give the same results. Do nothing if the plugin is not available" | data | - MD5 isPluginAvailable ifFalse: [ ^self ]. + MD5 isPluginAvailable ifFalse: [ ^ self ]. data := ''. 100 timesRepeat: [ | primitive nonPrimitive | primitive := MD5NonPrimitive basicNew hashMessage: data. nonPrimitive := MD5WithPrimitive basicNew hashMessage: data. - self assert: primitive = nonPrimitive. - data := data, 'Squeak' ] + self assert: primitive equals: nonPrimitive. + data := data , 'Squeak' ] ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testSHA1 [ - self assert: (SHA1 hashMessage: 'abc') asInteger = 16rA9993E364706816ABA3E25717850C26C9CD0D89D. - self assert: (SHA1 hashMessage: 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq') asInteger = 16r84983E441C3BD26EBAAE4AA1F95129E5E54670F1 + self + assert: (SHA1 hashMessage: 'abc') asInteger + equals: 16rA9993E364706816ABA3E25717850C26C9CD0D89D. + self + assert: (SHA1 hashMessage: + 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq') + asInteger + equals: 16r84983E441C3BD26EBAAE4AA1F95129E5E54670F1 ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testSHA256 [ + "these tests come from http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf" - self assert: (SHA256 hashMessage: 'abc') asInteger = 16rBA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD. - self assert: (SHA256 hashMessage: 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq') asInteger = 16r248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1. + self + assert: (SHA256 hashMessage: 'abc') asInteger + equals: + 16rBA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD. + self + assert: (SHA256 hashMessage: + 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq') + asInteger + equals: + 16r248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1. SHA256 isPluginAvailable ifTrue: [ "takes a while to run without the plugin" - self assert: (SHA256 hashMessage: (String new: 1000000 withAll: $a)) asInteger = 16rCDC76E5C9914FB9281A1C7E284D73E67F1809A48A497200E046D39CCC7112CD0 ] + self + assert: + (SHA256 hashMessage: (String new: 1000000 withAll: $a)) asInteger + equals: + 16rCDC76E5C9914FB9281A1C7E284D73E67F1809A48A497200E046D39CCC7112CD0 ] ] { #category : #'hash algorithms' } CryptoHashFunctionTest >> testSHA256Implementations [ + "Check if the two implementations give the same results. Do nothing if the plugin is not available" | data | - SHA256 isPluginAvailable ifFalse: [ ^self ]. + SHA256 isPluginAvailable ifFalse: [ ^ self ]. data := ''. 100 timesRepeat: [ | primitive nonPrimitive | primitive := SHA256NonPrimitive basicNew hashMessage: data. nonPrimitive := SHA256WithPrimitive basicNew hashMessage: data. - self assert: primitive = nonPrimitive. - data := data, 'Squeak' ] + self assert: primitive equals: nonPrimitive. + data := data , 'Squeak' ] ] diff --git a/source/Cryptography/CryptoRC2Test.class.st b/source/Cryptography/CryptoRC2Test.class.st index 79db192..cdc094b 100644 --- a/source/Cryptography/CryptoRC2Test.class.st +++ b/source/Cryptography/CryptoRC2Test.class.st @@ -6,15 +6,16 @@ Class { { #category : #testing } CryptoRC2Test >> genericARC2TestKey: key effectiveKeyLength: aLength plaintext: plainText ciphertext: ciphertext [ + | vector rc2 | vector := plainText copy. rc2 := ARC2 key: key effectiveKeyLength: aLength. rc2 encryptBlock: vector. - self assert: vector = ciphertext. - + self assert: vector equals: ciphertext. + rc2 decryptBlock: vector. - self assert: vector = plainText. - rc2 destroy. + self assert: vector equals: plainText. + rc2 destroy ] { #category : #testing } diff --git a/source/Cryptography/CryptoRC4Test.class.st b/source/Cryptography/CryptoRC4Test.class.st index 222496c..185da5c 100644 --- a/source/Cryptography/CryptoRC4Test.class.st +++ b/source/Cryptography/CryptoRC4Test.class.st @@ -4,14 +4,15 @@ Class { #category : #'Cryptography-Tests' } -{ #category : #'as yet unclassified' } +{ #category : #accessing } CryptoRC4Test >> genericARC4TestKey: key plaintext: plaintext ciphertext: ciphertext [ + | vector rc4 | vector := plaintext copy. rc4 := ARC4 new. rc4 key: key. vector := rc4 encrypt: vector. - self assert: vector = ciphertext + self assert: vector equals: ciphertext ] { #category : #'as yet unclassified' } diff --git a/source/Cryptography/CryptoRandomTest.class.st b/source/Cryptography/CryptoRandomTest.class.st index 33026f3..026de90 100644 --- a/source/Cryptography/CryptoRandomTest.class.st +++ b/source/Cryptography/CryptoRandomTest.class.st @@ -6,17 +6,21 @@ Class { { #category : #others } CryptoRandomTest >> testRandomGenerators [ + | random randomBytes | - RandomGenerator allSubclassesDo: - [ : each | + RandomGenerator allSubclassesDo: [ :each | random := each withGeneratedKey. - 100 timesRepeat: - [ self assert: ((random nextBits: 1) between: 0 and: 1) ]. - 100 timesRepeat: [ self assert: (random nextBits: 1024) highBit <= 1024 ]. + 100 timesRepeat: [ + self assert: ((random nextBits: 1) between: 0 and: 1) ]. + 100 timesRepeat: [ + self assert: (random nextBits: 1024) highBit <= 1024 ]. "Random enough to span all 10 within 100-elements?" - self assert: ((1 to: 100) collect: [ : n | random nextInt: 10 ]) asSet asSortedCollection = (1 to: 10) asSortedCollection. + self + assert: ((1 to: 100) collect: [ :n | random nextInt: 10 ]) asSet + asSortedCollection + equals: (1 to: 10) asSortedCollection. randomBytes := random nextBytes: 100. self - assert: randomBytes size = 100 ; - assert: randomBytes asSet size > 1 "if this fails, I wanna see it!" ] + assert: randomBytes size equals: 100; + assert: randomBytes asSet size > 1 "if this fails, I wanna see it!" ] ] diff --git a/source/Cryptography/CryptoRigndaelCBCTest.class.st b/source/Cryptography/CryptoRigndaelCBCTest.class.st index c75fc62..709368f 100644 --- a/source/Cryptography/CryptoRigndaelCBCTest.class.st +++ b/source/Cryptography/CryptoRigndaelCBCTest.class.st @@ -6,32 +6,47 @@ Class { { #category : #tests } CryptoRigndaelCBCTest >> testByteArrayFromHexString [ + "this test requres that the cryptography core method fromHexString be loaded the main purpose of the method fromHexString is to ensure leading zeros are not chopped off and that small case letters in hex strings are allowed" - self assert: (ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = - '#[0 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]'. - self assert: (ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') storeString = - '#[0 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]'. + + self + assert: (ByteArray readHexFrom: + '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') + storeString + equals: + '#[0 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]'. + self + assert: (ByteArray readHexFrom: + '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f') + storeString + equals: + '#[0 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]' ] { #category : #tests } CryptoRigndaelCBCTest >> testRFC3602Case1 [ + "this test comes from RFC3602 http://www.faqs.org/rfcs/rfc3602.html Case #1: Encrypting 16 bytes (1 block) using AES-CBC with 128-bit key Key : 0x06a9214036b8a15b512e03d534120006 IV : 0x3dafba429d9eb430b422da802c9fac41 Plaintext : 'Single block msg' Ciphertext: 0xe353779c1079aeb82708942dbe77181a" + | result | - ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray readHexFrom: '06a9214036b8a15b512e03d534120006'))) - initialVector: (ByteArray readHexFrom: '3dafba429d9eb430b422da802c9fac41')) + ((CBC on: (Rijndael new + keySize: 16; + key: (ByteArray readHexFrom: '06a9214036b8a15b512e03d534120006'))) + initialVector: + (ByteArray readHexFrom: '3dafba429d9eb430b422da802c9fac41')) encryptBlock: (result := 'Single block msg' asByteArray). - self assert: result hex = 'e353779c1079aeb82708942dbe77181a' + self assert: result hex equals: 'e353779c1079aeb82708942dbe77181a' ] { #category : #tests } CryptoRigndaelCBCTest >> testRFC3602Case2 [ + "this test comes from RFC3602 http://www.faqs.org/rfcs/rfc3602.html Case #2: Encrypting 32 bytes (2 blocks) using AES-CBC with 128-bit key Key : 0xc286696d887c9aa0611bbb3e2025a45a @@ -42,15 +57,25 @@ CryptoRigndaelCBCTest >> testRFC3602Case2 [ 7586602d253cfff91b8266bea6d61ab1" | result | - result := ((CBC on: (Rijndael new keySize: 16; - key: (ByteArray readHexFrom: 'c286696d887c9aa0611bbb3e2025a45a'))) - initialVector: (ByteArray readHexFrom: '562e17996d093d28ddb3ba695a2e6f58')) - encrypt: (result := ByteArray readHexFrom: '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'). - self assert: result hex = 'd296cd94c2cccf8a3a863028b5e1dc0a7586602d253cfff91b8266bea6d61ab1bcfd81022202366bde6dd260a15841a1' + result := ((CBC on: (Rijndael new + keySize: 16; + key: + (ByteArray readHexFrom: + 'c286696d887c9aa0611bbb3e2025a45a'))) + initialVector: + (ByteArray readHexFrom: + '562e17996d093d28ddb3ba695a2e6f58')) encrypt: + (result := ByteArray readHexFrom: + '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'). + self + assert: result hex + equals: + 'd296cd94c2cccf8a3a863028b5e1dc0a7586602d253cfff91b8266bea6d61ab1bcfd81022202366bde6dd260a15841a1' ] { #category : #tests } CryptoRigndaelCBCTest >> testRFC3602Case3 [ + "this test comes from RFC3602 http://www.faqs.org/rfcs/rfc3602.html Case #3: Encrypting 48 bytes (3 blocks) using AES-CBC with 128-bit key Key : 0x6c3ea0477630ce21a2ce334aa746c2cd @@ -59,17 +84,27 @@ CryptoRigndaelCBCTest >> testRFC3602Case3 [ Ciphertext: 0xd0a02b3836451753d493665d33f0e886 2dea54cdb293abc7506939276772f8d5 021c19216bad525c8579695d83ba2684" + | result | - result := ((CBC on: (Rijndael new keySize: 16; - - key: (ByteArray readHexFrom: '6c3ea0477630ce21a2ce334aa746c2cd'))) - initialVector: (ByteArray readHexFrom: 'c782dc4c098c66cbd9cd27d825682c81')) - encrypt: 'This is a 48-byte message (exactly 3 AES blocks)' asByteArray. - self assert: result hex = 'd0a02b3836451753d493665d33f0e8862dea54cdb293abc7506939276772f8d5021c19216bad525c8579695d83ba2684d248b3e0f2388c137102846eb06272ff' + result := ((CBC on: (Rijndael new + keySize: 16; + key: + (ByteArray readHexFrom: + '6c3ea0477630ce21a2ce334aa746c2cd'))) + initialVector: + (ByteArray readHexFrom: + 'c782dc4c098c66cbd9cd27d825682c81')) encrypt: + 'This is a 48-byte message (exactly 3 AES blocks)' + asByteArray. + self + assert: result hex + equals: + 'd0a02b3836451753d493665d33f0e8862dea54cdb293abc7506939276772f8d5021c19216bad525c8579695d83ba2684d248b3e0f2388c137102846eb06272ff' ] { #category : #tests } CryptoRigndaelCBCTest >> testRFC3602Case4 [ + "this test comes from RFC3602 http://www.faqs.org/rfcs/rfc3602.html Case #4: Encrypting 64 bytes (4 blocks) using AES-CBC with 128-bit key Key : 0x56e47a38c5598974bc46903dba290349 @@ -83,11 +118,20 @@ CryptoRigndaelCBCTest >> testRFC3602Case4 [ 35907aa632c3ffdf868bb7b29d3d46ad 83ce9f9a102ee99d49a53e87f4c3da55 " + | result | - result := ((CBC on: (Rijndael new keySize: 16; - - key: (ByteArray readHexFrom: '56e47a38c5598974bc46903dba290349'))) - initialVector: (ByteArray readHexFrom: '8ce82eefbea0da3c44699ed7db51b7d9')) - encrypt: (ByteArray readHexFrom: 'a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'). - self assert: result hex = 'c30e32ffedc0774e6aff6af0869f71aa0f3af07a9a31a9c684db207eb0ef8e4e35907aa632c3ffdf868bb7b29d3d46ad83ce9f9a102ee99d49a53e87f4c3da5578b8d04731041aa2d9787ca4a4fa3eef' + result := ((CBC on: (Rijndael new + keySize: 16; + key: + (ByteArray readHexFrom: + '56e47a38c5598974bc46903dba290349'))) + initialVector: + (ByteArray readHexFrom: + '8ce82eefbea0da3c44699ed7db51b7d9')) encrypt: + (ByteArray readHexFrom: + 'a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'). + self + assert: result hex + equals: + 'c30e32ffedc0774e6aff6af0869f71aa0f3af07a9a31a9c684db207eb0ef8e4e35907aa632c3ffdf868bb7b29d3d46ad83ce9f9a102ee99d49a53e87f4c3da5578b8d04731041aa2d9787ca4a4fa3eef' ] diff --git a/source/Cryptography/CryptoRijndaelTest.class.st b/source/Cryptography/CryptoRijndaelTest.class.st index 18f9840..140deb4 100644 --- a/source/Cryptography/CryptoRijndaelTest.class.st +++ b/source/Cryptography/CryptoRijndaelTest.class.st @@ -49,17 +49,17 @@ CryptoRijndaelTest >> testByteArrayPadding [ | paddedHello fullBlockPad needsFullPad | paddedHello := #(104 101 108 108 111 11 11 11 11 11 11 11 11 11 11 11 ) asByteArray. self assert: paddedHello isProperlyPadded. - self assert: ('hello' asByteArray padToMultipleOf: 16) = paddedHello. - self assert: paddedHello unpaddedSize = 'hello' size. + self assert: ('hello' asByteArray padToMultipleOf: 16) equals: paddedHello. + self assert: paddedHello unpaddedSize equals: 'hello' size. fullBlockPad := #(16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16) asByteArray. self assert: fullBlockPad asByteArray isProperlyPadded. needsFullPad := '1234567890123456' asByteArray padToMultipleOf: 16. - self assert: needsFullPad size = 32. - self assert: (needsFullPad copyFrom: 17 to: 32) = fullBlockPad. + self assert: needsFullPad size equals: 32. + self assert: (needsFullPad copyFrom: 17 to: 32) equals: fullBlockPad. self assert: needsFullPad isProperlyPadded. - self assert: needsFullPad unpaddedSize = 16 + self assert: needsFullPad unpaddedSize equals: 16 ] { #category : #'block ciphers' } @@ -97,9 +97,9 @@ CryptoRijndaelTest >> testRijndael [ rijndael := Rijndael new keySize: 16; key: (0 to: 15) asByteArray. vector := (0 to: 15) asByteArray. rijndael encryptBlock: vector. - self assert: vector hex = '0a940bb5416ef045f1c39458c653ea5a'. + self assert: vector hex equals: '0a940bb5416ef045f1c39458c653ea5a'. rijndael decryptBlock: vector. - self assert: vector hex = '000102030405060708090a0b0c0d0e0f'. + self assert: vector hex equals: '000102030405060708090a0b0c0d0e0f'. rijndael := Rijndael new blockSize: 16; keySize: 24. rijndael key: (0 to: 16r17) asByteArray. @@ -126,7 +126,7 @@ CryptoRijndaelTest >> testRijndael128128 [ cipher := Rijndael new keySize: 16; key: key. cipher encryptBlock: vector. - self assert: vector hex = '3925841d02dc09fbdc118597196a0b32'. + self assert: vector hex equals: '3925841d02dc09fbdc118597196a0b32'. cipher decryptBlock: vector. - self assert: vector hex = '3243f6a8885a308d313198a2e0370734' + self assert: vector hex equals: '3243f6a8885a308d313198a2e0370734' ] From 052d3aef8526ede3959572ba998160e3b815df6c Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 15:16:32 +0200 Subject: [PATCH 18/36] Have a regular super initialize. --- source/Cryptography/ARC2.class.st | 4 +++- source/Cryptography/DESBitPermutation.class.st | 2 ++ source/Cryptography/KeyHolder.class.st | 2 ++ source/Cryptography/MD4.class.st | 2 ++ source/Cryptography/RSAEncryptionScheme.class.st | 2 ++ source/Cryptography/SHA256NonPrimitive.class.st | 1 + source/Cryptography/SHA256WithPrimitive.class.st | 1 + source/Cryptography/TripleDES.class.st | 2 ++ 8 files changed, 15 insertions(+), 1 deletion(-) diff --git a/source/Cryptography/ARC2.class.st b/source/Cryptography/ARC2.class.st index 506454b..1d32eff 100644 --- a/source/Cryptography/ARC2.class.st +++ b/source/Cryptography/ARC2.class.st @@ -893,7 +893,9 @@ ARC2 >> expandedKey [ { #category : #'initialize-release' } ARC2 >> initialize [ - self j: 0. + + super initialize. + self j: 0 ] { #category : #accessing } diff --git a/source/Cryptography/DESBitPermutation.class.st b/source/Cryptography/DESBitPermutation.class.st index e045bc9..adc55d7 100644 --- a/source/Cryptography/DESBitPermutation.class.st +++ b/source/Cryptography/DESBitPermutation.class.st @@ -58,6 +58,8 @@ DESBitPermutation class >> initialize [ { #category : #'initialize-release' } DESBitPermutation >> initialize [ + + super initialize. tables := #() ] diff --git a/source/Cryptography/KeyHolder.class.st b/source/Cryptography/KeyHolder.class.st index b2637f0..473b6d0 100644 --- a/source/Cryptography/KeyHolder.class.st +++ b/source/Cryptography/KeyHolder.class.st @@ -112,6 +112,8 @@ KeyHolder >> encryptKey: pKey [ { #category : #'initialize-release' } KeyHolder >> initialize [ + + super initialize. self random: (SecureRandom picker nextBytesNonZero: 32) ] diff --git a/source/Cryptography/MD4.class.st b/source/Cryptography/MD4.class.st index 6625e0c..029e9c0 100644 --- a/source/Cryptography/MD4.class.st +++ b/source/Cryptography/MD4.class.st @@ -126,6 +126,8 @@ MD4 >> hashStream: aStream [ { #category : #initialization } MD4 >> initialize [ + + super initialize. a := 16r67452301. b := 16rEFCDAB89. c := 16r98BADCFE. diff --git a/source/Cryptography/RSAEncryptionScheme.class.st b/source/Cryptography/RSAEncryptionScheme.class.st index c257bf7..e55881a 100644 --- a/source/Cryptography/RSAEncryptionScheme.class.st +++ b/source/Cryptography/RSAEncryptionScheme.class.st @@ -119,6 +119,8 @@ RSAEncryptionScheme >> encrypt: aByteArray [ { #category : #initialization } RSAEncryptionScheme >> initialize [ + + super initialize. rand := Random new. hash := SHA1 new. hashLen := 20 diff --git a/source/Cryptography/SHA256NonPrimitive.class.st b/source/Cryptography/SHA256NonPrimitive.class.st index cb16c05..e446181 100644 --- a/source/Cryptography/SHA256NonPrimitive.class.st +++ b/source/Cryptography/SHA256NonPrimitive.class.st @@ -113,6 +113,7 @@ SHA256NonPrimitive >> finalHash [ SHA256NonPrimitive >> initialize [ "Initialize totalA through totalH to their seed values." + super initialize. totalA := ThirtyTwoBitRegister new load: self class h0. totalB := ThirtyTwoBitRegister new load: self class h1. totalC := ThirtyTwoBitRegister new load: self class h2. diff --git a/source/Cryptography/SHA256WithPrimitive.class.st b/source/Cryptography/SHA256WithPrimitive.class.st index 5bf93cf..f54c956 100644 --- a/source/Cryptography/SHA256WithPrimitive.class.st +++ b/source/Cryptography/SHA256WithPrimitive.class.st @@ -36,6 +36,7 @@ SHA256WithPrimitive >> finalHash [ { #category : #private } SHA256WithPrimitive >> initialize [ + super initialize. state := ByteArray new: 32. self primInitializeState: state ] diff --git a/source/Cryptography/TripleDES.class.st b/source/Cryptography/TripleDES.class.st index a8ac080..97cc4dc 100644 --- a/source/Cryptography/TripleDES.class.st +++ b/source/Cryptography/TripleDES.class.st @@ -40,6 +40,8 @@ TripleDES >> encryptBlock: plainText [ { #category : #accessing } TripleDES >> initialize [ + + super initialize. des1 := DES new. des2 := DES new. des3 := DES new From dbd22671301d5e867641b1af880ba793c1942e24 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 21:37:25 +0200 Subject: [PATCH 19/36] dots and formatting --- source/Cryptography/ARC2.class.st | 9 +++++---- source/Cryptography/CTR.class.st | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/source/Cryptography/ARC2.class.st b/source/Cryptography/ARC2.class.st index 1d32eff..84b9522 100644 --- a/source/Cryptography/ARC2.class.st +++ b/source/Cryptography/ARC2.class.st @@ -919,6 +919,7 @@ ARC2 >> key [ { #category : #key } ARC2 >> key: aByteArray [ + self keyHolder: (KeyHolder holdKey: aByteArray) ] @@ -1005,7 +1006,7 @@ ARC2 >> mixUp: a64BitWord withKeys: expandedKeys [ aR do: [:a16BitWord | result := result, (a16BitWord asByteArrayOfSize: 2) ]. - ^result. + ^result ] @@ -1036,7 +1037,7 @@ ARC2 >> rMash: a64BitWord withKeys: expandedKeys [ aR do: [:a16BitWord | result := result, (a16BitWord asByteArrayOfSize: 2) ]. - ^result. + ^result @@ -1078,12 +1079,12 @@ ARC2 >> rMixUp: a64BitWord withKeys: expandedKeys [ aR do: [:a16BitWord | result := result, (a16BitWord asByteArrayOfSize: 2) ]. - ^result. + ^result ] { #category : #key } ARC2 >> setKeySize [ self T8: (self T1+7) // 8. - self TM: (255 \\ (2 raisedTo: (8 + self T1 - (8 * self T8)))). + self TM: (255 \\ (2 raisedTo: (8 + self T1 - (8 * self T8)))) ] diff --git a/source/Cryptography/CTR.class.st b/source/Cryptography/CTR.class.st index 8f6572b..2c873e7 100644 --- a/source/Cryptography/CTR.class.st +++ b/source/Cryptography/CTR.class.st @@ -96,6 +96,7 @@ CTR >> incrementNonce [ { #category : #'initialization-release' } CTR >> initialize [ + super initialize. self counterBits: 32 ] From 9c9142e29e41b14230b3b908da571703e8484c5e Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 21:42:35 +0200 Subject: [PATCH 20/36] Comment for baseline --- .../BaselineOfCryptography.class.st | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index 419b745..64a9d9d 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -1,3 +1,6 @@ +" +Baseline for [https://github.com/pharo-contributions/Cryptography](https://github.com/pharo-contributions/Cryptography) +" Class { #name : #BaselineOfCryptography, #superclass : #BaselineOf, @@ -11,16 +14,25 @@ BaselineOfCryptography >> baseline: spec [ spec for: #common do: [ spec package: 'Cryptography'. spec + "ASN1" package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography' ) ]; package: 'ASN1-Core-Tests' with: [ spec requires: #(#'ASN1-Core' ) ]; package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; package: 'ASN1-Readers-Tests' with: [ spec requires: #(#'ASN1-Readers') ]; + + "PKCS" package: 'PKCS12' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; package: 'PKCS12-Tests' with: [ spec requires: #(#'PKCS12') ]; + + "X509" package: 'X509' with: [ spec requires: #(#'Cryptography' #'ASN1-Core' ) ]; package: 'X509-Tests' with: [ spec requires: #(#'X509' ) ]; + + "PBKDF2" package: 'PBKDF2' with: [ spec requires: #(#'Cryptography') ]; package: 'PBKDF2-Tests' with: [ spec requires: #(#'PBKDF2' ) ]; + + "Other" package: 'Blowfish' with: [ spec requires: #(#'Cryptography') ]; package: 'OpenPGP' with: [ spec requires: #(#'Cryptography') ]; package: 'LayeredProtocol' with: [ spec requires: #(#'Cryptography') ]. From b85799f2e253a34826a65787f6b1acef86edb474 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 22:39:18 +0200 Subject: [PATCH 21/36] #initialize in "initialization" method category --- source/ASN1-Core/ASN1AbstractString.class.st | 2 +- source/ASN1-Core/ASN1AnyDefinedByType.class.st | 2 +- source/ASN1-Core/ASN1BitString.class.st | 4 ++-- source/ASN1-Core/ASN1DefinitionModel.class.st | 4 ++-- source/ASN1-Core/ASN1ExplicitContextValue.class.st | 2 +- source/ASN1-Core/ASN1Module.class.st | 2 +- source/ASN1-Core/ASN1StructureElement.class.st | 2 +- source/ASN1-Core/ASN1StructuredType.class.st | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/ASN1-Core/ASN1AbstractString.class.st b/source/ASN1-Core/ASN1AbstractString.class.st index 7c778c7..4748e34 100644 --- a/source/ASN1-Core/ASN1AbstractString.class.st +++ b/source/ASN1-Core/ASN1AbstractString.class.st @@ -49,7 +49,7 @@ ASN1AbstractString >> hash [ ^ self asString hash ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1AbstractString >> initialize [ self string: '' diff --git a/source/ASN1-Core/ASN1AnyDefinedByType.class.st b/source/ASN1-Core/ASN1AnyDefinedByType.class.st index c441c25..6905885 100644 --- a/source/ASN1-Core/ASN1AnyDefinedByType.class.st +++ b/source/ASN1-Core/ASN1AnyDefinedByType.class.st @@ -81,7 +81,7 @@ ASN1AnyDefinedByType >> encode: anObject withDERStream: derStream owner: owner o ^ type encode: anObject withDERStream: derStream ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1AnyDefinedByType >> initialize [ self typeMap: Dictionary new diff --git a/source/ASN1-Core/ASN1BitString.class.st b/source/ASN1-Core/ASN1BitString.class.st index 9cba1c6..ec1f4d1 100644 --- a/source/ASN1-Core/ASN1BitString.class.st +++ b/source/ASN1-Core/ASN1BitString.class.st @@ -16,7 +16,7 @@ ASN1BitString class >> fromByteArray: bytes [ yourself ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1BitString >> , bitString [ ^ self class new @@ -67,7 +67,7 @@ ASN1BitString >> bytes: anObject [ bytes := anObject ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1BitString >> initialize [ self bitsPadding: 0. diff --git a/source/ASN1-Core/ASN1DefinitionModel.class.st b/source/ASN1-Core/ASN1DefinitionModel.class.st index a5f9142..ca754d0 100644 --- a/source/ASN1-Core/ASN1DefinitionModel.class.st +++ b/source/ASN1-Core/ASN1DefinitionModel.class.st @@ -218,7 +218,7 @@ ASN1DefinitionModel >> getPragmaMutators [ { #category : #'services parsing' } ASN1DefinitionModel >> parseASN1ClassName [ - "Return the ans1definition argument string" + "Return the ASN1 definition argument string" | aDefString classSepIndex | aDefString := self asn1DefinitionString ifNil: [ ^ nil ]. @@ -229,7 +229,7 @@ ASN1DefinitionModel >> parseASN1ClassName [ { #category : #'services parsing' } ASN1DefinitionModel >> parseASN1DefinitionString [ - "Return the ans1definition argument string" + "Return the ASN1 definition argument string" | aPragma aCollection | aCollection := Pragma diff --git a/source/ASN1-Core/ASN1ExplicitContextValue.class.st b/source/ASN1-Core/ASN1ExplicitContextValue.class.st index 7e7273c..ba2596a 100644 --- a/source/ASN1-Core/ASN1ExplicitContextValue.class.st +++ b/source/ASN1-Core/ASN1ExplicitContextValue.class.st @@ -27,7 +27,7 @@ ASN1ExplicitContextValue >> asn1Tag [ ^ self tagIsPrimitive ifTrue: [128 bitOr: self tagIndex] - ifFalse: [160 bitOr: self tagIndex]. + ifFalse: [160 bitOr: self tagIndex] ] diff --git a/source/ASN1-Core/ASN1Module.class.st b/source/ASN1-Core/ASN1Module.class.st index bb8e9b5..a5af6ae 100644 --- a/source/ASN1-Core/ASN1Module.class.st +++ b/source/ASN1-Core/ASN1Module.class.st @@ -188,7 +188,7 @@ ASN1Module >> imports: anObject [ imports := anObject ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1Module >> initialize [ self definitions: Dictionary new. diff --git a/source/ASN1-Core/ASN1StructureElement.class.st b/source/ASN1-Core/ASN1StructureElement.class.st index e1eb2c7..e801d71 100644 --- a/source/ASN1-Core/ASN1StructureElement.class.st +++ b/source/ASN1-Core/ASN1StructureElement.class.st @@ -71,7 +71,7 @@ ASN1StructureElement >> hasDefaultOrIsOptional [ ^ self default notNil or: [ self optional ] ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1StructureElement >> initialize [ self optional: false diff --git a/source/ASN1-Core/ASN1StructuredType.class.st b/source/ASN1-Core/ASN1StructuredType.class.st index a11b4fe..68e240b 100644 --- a/source/ASN1-Core/ASN1StructuredType.class.st +++ b/source/ASN1-Core/ASN1StructuredType.class.st @@ -74,7 +74,7 @@ ASN1StructuredType >> hasElements [ ^ self elements notEmpty ] -{ #category : #'initialize-release' } +{ #category : #initialization } ASN1StructuredType >> initialize [ super initialize. From f07415cded087c8d12247cb758ba56a4a05c3004 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 22:47:10 +0200 Subject: [PATCH 22/36] Use #substrings not #subStrings and fix shadowed var in ASN1DefinitionModel>>#parseFieldNames Fix #37 --- source/ASN1-Core/ASN1DefinitionModel.class.st | 8 ++++---- source/ASN1-Core/ASN1FieldDefinition.class.st | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/ASN1-Core/ASN1DefinitionModel.class.st b/source/ASN1-Core/ASN1DefinitionModel.class.st index ca754d0..78bd526 100644 --- a/source/ASN1-Core/ASN1DefinitionModel.class.st +++ b/source/ASN1-Core/ASN1DefinitionModel.class.st @@ -242,15 +242,15 @@ ASN1DefinitionModel >> parseASN1DefinitionString [ { #category : #'services parsing' } ASN1DefinitionModel >> parseFieldNames [ - | aString fields | + | aString result | aString := self asn1DefinitionString. - fields := OrderedCollection new. + result := OrderedCollection new. (aString copyFrom: (aString indexOf: ${) + 1 to: (aString indexOf: $}) - 1) linesDo: [:aLine | (((aLine indexOfSubCollection: '--') > 0) or: [aLine withBlanksTrimmed isEmpty])ifFalse: [ - fields add: aLine subStrings first + result add: aLine substrings first ]. ]. - ^fields + ^result ] { #category : #'services parsing' } diff --git a/source/ASN1-Core/ASN1FieldDefinition.class.st b/source/ASN1-Core/ASN1FieldDefinition.class.st index 226a8d8..0845f4c 100644 --- a/source/ASN1-Core/ASN1FieldDefinition.class.st +++ b/source/ASN1-Core/ASN1FieldDefinition.class.st @@ -29,7 +29,7 @@ ASN1FieldDefinition class >> forField: aFieldName onDefinition: aDefinitionStrin ifFalse: [noCommentsString := noCommentsString, aLine]. ]. fieldInfo := (noCommentsString explode: $,) - detect: [:aField | aField subStrings first = aFieldName] ifNone: [^nil]. + detect: [:aField | aField substrings first = aFieldName] ifNone: [^nil]. ^ self new parseFieldInfo: fieldInfo; yourself ] @@ -142,7 +142,7 @@ ASN1FieldDefinition >> isOptional: anObject [ ASN1FieldDefinition >> parseFieldInfo: fieldInfo [ "fill the current instance with fieldInformation" | subStrings explodedString noTagIndexString | - subStrings := fieldInfo subStrings. + subStrings := fieldInfo substrings. self fieldName: subStrings first. noTagIndexString := (fieldInfo includes: $[) ifTrue: [ self tagIndex: (fieldInfo copyFrom: (fieldInfo indexOf: $[) + 1 to: (fieldInfo indexOf: $]) - 1). @@ -150,7 +150,7 @@ ASN1FieldDefinition >> parseFieldInfo: fieldInfo [ ] ifFalse: [ fieldInfo ]. - explodedString := noTagIndexString subStrings asOrderedCollection. + explodedString := noTagIndexString substrings asOrderedCollection. (explodedString includes: 'EXPLICIT') ifTrue: [ explodedString := explodedString remove: 'EXPLICIT'; yourself. self isExplicit: true. From e604e4b7cf95b268d8bb8ae5df075099ec3c5eb8 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 22:49:48 +0200 Subject: [PATCH 23/36] use #assert:equals: --- .../ASN1-Core-Tests/CryptoASN1Test.class.st | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/source/ASN1-Core-Tests/CryptoASN1Test.class.st b/source/ASN1-Core-Tests/CryptoASN1Test.class.st index 7d25659..9a66740 100644 --- a/source/ASN1-Core-Tests/CryptoASN1Test.class.st +++ b/source/ASN1-Core-Tests/CryptoASN1Test.class.st @@ -201,33 +201,36 @@ CryptoASN1Test >> testConstructedUniversalString [ CryptoASN1Test >> testDefinedAnyDefinedByType [ | bytes obj newBytes type | - ((ASN1Module name: #test) sequence: #TestSequence mapping: ASN1TestModel) + ((ASN1Module name: #test) + sequence: #TestSequence + mapping: ASN1TestModel) add: #testSlot1 type: #ASN1ObjectIdentifierType; add: #testSlot2 type: #TestAnyDefinedBy; yourself. - ((ASN1Module name: #test) any: #TestAnyDefinedBy definedBy: #testSlot1) + ((ASN1Module name: #test) + any: #TestAnyDefinedBy + definedBy: #testSlot1) at: (ASN1ObjectId fromString: '1.1') put: #ASN1BooleanType; at: (ASN1ObjectId fromString: '1.2') put: #ASN1IntegerType; yourself. type := (ASN1Module name: #test) find: #TestSequence. - bytes := #(48 6 6 1 41 1 1 255). + bytes := #( 48 6 6 1 41 1 1 255 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = (ASN1ObjectId fromString: '1.1')). - self assert: (obj testSlot2 = true). + self assert: obj testSlot1 equals: (ASN1ObjectId fromString: '1.1'). + self assert: obj testSlot2 equals: true. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). + self assert: bytes asByteArray equals: newBytes. - bytes := #(48 7 6 1 42 2 2 3 21). + bytes := #( 48 7 6 1 42 2 2 3 21 ). obj := ASN1Stream decodeBytes: bytes withType: type. self assert: (obj isKindOf: ASN1TestModel). - self assert: (obj testSlot1 = (ASN1ObjectId fromString: '1.2')). - self assert: (obj testSlot2 = 789). + self assert: obj testSlot1 equals: (ASN1ObjectId fromString: '1.2'). + self assert: obj testSlot2 equals: 789. newBytes := ASN1Stream encode: obj withType: type. - self assert: (bytes asByteArray = newBytes). - + self assert: bytes asByteArray equals: newBytes ] { #category : #'tests - defined types' } From 270749b41ef62ab8530cc63494b79a7fd4eacf82 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 23:01:37 +0200 Subject: [PATCH 24/36] Better catagorization --- source/ASN1-Readers-Tests/CryptoRSATest.class.st | 7 +++---- source/ASN1-Readers/DSAPrivateKeyFileReader.class.st | 2 +- source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st | 2 +- source/ASN1-Readers/RSAPrivateKeyFileReader.class.st | 2 +- source/ASN1-Readers/RSAPublicKeyFileReader.class.st | 2 +- source/ASN1-Readers/X509CertificateDerReader.class.st | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/source/ASN1-Readers-Tests/CryptoRSATest.class.st b/source/ASN1-Readers-Tests/CryptoRSATest.class.st index c67bb71..e9cbfce 100644 --- a/source/ASN1-Readers-Tests/CryptoRSATest.class.st +++ b/source/ASN1-Readers-Tests/CryptoRSATest.class.st @@ -5,10 +5,10 @@ Class { 'privateKey', 'publicKey' ], - #category : #'ASN1-Readers-Tests' + #category : #'ASN1-Readers-Tests-Base' } -{ #category : #RSA } +{ #category : #'private - RSA' } CryptoRSATest >> derKeys [ | key64 | @@ -16,7 +16,7 @@ CryptoRSATest >> derKeys [ ^ key64 base64Decoded ] -{ #category : #RSA } +{ #category : #'private - RSA' } CryptoRSATest >> encodedBase64Keys [ ^ 'MIICXgIBAAKBgQDkI45GM6mYLlbxrKozE6bXWMoxvtVuIWOIF1KcGLED+4Gipriw @@ -57,7 +57,6 @@ CryptoRSATest >> setUp [ | reader | super setUp. - reader := RSAPrivateKeyFileReader new. reader decryptedBytes: self derKeys. privateKey := reader asPrivateKey. diff --git a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st index 6b83d72..03d7ec8 100644 --- a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st @@ -7,7 +7,7 @@ Class { 'iv', 'password' ], - #category : 'ASN1-Readers' + #category : #'ASN1-Readers-DSA' } { #category : #'as yet unclassified' } diff --git a/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st b/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st index 0bfb5a9..8fe0998 100644 --- a/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st +++ b/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st @@ -1,7 +1,7 @@ Class { #name : #OpenSSLKeyDerivationFunction, #superclass : #Object, - #category : 'ASN1-Readers' + #category : #'ASN1-Readers-OpenSSL' } { #category : #'as yet unclassified' } diff --git a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st index 50a569a..f15f993 100644 --- a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st @@ -7,7 +7,7 @@ Class { 'iv', 'password' ], - #category : 'ASN1-Readers' + #category : #'ASN1-Readers-RSA' } { #category : #'instance creation' } diff --git a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st index ac20059..d4c849b 100644 --- a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'bytes' ], - #category : 'ASN1-Readers' + #category : #'ASN1-Readers-RSA' } { #category : #'instance creation' } diff --git a/source/ASN1-Readers/X509CertificateDerReader.class.st b/source/ASN1-Readers/X509CertificateDerReader.class.st index b0e8914..21113cc 100644 --- a/source/ASN1-Readers/X509CertificateDerReader.class.st +++ b/source/ASN1-Readers/X509CertificateDerReader.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'derBytes' ], - #category : 'ASN1-Readers' + #category : #'ASN1-Readers-X509' } { #category : #'instance creation' } From 9a37823ba76f7e38fd887fae575f3c35ed6a18e1 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 23:13:08 +0200 Subject: [PATCH 25/36] Use #findAnySubstring:startingAt: now Fix #39 --- .../ASN1-Readers/DSAPrivateKeyFileReader.class.st | 11 +++++------ .../ASN1-Readers/RSAPrivateKeyFileReader.class.st | 14 +++++--------- .../ASN1-Readers/RSAPublicKeyFileReader.class.st | 6 +++--- .../ASN1-Readers/X509CertificateDerReader.class.st | 2 +- source/X509/X509Certificate.class.st | 7 +++---- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st index 03d7ec8..ef3abc4 100644 --- a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st @@ -10,7 +10,7 @@ Class { #category : #'ASN1-Readers-DSA' } -{ #category : #'as yet unclassified' } +{ #category : #'instance creation' } DSAPrivateKeyFileReader class >> fromFile: filename [ "(DSAPrivateKeyFileReader fromFile: '/usr/local/ssl/private/dsa.key')" "(DSAPrivateKeyFileReader fromFile: '/Users/slosher/Desktop/squeak/certificates/dsa.key')" @@ -67,8 +67,7 @@ DSAPrivateKeyFileReader >> bytes: anObject [ DSAPrivateKeyFileReader >> decrypt [ | cipher key block encryptedStream decryptedStream | - self password isNil - ifTrue: [self password: (FillInTheBlank requestPassword: 'Enter your password')]. + self password ifNil: [self password: (UIManager default requestPassword: 'Enter your password')]. key := OpenSSLKeyDerivationFunction new derivedKeyFromPassword: self password salt: self iv @@ -105,11 +104,11 @@ DSAPrivateKeyFileReader >> initializeFromFileContents: data [ i := data indexOfSubCollection: '--BEGIN ' startingAt: 1. i = 0 ifTrue: [self bytes: data asByteArray. ^ self]. i := data indexOfSubCollection: 'KEY--' startingAt: i. - i := data findAnySubStr: String crlf startingAt: i. - j := data findAnySubStr: String crlf startingAt: i + 1. + i := data findAnySubstring: String crlf startingAt: i. + j := data findAnySubstring: String crlf startingAt: i + 1. self processProcType: (data copyFrom: i + 1 to: j). i := j. - j := data findAnySubStr: String crlf startingAt: i + 1. + j := data findAnySubstring: String crlf startingAt: i + 1. self processDEKInfo: (data copyFrom: i + 1 to: j). i := j. j := data indexOfSubCollection: '--END ' startingAt: i. diff --git a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st index f15f993..226e3d9 100644 --- a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st @@ -15,10 +15,7 @@ RSAPrivateKeyFileReader class >> fromFile: filename [ "(RSAPrivateKeyFileReader fromFile: '/usr/local/ssl/private/CA.key')" "(RSAPrivateKeyFileReader fromFile: '/Users/slosher/Desktop/squeak/certificates/rsa.key')" - | fs data | - fs := StandardFileStream fileNamed: filename. - data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data + ^ self new initializeFromFileContents: filename asFileReference contents ] @@ -67,8 +64,7 @@ RSAPrivateKeyFileReader >> bytes: anObject [ RSAPrivateKeyFileReader >> decrypt [ | cipher key block encryptedStream decryptedStream | - self password isNil - ifTrue: [self password: (FillInTheBlank requestPassword: 'Enter your password')]. + self password ifNil: [self password: (UIManager default requestPassword: 'Enter your password')]. key := OpenSSLKeyDerivationFunction new derivedKeyFromPassword: self password salt: self iv @@ -105,11 +101,11 @@ RSAPrivateKeyFileReader >> initializeFromFileContents: data [ i := data indexOfSubCollection: '--BEGIN ' startingAt: 1. i = 0 ifTrue: [self derBytes: data asByteArray. ^ self]. i := data indexOfSubCollection: 'KEY--' startingAt: i. - i := data findAnySubStr: String crlf startingAt: i. - j := data findAnySubStr: String crlf startingAt: i + 1. + i := data findAnySubstring: String crlf startingAt: i. + j := data findAnySubstring: String crlf startingAt: i + 1. self processProcType: (data copyFrom: i + 1 to: j). i := j. - j := data findAnySubStr: String crlf startingAt: i + 1. + j := data findAnySubstring: String crlf startingAt: i + 1. self processDEKInfo: (data copyFrom: i + 1 to: j). i := j. j := data indexOfSubCollection: '--END ' startingAt: i. diff --git a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st index d4c849b..5c11c52 100644 --- a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st @@ -56,11 +56,11 @@ RSAPublicKeyFileReader >> initializeFromFileContents: data [ i := data indexOfSubCollection: '--BEGIN ' startingAt: 1. i = 0 ifTrue: [self derBytes: data asByteArray. ^ self]. i := data indexOfSubCollection: 'KEY--' startingAt: i. - i := data findAnySubStr: String crlf startingAt: i. - j := data findAnySubStr: String crlf startingAt: i + 1. + i := data findAnySubstring: String crlf startingAt: i. + j := data findAnySubstring: String crlf startingAt: i + 1. " self processProcType: (data copyFrom: i + 1 to: j)." i := j. - j := data findAnySubStr: String crlf startingAt: i + 1. + j := data findAnySubstring: String crlf startingAt: i + 1. " self processDEKInfo: (data copyFrom: i + 1 to: j)." i := j. j := data indexOfSubCollection: '--END ' startingAt: i. diff --git a/source/ASN1-Readers/X509CertificateDerReader.class.st b/source/ASN1-Readers/X509CertificateDerReader.class.st index 21113cc..116fa86 100644 --- a/source/ASN1-Readers/X509CertificateDerReader.class.st +++ b/source/ASN1-Readers/X509CertificateDerReader.class.st @@ -54,7 +54,7 @@ X509CertificateDerReader >> initializeFromFileContents: data [ ifFalse: [ i := data indexOfSubCollection: 'CERTIFICATE--' startingAt: i. j := data indexOfSubCollection: '--END ' startingAt: i. - i := data findAnySubStr: String crlf startingAt: i. + i := data findAnySubstring: String crlf startingAt: i. theData := (data copyFrom: i to: j) reject: [:c | (c = $-) or: [c isSeparator]]]. theData := (Base64MimeConverter mimeDecodeToBytes: theData readStream) contents. diff --git a/source/X509/X509Certificate.class.st b/source/X509/X509Certificate.class.st index 4a50378..aff06d1 100644 --- a/source/X509/X509Certificate.class.st +++ b/source/X509/X509Certificate.class.st @@ -21,14 +21,13 @@ X509Certificate class >> fromBytes: bytes [ { #category : #'instance creation' } X509Certificate class >> fromFile: filename [ - | fs data i j | - fs := StandardFileStream readOnlyFileNamed: filename. - data := fs contentsOfEntireFile. + | data i j | + data := filename asFileReference contents. i := data indexOfSubCollection: '--BEGIN ' startingAt: 1. i = 0 ifTrue: [^ self fromBytes: data asByteArray]. i := data indexOfSubCollection: 'CERTIFICATE--' startingAt: i. j := data indexOfSubCollection: '--END ' startingAt: i. - i := data findAnySubStr: String crlf startingAt: i. + i := data findAnySubstring: String crlf startingAt: i. data := (data copyFrom: i to: j) reject: [:c | (c = $-) or: [c isSeparator]]. data := (Base64MimeConverter mimeDecodeToBytes: data readStream) contents. From 08bf02e54d2ac7fe4bb77a777941e4b245102deb Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 23:30:16 +0200 Subject: [PATCH 26/36] Use #withBlanksCondensed now, no dependency on StandardFileStream anymore --- source/ASN1-Core/ASN1DefinitionModel.class.st | 6 +++--- source/ASN1-Core/ASN1FieldDefinition.class.st | 2 +- source/ASN1-Readers/DSAPrivateKeyFileReader.class.st | 5 ++++- .../OpenSSLKeyDerivationFunction.class.st | 5 ++++- source/ASN1-Readers/RSAPrivateKeyFileReader.class.st | 5 ++++- source/ASN1-Readers/RSAPublicKeyFileReader.class.st | 10 +++++----- .../ASN1-Readers/X509CertificateDerReader.class.st | 12 ++++++------ 7 files changed, 27 insertions(+), 18 deletions(-) diff --git a/source/ASN1-Core/ASN1DefinitionModel.class.st b/source/ASN1-Core/ASN1DefinitionModel.class.st index 78bd526..81023c8 100644 --- a/source/ASN1-Core/ASN1DefinitionModel.class.st +++ b/source/ASN1-Core/ASN1DefinitionModel.class.st @@ -224,7 +224,7 @@ ASN1DefinitionModel >> parseASN1ClassName [ aDefString := self asn1DefinitionString ifNil: [ ^ nil ]. classSepIndex := aDefString indexOfSubCollection: '::='. classSepIndex = 0 ifTrue: [ ^ nil ]. - ^ (aDefString copyFrom: 1 to: classSepIndex - 1) withBlanksTrimmed + ^ (aDefString copyFrom: 1 to: classSepIndex - 1) withBlanksCondensed ] { #category : #'services parsing' } @@ -246,7 +246,7 @@ ASN1DefinitionModel >> parseFieldNames [ aString := self asn1DefinitionString. result := OrderedCollection new. (aString copyFrom: (aString indexOf: ${) + 1 to: (aString indexOf: $}) - 1) linesDo: [:aLine | - (((aLine indexOfSubCollection: '--') > 0) or: [aLine withBlanksTrimmed isEmpty])ifFalse: [ + (((aLine indexOfSubCollection: '--') > 0) or: [aLine withBlanksCondensed isEmpty])ifFalse: [ result add: aLine substrings first ]. ]. @@ -261,7 +261,7 @@ ASN1DefinitionModel >> parseRootObjectType [ aString := self asn1DefinitionString. aType := (aString copyFrom: (aString indexOfSubCollection: '::=') + 4 to: (aString indexOf: ${) - - 1) withBlanksTrimmed. + - 1) withBlanksCondensed. ^aType isEmpty ifTrue: [self subject] ifFalse: [aType = 'SEQUENCE' diff --git a/source/ASN1-Core/ASN1FieldDefinition.class.st b/source/ASN1-Core/ASN1FieldDefinition.class.st index 0845f4c..c6d03ed 100644 --- a/source/ASN1-Core/ASN1FieldDefinition.class.st +++ b/source/ASN1-Core/ASN1FieldDefinition.class.st @@ -25,7 +25,7 @@ ASN1FieldDefinition class >> forField: aFieldName onDefinition: aDefinitionStrin - 1. noCommentsString := String new. definitionContents linesDo: [:aLine | - ((aLine indexOfSubCollection: '--') > 0 or: [aLine withBlanksTrimmed isEmpty]) + ((aLine indexOfSubCollection: '--') > 0 or: [aLine withBlanksCondensed isEmpty]) ifFalse: [noCommentsString := noCommentsString, aLine]. ]. fieldInfo := (noCommentsString explode: $,) diff --git a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st index ef3abc4..9864385 100644 --- a/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/DSAPrivateKeyFileReader.class.st @@ -1,3 +1,6 @@ +" +Reader for DSA private key files +" Class { #name : #DSAPrivateKeyFileReader, #superclass : #Object, @@ -153,7 +156,7 @@ DSAPrivateKeyFileReader >> processDEKInfo: data [ | stream algorithm | stream := data readStream. stream upTo: $:. - algorithm := (stream upTo: $,) withBlanksTrimmed. + algorithm := (stream upTo: $,) withBlanksCondensed. self iv: (Integer readFrom: stream base: 16) asByteArray. ] diff --git a/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st b/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st index 8fe0998..ed2e5c8 100644 --- a/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st +++ b/source/ASN1-Readers/OpenSSLKeyDerivationFunction.class.st @@ -1,10 +1,13 @@ +" +Reader for OpenSSL key derivation function +" Class { #name : #OpenSSLKeyDerivationFunction, #superclass : #Object, #category : #'ASN1-Readers-OpenSSL' } -{ #category : #'as yet unclassified' } +{ #category : #accessing } OpenSSLKeyDerivationFunction >> derivedKeyFromPassword: password salt: salt size: size [ | result block digest | diff --git a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st index 226e3d9..8375080 100644 --- a/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPrivateKeyFileReader.class.st @@ -1,3 +1,6 @@ +" +Reader for RSA private key files +" Class { #name : #RSAPrivateKeyFileReader, #superclass : #Object, @@ -150,7 +153,7 @@ RSAPrivateKeyFileReader >> processDEKInfo: data [ | stream algorithm | stream := data readStream. stream upTo: $:. - algorithm := (stream upTo: $,) withBlanksTrimmed. + algorithm := (stream upTo: $,) withBlanksCondensed. self iv: (Integer readFrom: stream base: 16) asByteArray. ] diff --git a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st index 5c11c52..243aeb4 100644 --- a/source/ASN1-Readers/RSAPublicKeyFileReader.class.st +++ b/source/ASN1-Readers/RSAPublicKeyFileReader.class.st @@ -1,3 +1,6 @@ +" +Reader for RSA public key files +" Class { #name : #RSAPublicKeyFileReader, #superclass : #Object, @@ -12,10 +15,7 @@ RSAPublicKeyFileReader class >> fromFile: filename [ "(RSAPrivateKeyFileReader fromFile: '/usr/local/ssl/private/CA.key')" "(RSAPrivateKeyFileReader fromFile: '/Users/slosher/Desktop/squeak/certificates/rsa.key')" - | fs data | - fs := StandardFileStream fileNamed: filename. - data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data + ^ self new initializeFromFileContents: filename asFileReference contents ] @@ -49,7 +49,7 @@ RSAPublicKeyFileReader >> bytes: anObject [ bytes := anObject ] -{ #category : #'initialize-release' } +{ #category : #'private - initialization' } RSAPublicKeyFileReader >> initializeFromFileContents: data [ | i j theData | diff --git a/source/ASN1-Readers/X509CertificateDerReader.class.st b/source/ASN1-Readers/X509CertificateDerReader.class.st index 116fa86..f4f403f 100644 --- a/source/ASN1-Readers/X509CertificateDerReader.class.st +++ b/source/ASN1-Readers/X509CertificateDerReader.class.st @@ -1,3 +1,6 @@ +" +Reader for X509 DER certfificates +" Class { #name : #X509CertificateDerReader, #superclass : #Object, @@ -12,7 +15,7 @@ X509CertificateDerReader class >> fromDerBytes: bytes [ ^ self new derBytes: bytes; - yourself. + yourself ] @@ -23,10 +26,7 @@ X509CertificateDerReader class >> fromFile: filename [ "(X509CertificateDerReader fromFile: '/Users/slosher/Desktop/squeak/certificates/class3cacert.crt') asCertificate" "(X509CertificateDerReader fromFile: '/Users/slosher/Desktop/squeak/certificates/class1cacert.crt') asCertificate" - | fs data | - fs := StandardFileStream fileNamed: filename. - data := fs contentsOfEntireFile. - ^ self new initializeFromFileContents: data + ^ self new initializeFromFileContents: filename asFileReference contents ] @@ -44,7 +44,7 @@ X509CertificateDerReader >> derBytes: anObject [ derBytes := anObject ] -{ #category : #'initialize-release' } +{ #category : #'private - initialization' } X509CertificateDerReader >> initializeFromFileContents: data [ | i j theData | From 1a5d2c7eedb85bf539ab048d9d8c382b77f9a1d5 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Fri, 16 Apr 2021 23:47:46 +0200 Subject: [PATCH 27/36] Extract tests into own package Cryptography-Core-Tests' --- .../BaselineOfCryptography.class.st | 11 +++++++---- .../CryptoDESTest.class.st | 2 +- .../CryptoDSATest.class.st | 2 +- .../CryptoDiffieHellmanTest.class.st | 2 +- .../CryptoElGamalTest.class.st | 2 +- .../CryptoHashFunctionTest.class.st | 2 +- .../CryptoRC2Test.class.st | 2 +- .../CryptoRC4Test.class.st | 2 +- .../CryptoRandomTest.class.st | 2 +- .../CryptoRigndaelCBCTest.class.st | 2 +- .../CryptoRijndaelTest.class.st | 2 +- source/Cryptography-Core-Tests/package.st | 1 + source/Cryptography/ARC2.class.st | 2 +- source/Cryptography/DiffieHellman.class.st | 2 +- 14 files changed, 20 insertions(+), 16 deletions(-) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoDESTest.class.st (98%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoDSATest.class.st (96%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoDiffieHellmanTest.class.st (95%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoElGamalTest.class.st (99%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoHashFunctionTest.class.st (99%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoRC2Test.class.st (98%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoRC4Test.class.st (96%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoRandomTest.class.st (93%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoRigndaelCBCTest.class.st (99%) rename source/{Cryptography => Cryptography-Core-Tests}/CryptoRijndaelTest.class.st (99%) create mode 100644 source/Cryptography-Core-Tests/package.st diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index 64a9d9d..575a7b3 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -12,7 +12,10 @@ BaselineOfCryptography >> baseline: spec [ spec for: #common do: [ - spec package: 'Cryptography'. + spec + package: 'Cryptography'; + package: 'Cryptography-Core-Tests' with: [ spec requires: #(#'Cryptography' ) ]. + spec "ASN1" package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography' ) ]; @@ -40,7 +43,7 @@ BaselineOfCryptography >> baseline: spec [ spec group: 'core' with: #('Cryptography'); group: 'default' with: #('legacy'); - group: 'legacy' with: #('Cryptography' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); - group: 'all' with: #('Cryptography' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') - ]. + group: 'legacy' with: #('Cryptography' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); + group: 'all' with: #('Cryptography' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') + ]. ] diff --git a/source/Cryptography/CryptoDESTest.class.st b/source/Cryptography-Core-Tests/CryptoDESTest.class.st similarity index 98% rename from source/Cryptography/CryptoDESTest.class.st rename to source/Cryptography-Core-Tests/CryptoDESTest.class.st index 28a94ee..b8abefd 100644 --- a/source/Cryptography/CryptoDESTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDESTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoDESTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-DES' } { #category : #accessing } diff --git a/source/Cryptography/CryptoDSATest.class.st b/source/Cryptography-Core-Tests/CryptoDSATest.class.st similarity index 96% rename from source/Cryptography/CryptoDSATest.class.st rename to source/Cryptography-Core-Tests/CryptoDSATest.class.st index 5296c91..6059968 100644 --- a/source/Cryptography/CryptoDSATest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDSATest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoDSATest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-DSA' } { #category : #DSA } diff --git a/source/Cryptography/CryptoDiffieHellmanTest.class.st b/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st similarity index 95% rename from source/Cryptography/CryptoDiffieHellmanTest.class.st rename to source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st index ea63265..a3630ab 100644 --- a/source/Cryptography/CryptoDiffieHellmanTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoDiffieHellmanTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-Diffie-Hellman' } { #category : #testing } diff --git a/source/Cryptography/CryptoElGamalTest.class.st b/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st similarity index 99% rename from source/Cryptography/CryptoElGamalTest.class.st rename to source/Cryptography-Core-Tests/CryptoElGamalTest.class.st index 0a101e3..810d4f5 100644 --- a/source/Cryptography/CryptoElGamalTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'elGamalGenerators' ], - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-ElGamal' } { #category : #ElGamal } diff --git a/source/Cryptography/CryptoHashFunctionTest.class.st b/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st similarity index 99% rename from source/Cryptography/CryptoHashFunctionTest.class.st rename to source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st index f80c1da..14f896f 100644 --- a/source/Cryptography/CryptoHashFunctionTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoHashFunctionTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-MD5' } { #category : #'hash algorithms' } diff --git a/source/Cryptography/CryptoRC2Test.class.st b/source/Cryptography-Core-Tests/CryptoRC2Test.class.st similarity index 98% rename from source/Cryptography/CryptoRC2Test.class.st rename to source/Cryptography-Core-Tests/CryptoRC2Test.class.st index cdc094b..f67d048 100644 --- a/source/Cryptography/CryptoRC2Test.class.st +++ b/source/Cryptography-Core-Tests/CryptoRC2Test.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoRC2Test, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-RC2' } { #category : #testing } diff --git a/source/Cryptography/CryptoRC4Test.class.st b/source/Cryptography-Core-Tests/CryptoRC4Test.class.st similarity index 96% rename from source/Cryptography/CryptoRC4Test.class.st rename to source/Cryptography-Core-Tests/CryptoRC4Test.class.st index 185da5c..f0e7f62 100644 --- a/source/Cryptography/CryptoRC4Test.class.st +++ b/source/Cryptography-Core-Tests/CryptoRC4Test.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoRC4Test, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-RC4' } { #category : #accessing } diff --git a/source/Cryptography/CryptoRandomTest.class.st b/source/Cryptography-Core-Tests/CryptoRandomTest.class.st similarity index 93% rename from source/Cryptography/CryptoRandomTest.class.st rename to source/Cryptography-Core-Tests/CryptoRandomTest.class.st index 026de90..ae7e675 100644 --- a/source/Cryptography/CryptoRandomTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoRandomTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoRandomTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-RandomAndPrime' } { #category : #others } diff --git a/source/Cryptography/CryptoRigndaelCBCTest.class.st b/source/Cryptography-Core-Tests/CryptoRigndaelCBCTest.class.st similarity index 99% rename from source/Cryptography/CryptoRigndaelCBCTest.class.st rename to source/Cryptography-Core-Tests/CryptoRigndaelCBCTest.class.st index 709368f..453fb43 100644 --- a/source/Cryptography/CryptoRigndaelCBCTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoRigndaelCBCTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoRigndaelCBCTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-Rijndael' } { #category : #tests } diff --git a/source/Cryptography/CryptoRijndaelTest.class.st b/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st similarity index 99% rename from source/Cryptography/CryptoRijndaelTest.class.st rename to source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st index 140deb4..61c451d 100644 --- a/source/Cryptography/CryptoRijndaelTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st @@ -1,7 +1,7 @@ Class { #name : #CryptoRijndaelTest, #superclass : #TestCase, - #category : #'Cryptography-Tests' + #category : #'Cryptography-Core-Tests-Rijndael' } { #category : #'block ciphers' } diff --git a/source/Cryptography-Core-Tests/package.st b/source/Cryptography-Core-Tests/package.st new file mode 100644 index 0000000..403208d --- /dev/null +++ b/source/Cryptography-Core-Tests/package.st @@ -0,0 +1 @@ +Package { #name : #'Cryptography-Core-Tests' } diff --git a/source/Cryptography/ARC2.class.st b/source/Cryptography/ARC2.class.st index 84b9522..bb2f002 100644 --- a/source/Cryptography/ARC2.class.st +++ b/source/Cryptography/ARC2.class.st @@ -644,7 +644,7 @@ Class { #classVars : [ 'PITABLE' ], - #category : #'Cryptography-ARC2' + #category : #'Cryptography-RC2' } { #category : #LICENSE } diff --git a/source/Cryptography/DiffieHellman.class.st b/source/Cryptography/DiffieHellman.class.st index 547168b..02e3a70 100644 --- a/source/Cryptography/DiffieHellman.class.st +++ b/source/Cryptography/DiffieHellman.class.st @@ -35,7 +35,7 @@ Class { 'secret', 'sharedKey' ], - #category : #'Cryptography-ElGamal' + #category : #'Cryptography-Diffie-Hellman' } { #category : #'instance creation' } From 4001bdde7374892b7e58a7fa168bbb6a35222209 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 00:05:51 +0200 Subject: [PATCH 28/36] Categorization and formatting --- .../CryptoDESTest.class.st | 58 ++++++++----------- .../CryptoDSATest.class.st | 6 +- .../CryptoDiffieHellmanTest.class.st | 8 +-- .../CryptoElGamalTest.class.st | 25 ++++---- .../CryptoHashFunctionTest.class.st | 20 +++---- .../CryptoRC2Test.class.st | 4 +- .../CryptoRC4Test.class.st | 4 +- .../CryptoRandomTest.class.st | 2 +- .../CryptoRijndaelTest.class.st | 20 +++---- 9 files changed, 69 insertions(+), 78 deletions(-) diff --git a/source/Cryptography-Core-Tests/CryptoDESTest.class.st b/source/Cryptography-Core-Tests/CryptoDESTest.class.st index b8abefd..f2626e3 100644 --- a/source/Cryptography-Core-Tests/CryptoDESTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDESTest.class.st @@ -4,23 +4,20 @@ Class { #category : #'Cryptography-Core-Tests-DES' } -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testDES [ | plain key d | - plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) - asByteArray. - key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF ) - asByteArray. + plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. + key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) asByteArray. d := DES key: key. d encryptBlock: plain. self assert: plain - equals: - #( 16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D ) asByteArray + equals: #(16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D) asByteArray ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testDES2 [ | plain key d | @@ -31,7 +28,7 @@ CryptoDESTest >> testDES2 [ self assert: plain equals: #[ 64 222 70 13 59 145 76 186 ] ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testDES3 [ | plain plainCopy key d | @@ -45,7 +42,7 @@ CryptoDESTest >> testDES3 [ equals: #[ 64 222 70 13 59 145 76 186 ] ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testDESCBC [ | plain key encryptor decryptor vector | @@ -69,11 +66,11 @@ CryptoDESTest >> testDESCBC [ #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testDESFormal [ | x d | - x := #( 16r94 16r74 16rB8 16rE8 16rC7 16r3B 16rCA 16r7D ) asByteArray. + x := #(16r94 16r74 16rB8 16rE8 16rC7 16r3B 16rCA 16r7D) asByteArray. 1 to: 16 do: [ :i | d := DES key: x. (i - 1) even @@ -81,43 +78,37 @@ CryptoDESTest >> testDESFormal [ ifFalse: [ d decryptBlock: x ] ]. self assert: x - equals: - #( 16r1B 16r1A 16r2D 16rDB 16r4C 16r64 16r24 16r38 ) asByteArray + equals: #(16r1B 16r1A 16r2D 16rDB 16r4C 16r64 16r24 16r38) asByteArray ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testTripleDES [ | plain key d | - plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) - asByteArray. - key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 - 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 - 16r89 16rAB 16rCD 16rEF ) asByteArray. + plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. + key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 + 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 + 16r89 16rAB 16rCD 16rEF) asByteArray. d := TripleDES key: key. d encryptBlock: plain. self assert: plain - equals: - #( 16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D ) asByteArray. + equals: #(16rC9 16r57 16r44 16r25 16r6A 16r5E 16rD3 16r1D) asByteArray. d decryptBlock: plain. self assert: plain - equals: - #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray + equals: #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray ] -{ #category : #accessing } +{ #category : #tests } CryptoDESTest >> testTripleDESCBC [ | plain key encryptor decryptor vector | - plain := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) - asByteArray. - key := #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 - 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 - 16r89 16rAB 16rCD 16rEF ) asByteArray. - vector := #( 16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77 ) - asByteArray. + plain := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray. + key := #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 + 16r45 16r67 16r89 16rAB 16rCD 16rEF 16r01 16r23 16r45 16r67 + 16r89 16rAB 16rCD 16rEF) asByteArray. + vector := #(16r00 16r11 16r22 16r33 16r44 16r55 16r66 16r77) asByteArray. encryptor := (TripleDES key: key) cbc. encryptor initialVector: vector copy. decryptor := (TripleDES key: key) cbc. @@ -128,6 +119,5 @@ CryptoDESTest >> testTripleDESCBC [ decryptor decryptBlock: plain. self assert: plain - equals: - #( 16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7 ) asByteArray + equals: #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rE7) asByteArray ] diff --git a/source/Cryptography-Core-Tests/CryptoDSATest.class.st b/source/Cryptography-Core-Tests/CryptoDSATest.class.st index 6059968..72b3c68 100644 --- a/source/Cryptography-Core-Tests/CryptoDSATest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDSATest.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-DSA' } -{ #category : #DSA } +{ #category : #'accessing - data' } CryptoDSATest >> dsaPrivateKey [ ^ DSAPrivateKey p: 8343811888543852523216773185009428259187948644369498021763210776677854991854533186365944349987509452133156416880596803846631577352387751880552969116768071 @@ -13,7 +13,7 @@ CryptoDSATest >> dsaPrivateKey [ x: 957348690772296812 ] -{ #category : #'as yet unclassified' } +{ #category : #'accessing - data' } CryptoDSATest >> dsaPublicKey [ ^ DSAPublicKey p: 8343811888543852523216773185009428259187948644369498021763210776677854991854533186365944349987509452133156416880596803846631577352387751880552969116768071 @@ -22,7 +22,7 @@ CryptoDSATest >> dsaPublicKey [ y: 4645213122572190617807944614677917601101008235397095646475699959851618402406173485853587185431290863173614335452934961425661774118334228449202337038283799 ] -{ #category : #DSA } +{ #category : #tests } CryptoDSATest >> testDSASigningAndVerifying [ | msg sig | msg := 'This is a test...'. diff --git a/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st b/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st index a3630ab..6336449 100644 --- a/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoDiffieHellmanTest.class.st @@ -4,19 +4,19 @@ Class { #category : #'Cryptography-Core-Tests-Diffie-Hellman' } -{ #category : #testing } +{ #category : #'accessing - data' } CryptoDiffieHellmanTest >> generator [ ^ 19717436579274206947345122013064021491006648667525860934655329476450089156965164852462918009904002231332897658527803 ] -{ #category : #testing } +{ #category : #'accessing - data' } CryptoDiffieHellmanTest >> prime [ ^ 75736283208334870880874184828066736731062763491072315486250947429607562308928878772529680132938244784039544211105987 ] -{ #category : #testing } +{ #category : #tests } CryptoDiffieHellmanTest >> testDiffieHellman [ | alice bob fromAlice fromBob k1 k2 | @@ -29,7 +29,7 @@ CryptoDiffieHellmanTest >> testDiffieHellman [ self assert: k1 equals: k2 ] -{ #category : #testing } +{ #category : #tests } CryptoDiffieHellmanTest >> testDiffieHellmanWithGeneration [ | alice bob fromAlice fromBob k1 k2 | diff --git a/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st b/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st index 810d4f5..2a3d9f6 100644 --- a/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoElGamalTest.class.st @@ -7,7 +7,7 @@ Class { #category : #'Cryptography-Core-Tests-ElGamal' } -{ #category : #ElGamal } +{ #category : #accessing } CryptoElGamalTest >> elGamalGeneratorOfSize: bits [ ^ elGamalGenerators at: bits @@ -16,21 +16,21 @@ CryptoElGamalTest >> elGamalGeneratorOfSize: bits [ ElGamalKeyGenerator new generateKeysOfSize: bits ] ] -{ #category : #ElGamal } +{ #category : #'accessing - data' } CryptoElGamalTest >> elGamalSizes [ -" ^#(384 512 768 1024 2048 )" + " ^#( 384 512 768 1024 2048 ) " - ^#(64 512 ) + ^ #( 64 512 ) ] -{ #category : #initialize } +{ #category : #initialization } CryptoElGamalTest >> initialize [ super initialize. self initializeElGamalGenerators ] -{ #category : #ElGamal } +{ #category : #'private - initialization' } CryptoElGamalTest >> initializeElGamalGenerators [ elGamalGenerators := Dictionary new @@ -52,18 +52,19 @@ CryptoElGamalTest >> initializeElGamalGenerators [ yourself ] -{ #category : #ElGamal } +{ #category : #'private - utilities' } CryptoElGamalTest >> performElGamalEncryption: bits [ + | elgamal pub priv c element | elgamal := self elGamalGeneratorOfSize: bits. pub := elgamal publicKey. priv := elgamal privateKey. - element := (SecureRandom picker nextBits: bits). + element := SecureRandom picker nextBits: bits. c := pub encryptElement: element. - self assert: (priv decryptElement: c) = element + self assert: (priv decryptElement: c) equals: element ] -{ #category : #ElGamal } +{ #category : #'private - utilities' } CryptoElGamalTest >> performElGamalSignature: bits [ | elgamal pub priv signature message | elgamal := self elGamalGeneratorOfSize: bits. @@ -74,12 +75,12 @@ CryptoElGamalTest >> performElGamalSignature: bits [ self assert: (pub verifySignature: signature onMessage: message) ] -{ #category : #ElGamal } +{ #category : #tests } CryptoElGamalTest >> testElGamalEncryption [ self elGamalSizes do: [:eachBits | self performElGamalEncryption: eachBits] ] -{ #category : #ElGamal } +{ #category : #tests } CryptoElGamalTest >> testElGamalSignature [ self elGamalSizes do: [:eachBits | self performElGamalSignature: eachBits] ] diff --git a/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st b/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st index 14f896f..9aa41d1 100644 --- a/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoHashFunctionTest.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-MD5' } -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testHMAC [ self @@ -25,7 +25,7 @@ CryptoHashFunctionTest >> testHMAC [ equals: 16r56BE34521D144C88DBB8C733F0E8B3F6 ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testHMACSHA1 [ self @@ -38,7 +38,7 @@ CryptoHashFunctionTest >> testHMACSHA1 [ asByteArray ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testLargeSHA1 [ "Here is the third example from the specification document (FIPS PUB 180-1). This example may take several minutes." @@ -49,7 +49,7 @@ CryptoHashFunctionTest >> testLargeSHA1 [ equals: 16r34AA973CD4C4DAA4F61EEB2BDBAD27316534016F ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testMD2 [ self assert: (MD2 hashMessage: '') asInteger = 16r8350E5A3E24C153DF2275C9F80692773. self assert: (MD2 hashMessage: 'a') asInteger = 16r32EC01EC4A6DAC72C0AB96FB34C0B5D1. @@ -60,7 +60,7 @@ CryptoHashFunctionTest >> testMD2 [ self assert: (MD2 hashMessage: '12345678901234567890123456789012345678901234567890123456789012345678901234567890') asInteger = 16rD5976F79D83D3A0DC9806C3C66F3EFD8. ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testMD4 [ self @@ -70,7 +70,7 @@ CryptoHashFunctionTest >> testMD4 [ asByteArray ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testMD5 [ self @@ -100,7 +100,7 @@ CryptoHashFunctionTest >> testMD5 [ equals: 16r57EDF4A22BE3C955AC49DA2E2107B67A ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testMD5Implementations [ "Check if the two implementations give the same results. Do nothing if the plugin is not available" @@ -116,7 +116,7 @@ CryptoHashFunctionTest >> testMD5Implementations [ data := data , 'Squeak' ] ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testSHA1 [ self @@ -129,7 +129,7 @@ CryptoHashFunctionTest >> testSHA1 [ equals: 16r84983E441C3BD26EBAAE4AA1F95129E5E54670F1 ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testSHA256 [ "these tests come from http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf" @@ -152,7 +152,7 @@ CryptoHashFunctionTest >> testSHA256 [ 16rCDC76E5C9914FB9281A1C7E284D73E67F1809A48A497200E046D39CCC7112CD0 ] ] -{ #category : #'hash algorithms' } +{ #category : #'tests - hash algorithms' } CryptoHashFunctionTest >> testSHA256Implementations [ "Check if the two implementations give the same results. Do nothing if the plugin is not available" diff --git a/source/Cryptography-Core-Tests/CryptoRC2Test.class.st b/source/Cryptography-Core-Tests/CryptoRC2Test.class.st index f67d048..4c67467 100644 --- a/source/Cryptography-Core-Tests/CryptoRC2Test.class.st +++ b/source/Cryptography-Core-Tests/CryptoRC2Test.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-RC2' } -{ #category : #testing } +{ #category : #'private - utilities' } CryptoRC2Test >> genericARC2TestKey: key effectiveKeyLength: aLength plaintext: plainText ciphertext: ciphertext [ | vector rc2 | @@ -18,7 +18,7 @@ CryptoRC2Test >> genericARC2TestKey: key effectiveKeyLength: aLength plaintext: rc2 destroy ] -{ #category : #testing } +{ #category : #tests } CryptoRC2Test >> testARC2 [ " All quantities are given in hexadecimal notation. diff --git a/source/Cryptography-Core-Tests/CryptoRC4Test.class.st b/source/Cryptography-Core-Tests/CryptoRC4Test.class.st index f0e7f62..4b2f02b 100644 --- a/source/Cryptography-Core-Tests/CryptoRC4Test.class.st +++ b/source/Cryptography-Core-Tests/CryptoRC4Test.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-RC4' } -{ #category : #accessing } +{ #category : #'private - utilities' } CryptoRC4Test >> genericARC4TestKey: key plaintext: plaintext ciphertext: ciphertext [ | vector rc4 | @@ -15,7 +15,7 @@ CryptoRC4Test >> genericARC4TestKey: key plaintext: plaintext ciphertext: cipher self assert: vector equals: ciphertext ] -{ #category : #'as yet unclassified' } +{ #category : #tests } CryptoRC4Test >> testARC4 [ self genericARC4TestKey: #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) plaintext: #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) ciphertext: #(16r75 16rB7 16r87 16r80 16r99 16rE0 16rC5 16r96). self genericARC4TestKey: #(16r01 16r23 16r45 16r67 16r89 16rAB 16rCD 16rEF) plaintext: #(16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00) ciphertext: #(16r74 16r94 16rC2 16rE7 16r10 16r4B 16r08 16r79). diff --git a/source/Cryptography-Core-Tests/CryptoRandomTest.class.st b/source/Cryptography-Core-Tests/CryptoRandomTest.class.st index ae7e675..697801d 100644 --- a/source/Cryptography-Core-Tests/CryptoRandomTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoRandomTest.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-RandomAndPrime' } -{ #category : #others } +{ #category : #tests } CryptoRandomTest >> testRandomGenerators [ | random randomBytes | diff --git a/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st b/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st index 61c451d..85a8798 100644 --- a/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st +++ b/source/Cryptography-Core-Tests/CryptoRijndaelTest.class.st @@ -4,7 +4,7 @@ Class { #category : #'Cryptography-Core-Tests-Rijndael' } -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> runBlockCipherModeTest: cipherModeSelector [ | key encipherer decipherer startMsg | key := #(190 219 189 251 27 38 8 9 135 25 167 8 238 107 29 251 136 65 107 0 37 215 45 130 84 87 13 206 8 55 74 82) asByteArray. @@ -27,7 +27,7 @@ CryptoRijndaelTest >> runBlockCipherModeTest: cipherModeSelector [ self assert: block = originalBlock ] ] -{ #category : #'as yet unclassified' } +{ #category : #'private - utilities' } CryptoRijndaelTest >> runEncryptDecrypt: blockCipherClass [ | msg key1 key2 enc1 enc2 dec1 dec2 ct2 ct1 | enc1 := blockCipherClass key: (key1 := SecureRandom picker nextBytes: 16). @@ -44,7 +44,7 @@ CryptoRijndaelTest >> runEncryptDecrypt: blockCipherClass [ self assert: (dec1 decrypt: ct1) = msg ] -{ #category : #'as yet unclassified' } +{ #category : #tests } CryptoRijndaelTest >> testByteArrayPadding [ | paddedHello fullBlockPad needsFullPad | paddedHello := #(104 101 108 108 111 11 11 11 11 11 11 11 11 11 11 11 ) asByteArray. @@ -62,22 +62,22 @@ CryptoRijndaelTest >> testByteArrayPadding [ self assert: needsFullPad unpaddedSize equals: 16 ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testCBC [ self runBlockCipherModeTest: #cbc ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testCFB [ self runBlockCipherModeTest: #cfb ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testCTR [ self runBlockCipherModeTest: #ctr ] -{ #category : #others } +{ #category : #'tests - others' } CryptoRijndaelTest >> testEncryptDecrypt [ BlockCipherMode allSubclasses asArray do: [ : each | @@ -86,12 +86,12 @@ CryptoRijndaelTest >> testEncryptDecrypt [ do: [ : warn | warn resume ] ] ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testOFB [ self runBlockCipherModeTest: #ofb ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testRijndael [ | rijndael vector | rijndael := Rijndael new keySize: 16; key: (0 to: 15) asByteArray. @@ -118,7 +118,7 @@ CryptoRijndaelTest >> testRijndael [ self assert: vector hex = '000102030405060708090a0b0c0d0e0f' ] -{ #category : #'block ciphers' } +{ #category : #'tests - block ciphers' } CryptoRijndaelTest >> testRijndael128128 [ | key vector cipher | key := #(16r2B 16r7E 16r15 16r16 16r28 16rAE 16rD2 16rA6 16rAB 16rF7 16r15 16r88 16r09 16rCF 16r4F 16r3C) asByteArray. From 29da3e135c3a3d5cf7b1c7c10cd354fb429b368c Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 00:10:45 +0200 Subject: [PATCH 29/36] Add class comments --- source/Cryptography/BlockCipherMode.class.st | 3 +++ source/Cryptography/CBC.class.st | 3 +++ source/Cryptography/CFB.class.st | 3 +++ source/Cryptography/OFB.class.st | 3 +++ 4 files changed, 12 insertions(+) diff --git a/source/Cryptography/BlockCipherMode.class.st b/source/Cryptography/BlockCipherMode.class.st index e18e24c..084daa3 100644 --- a/source/Cryptography/BlockCipherMode.class.st +++ b/source/Cryptography/BlockCipherMode.class.st @@ -1,3 +1,6 @@ +" +Common superclass for Cipher modes +" Class { #name : #BlockCipherMode, #superclass : #BlockCipher, diff --git a/source/Cryptography/CBC.class.st b/source/Cryptography/CBC.class.st index 8273f6b..3643f76 100644 --- a/source/Cryptography/CBC.class.st +++ b/source/Cryptography/CBC.class.st @@ -1,3 +1,6 @@ +" +Cipher Block Chaining Mode +" Class { #name : #CBC, #superclass : #BlockCipherMode, diff --git a/source/Cryptography/CFB.class.st b/source/Cryptography/CFB.class.st index 87916ff..001f242 100644 --- a/source/Cryptography/CFB.class.st +++ b/source/Cryptography/CFB.class.st @@ -1,3 +1,6 @@ +" +Cipher Feedback Mode +" Class { #name : #CFB, #superclass : #BlockCipherMode, diff --git a/source/Cryptography/OFB.class.st b/source/Cryptography/OFB.class.st index 3aafbb8..9382aaf 100644 --- a/source/Cryptography/OFB.class.st +++ b/source/Cryptography/OFB.class.st @@ -1,3 +1,6 @@ +" +Output Feedback Mode +" Class { #name : #OFB, #superclass : #BlockCipherMode, From d44750552385a8ad4f36031e5108757e80a725bb Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 01:06:09 +0200 Subject: [PATCH 30/36] more cleanups like formatting, class comments, switching to UI manager --- source/Cryptography/ARC4.class.st | 3 ++ source/Cryptography/BlockCipher.class.st | 6 ++++ source/Cryptography/BlockCipherMode.class.st | 11 +++++- .../Cryptography/CryptographyError.class.st | 2 +- source/Cryptography/DESNonPrimitive.class.st | 2 +- source/Cryptography/DSAPrivateKey.class.st | 3 ++ source/Cryptography/DSAPublicKey.class.st | 3 ++ source/Cryptography/EuclidAlgorithm.class.st | 3 ++ source/Cryptography/Fortuna.class.st | 10 ++++++ source/Cryptography/MD2.class.st | 19 +++++++---- source/Cryptography/MD4.class.st | 3 ++ source/Cryptography/MD5WithPrimitive.class.st | 13 ++++--- source/Cryptography/RSAPrivateKey.class.st | 3 ++ source/Cryptography/RandomGenerator.class.st | 34 +++++++++---------- source/Cryptography/RandomPool.class.st | 22 +++++++----- source/Cryptography/Rijndael.class.st | 3 ++ .../Cryptography/SHA256NonPrimitive.class.st | 3 ++ .../Cryptography/SHA256WithPrimitive.class.st | 6 ++-- source/Cryptography/SecureRandom.class.st | 8 +++-- .../SmalltalkImageInstanceID.class.st | 32 +++++++---------- source/Cryptography/TripleDES.class.st | 3 ++ 21 files changed, 128 insertions(+), 64 deletions(-) diff --git a/source/Cryptography/ARC4.class.st b/source/Cryptography/ARC4.class.st index 446037f..27557fe 100644 --- a/source/Cryptography/ARC4.class.st +++ b/source/Cryptography/ARC4.class.st @@ -1,3 +1,6 @@ +" +RC4 (Rivest Cipher 4 also known as ARC4 or ARCFOUR meaning Alleged RC4) +" Class { #name : #ARC4, #superclass : #Object, diff --git a/source/Cryptography/BlockCipher.class.st b/source/Cryptography/BlockCipher.class.st index 62dbf1d..5793d31 100644 --- a/source/Cryptography/BlockCipher.class.st +++ b/source/Cryptography/BlockCipher.class.st @@ -12,6 +12,12 @@ BlockCipher class >> blockSize [ ^ self subclassResponsibility ] +{ #category : #testing } +BlockCipher class >> isAbstract [ + + ^ self == BlockCipher +] + { #category : #'instance creation' } BlockCipher class >> key: aByteArray [ ^ self new key: aByteArray diff --git a/source/Cryptography/BlockCipherMode.class.st b/source/Cryptography/BlockCipherMode.class.st index 084daa3..210f94d 100644 --- a/source/Cryptography/BlockCipherMode.class.st +++ b/source/Cryptography/BlockCipherMode.class.st @@ -16,6 +16,12 @@ BlockCipherMode class >> blockSize [ ^ self shouldNotImplement ] +{ #category : #testing } +BlockCipherMode class >> isAbstract [ + + ^self == BlockCipherMode +] + { #category : #'*cryptography-tests' } BlockCipherMode class >> key: aByteArray [ Warning signal: 'you do NOT want to use this method in a real program because we use a hard-coded nonce. You should take care of your own nonce.'. @@ -30,7 +36,10 @@ BlockCipherMode class >> keySize [ { #category : #'instance creation' } BlockCipherMode class >> on: aCipher [ - ^ self new setCipher: aCipher + + ^ (self new) + setCipher: aCipher; + yourself ] { #category : #accessing } diff --git a/source/Cryptography/CryptographyError.class.st b/source/Cryptography/CryptographyError.class.st index f5d6161..2cac369 100644 --- a/source/Cryptography/CryptographyError.class.st +++ b/source/Cryptography/CryptographyError.class.st @@ -1,5 +1,5 @@ Class { #name : #CryptographyError, #superclass : #Error, - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Base' } diff --git a/source/Cryptography/DESNonPrimitive.class.st b/source/Cryptography/DESNonPrimitive.class.st index 5362eb4..a23710e 100644 --- a/source/Cryptography/DESNonPrimitive.class.st +++ b/source/Cryptography/DESNonPrimitive.class.st @@ -32,7 +32,7 @@ DESNonPrimitive class >> initSBox: index from: anArray [ { #category : #'class initialization' } DESNonPrimitive class >> initialize [ - "DESNonPrimitive initialize" + DESBitPermutation initialize. PC1 := DESBitPermutation fromDESBitIndexes: #( 57 49 41 33 25 17 9 diff --git a/source/Cryptography/DSAPrivateKey.class.st b/source/Cryptography/DSAPrivateKey.class.st index cca2497..3e69189 100644 --- a/source/Cryptography/DSAPrivateKey.class.st +++ b/source/Cryptography/DSAPrivateKey.class.st @@ -1,3 +1,6 @@ +" +Digital Signature Algorithm - the private key +" Class { #name : #DSAPrivateKey, #superclass : #Object, diff --git a/source/Cryptography/DSAPublicKey.class.st b/source/Cryptography/DSAPublicKey.class.st index 5c7c64c..7addf40 100644 --- a/source/Cryptography/DSAPublicKey.class.st +++ b/source/Cryptography/DSAPublicKey.class.st @@ -1,3 +1,6 @@ +" +Digital Signature Algorithm - the public key +" Class { #name : #DSAPublicKey, #superclass : #Object, diff --git a/source/Cryptography/EuclidAlgorithm.class.st b/source/Cryptography/EuclidAlgorithm.class.st index 8b77a55..69dd693 100644 --- a/source/Cryptography/EuclidAlgorithm.class.st +++ b/source/Cryptography/EuclidAlgorithm.class.st @@ -1,3 +1,6 @@ +" +Euclid's algorithm, is an efficient method for computing the greatest common divisor (GCD) of two integers (numbers +" Class { #name : #EuclidAlgorithm, #superclass : #Object, diff --git a/source/Cryptography/Fortuna.class.st b/source/Cryptography/Fortuna.class.st index 1939f3a..07748d4 100644 --- a/source/Cryptography/Fortuna.class.st +++ b/source/Cryptography/Fortuna.class.st @@ -11,6 +11,16 @@ Class { #category : #'Cryptography-RandomAndPrime' } +{ #category : #example } +Fortuna class >> fromUser [ + "Ask the user to type a long random string and use the result to seed the secure random number generator." + + + | string | + string := UIManager default request: 'Enter a long random string to seed the random generator.'. + ^ self key: string +] + { #category : #'instance creation' } Fortuna class >> key: aByteArray [ ^ self new diff --git a/source/Cryptography/MD2.class.st b/source/Cryptography/MD2.class.st index 58903cc..966872f 100644 --- a/source/Cryptography/MD2.class.st +++ b/source/Cryptography/MD2.class.st @@ -1,3 +1,6 @@ +" +Message-Digest Algorithm 2 +" Class { #name : #MD2, #superclass : #HashFunction, @@ -7,16 +10,18 @@ Class { #category : #'Cryptography-MD4' } -{ #category : #'as yet unclassified' } +{ #category : #initialization } MD2 class >> initialize [ PITable := OrderedCollection new. - self initializeFirstHalfPITable. - self initializeSecondHalfPITable. + + self + initializeFirstHalfPITable; + initializeSecondHalfPITable ] -{ #category : #'as yet unclassified' } +{ #category : #'private - initialization' } MD2 class >> initializeFirstHalfPITable [ PITable addAll: { @@ -33,7 +38,7 @@ MD2 class >> initializeFirstHalfPITable [ ] -{ #category : #'as yet unclassified' } +{ #category : #'private - initialization' } MD2 class >> initializeSecondHalfPITable [ PITable addAll: { @@ -50,14 +55,14 @@ MD2 class >> initializeSecondHalfPITable [ ] -{ #category : #'as yet unclassified' } +{ #category : #initialization } MD2 class >> oidString [ ^ '1.2.840.113549.2.2'. ] -{ #category : #'as yet unclassified' } +{ #category : #initialization } MD2 class >> piTable [ ^ PITable diff --git a/source/Cryptography/MD4.class.st b/source/Cryptography/MD4.class.st index 029e9c0..141e266 100644 --- a/source/Cryptography/MD4.class.st +++ b/source/Cryptography/MD4.class.st @@ -1,3 +1,6 @@ +" +Message-Digest Algorithm 4 +" Class { #name : #MD4, #superclass : #HashFunction, diff --git a/source/Cryptography/MD5WithPrimitive.class.st b/source/Cryptography/MD5WithPrimitive.class.st index 282de1f..24cd828 100644 --- a/source/Cryptography/MD5WithPrimitive.class.st +++ b/source/Cryptography/MD5WithPrimitive.class.st @@ -1,3 +1,6 @@ +" +Message-Digest Algorithm 5 based on the VM plugin (MD5Plugin) to provide functionality +" Class { #name : #MD5WithPrimitive, #superclass : #MD5, @@ -19,24 +22,24 @@ MD5WithPrimitive >> initializeState [ ] -{ #category : #initialization } +{ #category : #primitives } MD5WithPrimitive >> primDecodeState: s [ - + self primitiveFailed ] -{ #category : #initialization } +{ #category : #primitives } MD5WithPrimitive >> primInitializeState: s [ - + self primitiveFailed ] { #category : #'private-buffers' } MD5WithPrimitive >> primProcessBuffer: aByteArray withState: s [ - + self primitiveFailed ] diff --git a/source/Cryptography/RSAPrivateKey.class.st b/source/Cryptography/RSAPrivateKey.class.st index b5bd057..00366b0 100644 --- a/source/Cryptography/RSAPrivateKey.class.st +++ b/source/Cryptography/RSAPrivateKey.class.st @@ -1,3 +1,6 @@ +" +An RSA private key +" Class { #name : #RSAPrivateKey, #superclass : #Object, diff --git a/source/Cryptography/RandomGenerator.class.st b/source/Cryptography/RandomGenerator.class.st index 1054780..d4d74e4 100644 --- a/source/Cryptography/RandomGenerator.class.st +++ b/source/Cryptography/RandomGenerator.class.st @@ -1,3 +1,6 @@ +" +Abstract superclass for random generators +" Class { #name : #RandomGenerator, #superclass : #Object, @@ -7,7 +10,7 @@ Class { #category : #'Cryptography-RandomAndPrime' } -{ #category : #'initialize-release' } +{ #category : #utilities } RandomGenerator class >> destroyPickers [ self withAllSubclassesDo: [ : each | @@ -17,16 +20,7 @@ RandomGenerator class >> destroyPickers [ put: nil ] ] -{ #category : #create } -RandomGenerator class >> fromUser [ - "Ask the user to type a long random string and use the result to seed the secure random number generator." - - | string | - string := FillInTheBlank request: 'Enter a long random string to seed the random generator.'. - ^ self key: string -] - -{ #category : #'initialize-release' } +{ #category : #'instance creation' } RandomGenerator class >> generateKey [ | unguessableBytes prior | prior := UUID new shuffled asInteger. @@ -49,15 +43,21 @@ RandomGenerator class >> generateKey [ ^ SHA256 new hashMessage: unguessableBytes ] -{ #category : #'initialize-release' } +{ #category : #'class initialization' } RandomGenerator class >> initialize [ - super initialize. + Smalltalk addToStartUpList: self ; addToShutDownList: self. self startUp ] +{ #category : #testing } +RandomGenerator class >> isAbstract [ + + ^ self == RandomGenerator +] + { #category : #create } RandomGenerator class >> key: anInteger [ self subclassResponsibility @@ -68,19 +68,19 @@ RandomGenerator class >> picker [ ^ picker ifNil: [ picker := self withGeneratedKey ] ] -{ #category : #'initialize-release' } +{ #category : #'startup - shutdown' } RandomGenerator class >> shutDown [ super shutDown. self destroyPickers ] -{ #category : #'initialize-release' } +{ #category : #'startup - shutdown' } RandomGenerator class >> startUp [ super startUp. self destroyPickers ] -{ #category : #'initialize-release' } +{ #category : #utilities } RandomGenerator class >> unpredictableStringsDo: aBlock [ "Enumerate sources of information from my environment that should be generally hard to guess." | time | @@ -110,7 +110,7 @@ RandomGenerator class >> withGeneratedKey [ ^ self key: self generateKey ] -{ #category : #'initialize-release' } +{ #category : #cleanup } RandomGenerator >> destroy [ self subclassResponsibility ] diff --git a/source/Cryptography/RandomPool.class.st b/source/Cryptography/RandomPool.class.st index 9cee4ea..6d1edee 100644 --- a/source/Cryptography/RandomPool.class.st +++ b/source/Cryptography/RandomPool.class.st @@ -1,3 +1,6 @@ +" +A random pool of numbers +" Class { #name : #RandomPool, #superclass : #Stream, @@ -15,7 +18,8 @@ Class { { #category : #default } RandomPool class >> default [ - ^ default ifNil: [default := self new: 4096] + + ^ default ifNil: [ default := self new: 4096 ] ] { #category : #'intance creation' } @@ -28,12 +32,12 @@ RandomPool class >> new: anInteger [ ^ self basicNew initializePoolSize: anInteger ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> atEnd [ ^ false ] -{ #category : #'as yet unclassified' } +{ #category : #utilities } RandomPool >> grabRandomBitsFromSoundInput: bitCount [ "Grab the given number of random bits of 'noise' from a sound input source. Typically, one would use a microphone or line input as the sound source, although many sound cards have enough thermal noise that you get random low-order sample bits even with no microphone connected. Only the least signficant bit of the samples is used. Since not all sound cards support 16-bits of sample resolution, we use the lowest bit that changes." @@ -65,7 +69,7 @@ RandomPool >> grabRandomBitsFromSoundInput: bitCount [ self nextPutAll: randomBits ] -{ #category : #'as yet unclassified' } +{ #category : #initialization } RandomPool >> initializePoolSize: anInteger [ key := ByteArray new: TripleDES keySize. pool := ByteArray new: anInteger // TripleDES blockSize + 1 * TripleDES blockSize. @@ -75,7 +79,7 @@ RandomPool >> initializePoolSize: anInteger [ self stir ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> next [ outputStream atEnd ifTrue: [self stir. @@ -83,7 +87,7 @@ RandomPool >> next [ ^ outputStream next ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> next: anInteger [ | answer | answer := ByteArray new: anInteger. @@ -91,7 +95,7 @@ RandomPool >> next: anInteger [ ^ answer ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> nextPut: aByte [ | keyIndex | inputIndex = pool size ifTrue: [self stir]. @@ -102,13 +106,13 @@ RandomPool >> nextPut: aByte [ ^ aByte ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> nextPutAll: aCollection [ aCollection do: [ :each | self nextPut: each]. ^ aCollection ] -{ #category : #'as yet unclassified' } +{ #category : #accessing } RandomPool >> stir [ | cipher block | cipher := (TripleDES key: key) cbc. diff --git a/source/Cryptography/Rijndael.class.st b/source/Cryptography/Rijndael.class.st index accabd9..34a1b63 100644 --- a/source/Cryptography/Rijndael.class.st +++ b/source/Cryptography/Rijndael.class.st @@ -1,3 +1,6 @@ +" +Advanced Encryption Standard (AES) +" Class { #name : #Rijndael, #superclass : #BlockCipher, diff --git a/source/Cryptography/SHA256NonPrimitive.class.st b/source/Cryptography/SHA256NonPrimitive.class.st index e446181..93a23a8 100644 --- a/source/Cryptography/SHA256NonPrimitive.class.st +++ b/source/Cryptography/SHA256NonPrimitive.class.st @@ -1,3 +1,6 @@ +" +SHA256 version without using a VM plugin +" Class { #name : #SHA256NonPrimitive, #superclass : #SHA256, diff --git a/source/Cryptography/SHA256WithPrimitive.class.st b/source/Cryptography/SHA256WithPrimitive.class.st index f54c956..5361fe2 100644 --- a/source/Cryptography/SHA256WithPrimitive.class.st +++ b/source/Cryptography/SHA256WithPrimitive.class.st @@ -1,3 +1,6 @@ +" +SHA256 using the primitive VM plugin ""SHA256Plugin"" +" Class { #name : #SHA256WithPrimitive, #superclass : #SHA256, @@ -17,9 +20,8 @@ SHA256WithPrimitive class >> hashSize [ ^ 32 ] -{ #category : #'as yet unclassified' } +{ #category : #testing } SHA256WithPrimitive class >> isPluginAvailable [ - ^false ] diff --git a/source/Cryptography/SecureRandom.class.st b/source/Cryptography/SecureRandom.class.st index 97613ed..a745d32 100644 --- a/source/Cryptography/SecureRandom.class.st +++ b/source/Cryptography/SecureRandom.class.st @@ -1,3 +1,6 @@ +" +A secure random number generator +" Class { #name : #SecureRandom, #superclass : #RandomGenerator, @@ -8,12 +11,13 @@ Class { #category : #'Cryptography-RandomAndPrime' } -{ #category : #'instance creation' } +{ #category : #example } SecureRandom class >> fromUser [ "Ask the user to type a long random string and use the result to seed the secure random number generator." + | string | - string := FillInTheBlank request: 'Enter a long random string to seed the random generator.'. + string := UIManager default request: 'Enter a long random string to seed the random generator.'. ^ self key: string ] diff --git a/source/Cryptography/SmalltalkImageInstanceID.class.st b/source/Cryptography/SmalltalkImageInstanceID.class.st index e0ad886..144441a 100644 --- a/source/Cryptography/SmalltalkImageInstanceID.class.st +++ b/source/Cryptography/SmalltalkImageInstanceID.class.st @@ -1,3 +1,6 @@ +" +A unique instance ID of the Smalltalk image. Image need to be saved to stay persistent +" Class { #name : #SmalltalkImageInstanceID, #superclass : #Object, @@ -7,12 +10,6 @@ Class { #category : #'Cryptography-RandomAndPrime' } -{ #category : #inquires } -SmalltalkImageInstanceID class >> InstanceID [ - - ^nil -] - { #category : #LICENSE } SmalltalkImageInstanceID class >> LICENSE [ "http://www.opensource.org/licenses/mit-license.php" @@ -28,33 +25,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI { #category : #'class initialization' } SmalltalkImageInstanceID class >> initialize [ - super initialize. + Smalltalk addToStartUpList: self ; addToShutDownList: self. self startUp ] -{ #category : #inquires } +{ #category : #accessing } SmalltalkImageInstanceID class >> instanceID [ - - ^InstanceID ifNil: [ - Transcript show: thisContext sender. - thisContext sender receiver = self ifTrue: [ - InstanceID := UUID new. - ] ifFalse: [ - InstanceID := nil - ]. - InstanceID]. + + ^ InstanceID ifNil: [ + InstanceID := thisContext sender receiver = self + ifTrue: [ UUID new ] + ifFalse: [ nil ]. + InstanceID ] ] -{ #category : #'class initialization' } +{ #category : #'startup - shutdown' } SmalltalkImageInstanceID class >> shutDown [ super shutDown. InstanceID := nil. ] -{ #category : #'class initialization' } +{ #category : #'startup - shutdown' } SmalltalkImageInstanceID class >> startUp [ super startUp. InstanceID := nil. diff --git a/source/Cryptography/TripleDES.class.st b/source/Cryptography/TripleDES.class.st index 97cc4dc..53f9b91 100644 --- a/source/Cryptography/TripleDES.class.st +++ b/source/Cryptography/TripleDES.class.st @@ -1,3 +1,6 @@ +" +Triple DES (3DES or TDES), officially the Triple Data Encryption Algorithm (TDEA or Triple DEA), is a symmetric-key block cipher, +" Class { #name : #TripleDES, #superclass : #BlockCipher, From 33ae75469e5b3d1661e382b6538c306463e56d7c Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 01:09:38 +0200 Subject: [PATCH 31/36] Rename "Cryptography" package into "Cryptography-Core" and adopt baseline --- .../BaselineOfCryptography.class.st | 22 ++++++++-------- .../ARC2.class.st | 2 +- .../ARC4.class.st | 2 +- .../BlockCipher.class.st | 2 +- .../BlockCipherMode.class.st | 2 +- .../BlockCipherMode.extension.st | 0 .../ByteArray.extension.st | 26 +++++++++---------- .../ByteString.extension.st | 6 ++--- .../CBC.class.st | 2 +- .../CFB.class.st | 2 +- .../CTR.class.st | 2 +- .../CryptographyError.class.st | 2 +- .../DES.class.st | 2 +- .../DESBitPermutation.class.st | 2 +- .../DESNonPrimitive.class.st | 2 +- .../DSAKeyPairGenerator.class.st | 2 +- .../DSAPrivateKey.class.st | 2 +- .../DSAPublicKey.class.st | 2 +- .../DiffieHellman.class.st | 2 +- .../ElGamalKeyGenerator.class.st | 2 +- .../ElGamalPrivateKey.class.st | 2 +- .../ElGamalPublicKey.class.st | 2 +- .../EuclidAlgorithm.class.st | 2 +- .../Fortuna.class.st | 2 +- .../InputEventSensor.extension.st | 2 +- .../Integer.extension.st | 8 +++--- .../KeyHolder.class.st | 2 +- .../KeyHolderData.class.st | 2 +- .../LargePositiveInteger.extension.st | 2 +- .../MD2.class.st | 2 +- .../MD4.class.st | 2 +- .../MD5.extension.st | 4 +-- .../MD5NonPrimitive.extension.st | 4 +-- .../MD5WithPrimitive.class.st | 2 +- .../MillerRabin.class.st | 2 +- .../OFB.class.st | 2 +- .../PasswordSaltAndStretch.class.st | 2 +- .../PositionableStream.extension.st | 4 +-- .../PrimesFinder.class.st | 2 +- .../PrimesWheel.class.st | 2 +- .../RSAEncryptionScheme.class.st | 2 +- .../RSAKeyPairGenerator.class.st | 2 +- .../RSAPrivateKey.class.st | 2 +- .../RSAPublicKey.class.st | 2 +- .../RandomGenerator.class.st | 2 +- .../RandomPool.class.st | 2 +- .../Rijndael.class.st | 2 +- .../SHA1.extension.st | 2 +- .../SHA256.extension.st | 6 ++--- .../SHA256NonPrimitive.class.st | 2 +- .../SHA256WithPrimitive.class.st | 2 +- .../SecureRandom.class.st | 2 +- .../SmalltalkImageInstanceID.class.st | 2 +- .../SocketStream.extension.st | 2 +- .../String.extension.st | 4 +-- .../ThirtyTwoBitRegister.extension.st | 4 +-- .../TripleDES.class.st | 2 +- source/Cryptography-Core/package.st | 1 + source/Cryptography/package.st | 1 - 59 files changed, 91 insertions(+), 91 deletions(-) rename source/{Cryptography => Cryptography-Core}/ARC2.class.st (99%) rename source/{Cryptography => Cryptography-Core}/ARC4.class.st (96%) rename source/{Cryptography => Cryptography-Core}/BlockCipher.class.st (98%) rename source/{Cryptography => Cryptography-Core}/BlockCipherMode.class.st (98%) rename source/{Cryptography => Cryptography-Core}/BlockCipherMode.extension.st (100%) rename source/{Cryptography => Cryptography-Core}/ByteArray.extension.st (92%) rename source/{Cryptography => Cryptography-Core}/ByteString.extension.st (89%) rename source/{Cryptography => Cryptography-Core}/CBC.class.st (94%) rename source/{Cryptography => Cryptography-Core}/CFB.class.st (96%) rename source/{Cryptography => Cryptography-Core}/CTR.class.st (98%) rename source/{Cryptography => Cryptography-Core}/CryptographyError.class.st (61%) rename source/{Cryptography => Cryptography-Core}/DES.class.st (98%) rename source/{Cryptography => Cryptography-Core}/DESBitPermutation.class.st (98%) rename source/{Cryptography => Cryptography-Core}/DESNonPrimitive.class.st (99%) rename source/{Cryptography => Cryptography-Core}/DSAKeyPairGenerator.class.st (98%) rename source/{Cryptography => Cryptography-Core}/DSAPrivateKey.class.st (97%) rename source/{Cryptography => Cryptography-Core}/DSAPublicKey.class.st (99%) rename source/{Cryptography => Cryptography-Core}/DiffieHellman.class.st (97%) rename source/{Cryptography => Cryptography-Core}/ElGamalKeyGenerator.class.st (98%) rename source/{Cryptography => Cryptography-Core}/ElGamalPrivateKey.class.st (97%) rename source/{Cryptography => Cryptography-Core}/ElGamalPublicKey.class.st (98%) rename source/{Cryptography => Cryptography-Core}/EuclidAlgorithm.class.st (98%) rename source/{Cryptography => Cryptography-Core}/Fortuna.class.st (98%) rename source/{Cryptography => Cryptography-Core}/InputEventSensor.extension.st (70%) rename source/{Cryptography => Cryptography-Core}/Integer.extension.st (92%) rename source/{Cryptography => Cryptography-Core}/KeyHolder.class.st (99%) rename source/{Cryptography => Cryptography-Core}/KeyHolderData.class.st (97%) rename source/{Cryptography => Cryptography-Core}/LargePositiveInteger.extension.st (82%) rename source/{Cryptography => Cryptography-Core}/MD2.class.st (98%) rename source/{Cryptography => Cryptography-Core}/MD4.class.st (99%) rename source/{Cryptography => Cryptography-Core}/MD5.extension.st (64%) rename source/{Cryptography => Cryptography-Core}/MD5NonPrimitive.extension.st (88%) rename source/{Cryptography => Cryptography-Core}/MD5WithPrimitive.class.st (96%) rename source/{Cryptography => Cryptography-Core}/MillerRabin.class.st (96%) rename source/{Cryptography => Cryptography-Core}/OFB.class.st (94%) rename source/{Cryptography => Cryptography-Core}/PasswordSaltAndStretch.class.st (98%) rename source/{Cryptography => Cryptography-Core}/PositionableStream.extension.st (72%) rename source/{Cryptography => Cryptography-Core}/PrimesFinder.class.st (97%) rename source/{Cryptography => Cryptography-Core}/PrimesWheel.class.st (98%) rename source/{Cryptography => Cryptography-Core}/RSAEncryptionScheme.class.st (99%) rename source/{Cryptography => Cryptography-Core}/RSAKeyPairGenerator.class.st (98%) rename source/{Cryptography => Cryptography-Core}/RSAPrivateKey.class.st (98%) rename source/{Cryptography => Cryptography-Core}/RSAPublicKey.class.st (98%) rename source/{Cryptography => Cryptography-Core}/RandomGenerator.class.st (98%) rename source/{Cryptography => Cryptography-Core}/RandomPool.class.st (98%) rename source/{Cryptography => Cryptography-Core}/Rijndael.class.st (99%) rename source/{Cryptography => Cryptography-Core}/SHA1.extension.st (67%) rename source/{Cryptography => Cryptography-Core}/SHA256.extension.st (75%) rename source/{Cryptography => Cryptography-Core}/SHA256NonPrimitive.class.st (99%) rename source/{Cryptography => Cryptography-Core}/SHA256WithPrimitive.class.st (97%) rename source/{Cryptography => Cryptography-Core}/SecureRandom.class.st (98%) rename source/{Cryptography => Cryptography-Core}/SmalltalkImageInstanceID.class.st (97%) rename source/{Cryptography => Cryptography-Core}/SocketStream.extension.st (87%) rename source/{Cryptography => Cryptography-Core}/String.extension.st (81%) rename source/{Cryptography => Cryptography-Core}/ThirtyTwoBitRegister.extension.st (70%) rename source/{Cryptography => Cryptography-Core}/TripleDES.class.st (96%) create mode 100644 source/Cryptography-Core/package.st delete mode 100644 source/Cryptography/package.st diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index 575a7b3..07e9ccd 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -13,37 +13,37 @@ BaselineOfCryptography >> baseline: spec [ spec for: #common do: [ spec - package: 'Cryptography'; - package: 'Cryptography-Core-Tests' with: [ spec requires: #(#'Cryptography' ) ]. + package: 'Cryptography-Core'; + package: 'Cryptography-Core-Tests' with: [ spec requires: #(#'Cryptography-Core' ) ]. spec "ASN1" - package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography' ) ]; + package: 'ASN1-Core' with: [ spec requires: #(#'Cryptography-Core' ) ]; package: 'ASN1-Core-Tests' with: [ spec requires: #(#'ASN1-Core' ) ]; - package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; + package: 'ASN1-Readers' with: [ spec requires: #(#'Cryptography-Core' #'ASN1-Core') ]; package: 'ASN1-Readers-Tests' with: [ spec requires: #(#'ASN1-Readers') ]; "PKCS" - package: 'PKCS12' with: [ spec requires: #(#'Cryptography' #'ASN1-Core') ]; + package: 'PKCS12' with: [ spec requires: #(#'Cryptography-Core' #'ASN1-Core') ]; package: 'PKCS12-Tests' with: [ spec requires: #(#'PKCS12') ]; "X509" - package: 'X509' with: [ spec requires: #(#'Cryptography' #'ASN1-Core' ) ]; + package: 'X509' with: [ spec requires: #(#'Cryptography-Core' #'ASN1-Core' ) ]; package: 'X509-Tests' with: [ spec requires: #(#'X509' ) ]; "PBKDF2" - package: 'PBKDF2' with: [ spec requires: #(#'Cryptography') ]; + package: 'PBKDF2' with: [ spec requires: #(#'Cryptography-Core') ]; package: 'PBKDF2-Tests' with: [ spec requires: #(#'PBKDF2' ) ]; "Other" - package: 'Blowfish' with: [ spec requires: #(#'Cryptography') ]; + package: 'Blowfish' with: [ spec requires: #(#'Cryptography-Core') ]; package: 'OpenPGP' with: [ spec requires: #(#'Cryptography') ]; package: 'LayeredProtocol' with: [ spec requires: #(#'Cryptography') ]. spec - group: 'core' with: #('Cryptography'); + group: 'core' with: #('Cryptography-Core'); group: 'default' with: #('legacy'); - group: 'legacy' with: #('Cryptography' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); - group: 'all' with: #('Cryptography' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') + group: 'legacy' with: #('Cryptography-Core' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' ); + group: 'all' with: #('Cryptography-Core' 'Cryptography-Core-Tests' 'ASN1-Core-Tests' 'ASN1-Readers-Tests' 'PKCS12-Tests' 'X509-Tests' 'PBKDF2-Tests' 'Blowfish' 'OpenPGP' 'LayeredProtocol') ]. ] diff --git a/source/Cryptography/ARC2.class.st b/source/Cryptography-Core/ARC2.class.st similarity index 99% rename from source/Cryptography/ARC2.class.st rename to source/Cryptography-Core/ARC2.class.st index bb2f002..7bb4377 100644 --- a/source/Cryptography/ARC2.class.st +++ b/source/Cryptography-Core/ARC2.class.st @@ -644,7 +644,7 @@ Class { #classVars : [ 'PITABLE' ], - #category : #'Cryptography-RC2' + #category : #'Cryptography-Core-RC2' } { #category : #LICENSE } diff --git a/source/Cryptography/ARC4.class.st b/source/Cryptography-Core/ARC4.class.st similarity index 96% rename from source/Cryptography/ARC4.class.st rename to source/Cryptography-Core/ARC4.class.st index 27557fe..3603996 100644 --- a/source/Cryptography/ARC4.class.st +++ b/source/Cryptography-Core/ARC4.class.st @@ -9,7 +9,7 @@ Class { 'i', 'j' ], - #category : #'Cryptography-RC4' + #category : #'Cryptography-Core-RC4' } { #category : #accessing } diff --git a/source/Cryptography/BlockCipher.class.st b/source/Cryptography-Core/BlockCipher.class.st similarity index 98% rename from source/Cryptography/BlockCipher.class.st rename to source/Cryptography-Core/BlockCipher.class.st index 5793d31..347ecdb 100644 --- a/source/Cryptography/BlockCipher.class.st +++ b/source/Cryptography-Core/BlockCipher.class.st @@ -4,7 +4,7 @@ Abstract class for blockmode ciphers (those which encrypt/decrypt more than 1 by Class { #name : #BlockCipher, #superclass : #Object, - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #accessing } diff --git a/source/Cryptography/BlockCipherMode.class.st b/source/Cryptography-Core/BlockCipherMode.class.st similarity index 98% rename from source/Cryptography/BlockCipherMode.class.st rename to source/Cryptography-Core/BlockCipherMode.class.st index 210f94d..2a7fd8c 100644 --- a/source/Cryptography/BlockCipherMode.class.st +++ b/source/Cryptography-Core/BlockCipherMode.class.st @@ -8,7 +8,7 @@ Class { 'cipher', 'vector' ], - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #accessing } diff --git a/source/Cryptography/BlockCipherMode.extension.st b/source/Cryptography-Core/BlockCipherMode.extension.st similarity index 100% rename from source/Cryptography/BlockCipherMode.extension.st rename to source/Cryptography-Core/BlockCipherMode.extension.st diff --git a/source/Cryptography/ByteArray.extension.st b/source/Cryptography-Core/ByteArray.extension.st similarity index 92% rename from source/Cryptography/ByteArray.extension.st rename to source/Cryptography-Core/ByteArray.extension.st index 7f8416b..7cdf0a7 100644 --- a/source/Cryptography/ByteArray.extension.st +++ b/source/Cryptography-Core/ByteArray.extension.st @@ -1,6 +1,6 @@ Extension { #name : #ByteArray } -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> hexStringInNibbles [ @@ -15,7 +15,7 @@ ByteArray >> hexStringInNibbles [ ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> isProperlyPadded [ "Verify my bytes have padding applied by #padToMultipleOf:. The padding scheme used here is option #2 as specified by Ferguson and Schneier in 'Practical Cryptography', p. 68-69." | pad end start | @@ -26,7 +26,7 @@ ByteArray >> isProperlyPadded [ and: [ (start to: end) allSatisfy: [ : each | (self at: each) = pad ] ] ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> padToMultipleOf: blockSize [ "Answer a new ByteArray that is padded to anInteger bytes. This is used by block-based ciphers where the length of the ByteArray to be encrypted must be a multiple of that ciphers #blockSize. The padding scheme used here is option #2 as specified by Ferguson and Schneier in 'Practical Cryptography', p. 68-69." | answer pad | @@ -43,13 +43,13 @@ ByteArray >> padToMultipleOf: blockSize [ ^ answer ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> paddedSize: blockSize [ "If my size is an exact multiple of blockSize, an entire pad-block is required. That's why we have the +1." ^ (self size+1) roundUpTo: blockSize ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> toEBase64String [ | base64Table stream firstIndex secondIndex thirdIndex fourthIndex extra | @@ -85,7 +85,7 @@ ByteArray >> toEBase64String [ ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> uint: bits at: anInteger [ | answer bytes | @@ -116,7 +116,7 @@ ByteArray >> uint: bits at: anInteger [ ^answer normalize ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> uint: bits at: position put: anInteger [ position @@ -129,7 +129,7 @@ ByteArray >> uint: bits at: position put: anInteger [ ^ anInteger ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unpad [ | pad end | self isProperlyPadded ifFalse: [ CryptographyError signal: 'Authentication failure (improperly padded!)' ]. @@ -138,14 +138,14 @@ ByteArray >> unpad [ ^ self copyFrom: 1 to: end ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unpaddedSize [ "If I was padded by a BlockCipher, answer the size of the original plaintext." self isProperlyPadded ifFalse: [ CryptographyError signal: 'Authentication failure (improperly padded!)' ]. ^ self size - self last ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unsigned40At: index [ "Return a unsigned integer quantity starting from the given byte index" @@ -166,7 +166,7 @@ ByteArray >> unsigned40At: index [ ^w ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unsigned48At: index [ "Return a unsigned integer quantity starting from the given byte index" @@ -189,7 +189,7 @@ ByteArray >> unsigned48At: index [ ^w ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unsigned56At: index [ "Return a unsigned integer quantity starting from the given byte index" @@ -214,7 +214,7 @@ ByteArray >> unsigned56At: index [ ^w ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } ByteArray >> unsigned64At: index [ "Return a unsigned integer quantity starting from the given byte index" diff --git a/source/Cryptography/ByteString.extension.st b/source/Cryptography-Core/ByteString.extension.st similarity index 89% rename from source/Cryptography/ByteString.extension.st rename to source/Cryptography-Core/ByteString.extension.st index 7054f9b..effd28f 100644 --- a/source/Cryptography/ByteString.extension.st +++ b/source/Cryptography-Core/ByteString.extension.st @@ -1,6 +1,6 @@ Extension { #name : #ByteString } -{ #category : #'*Cryptography-RandomAndPrime' } +{ #category : #'*Cryptography-Core-RandomAndPrime' } ByteString >> destroy [ "destroy this string by replacing every character with a space" 1 to: self size do: [:i | @@ -8,7 +8,7 @@ ByteString >> destroy [ ] ] -{ #category : #'*Cryptography-RandomAndPrime' } +{ #category : #'*Cryptography-Core-RandomAndPrime' } ByteString >> unsignedLongAt: index bigEndian: aBool [ "Return a 32bit unsigned integer quantity starting from the given byte index" | b0 b1 b2 w | @@ -30,7 +30,7 @@ ByteString >> unsignedLongAt: index bigEndian: aBool [ ^w ] -{ #category : #'*Cryptography-RandomAndPrime' } +{ #category : #'*Cryptography-Core-RandomAndPrime' } ByteString >> unsignedLongAt: index put: value bigEndian: aBool [ "Store a 32bit unsigned integer quantity starting from the given byte index" | b0 b1 b2 b3 | diff --git a/source/Cryptography/CBC.class.st b/source/Cryptography-Core/CBC.class.st similarity index 94% rename from source/Cryptography/CBC.class.st rename to source/Cryptography-Core/CBC.class.st index 3643f76..4e0ba07 100644 --- a/source/Cryptography/CBC.class.st +++ b/source/Cryptography-Core/CBC.class.st @@ -4,7 +4,7 @@ Cipher Block Chaining Mode Class { #name : #CBC, #superclass : #BlockCipherMode, - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #accessing } diff --git a/source/Cryptography/CFB.class.st b/source/Cryptography-Core/CFB.class.st similarity index 96% rename from source/Cryptography/CFB.class.st rename to source/Cryptography-Core/CFB.class.st index 001f242..289d13c 100644 --- a/source/Cryptography/CFB.class.st +++ b/source/Cryptography-Core/CFB.class.st @@ -4,7 +4,7 @@ Cipher Feedback Mode Class { #name : #CFB, #superclass : #BlockCipherMode, - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #accessing } diff --git a/source/Cryptography/CTR.class.st b/source/Cryptography-Core/CTR.class.st similarity index 98% rename from source/Cryptography/CTR.class.st rename to source/Cryptography-Core/CTR.class.st index 2c873e7..ebd3744 100644 --- a/source/Cryptography/CTR.class.st +++ b/source/Cryptography-Core/CTR.class.st @@ -17,7 +17,7 @@ Class { 'counterBits', 'maximumCounterValue' ], - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #accessing } diff --git a/source/Cryptography/CryptographyError.class.st b/source/Cryptography-Core/CryptographyError.class.st similarity index 61% rename from source/Cryptography/CryptographyError.class.st rename to source/Cryptography-Core/CryptographyError.class.st index 2cac369..eb73b95 100644 --- a/source/Cryptography/CryptographyError.class.st +++ b/source/Cryptography-Core/CryptographyError.class.st @@ -1,5 +1,5 @@ Class { #name : #CryptographyError, #superclass : #Error, - #category : #'Cryptography-Base' + #category : #'Cryptography-Core-Base' } diff --git a/source/Cryptography/DES.class.st b/source/Cryptography-Core/DES.class.st similarity index 98% rename from source/Cryptography/DES.class.st rename to source/Cryptography-Core/DES.class.st index a43e1d5..fe2b283 100644 --- a/source/Cryptography/DES.class.st +++ b/source/Cryptography-Core/DES.class.st @@ -29,7 +29,7 @@ Class { 'encrypting', 'nonPrimitive' ], - #category : #'Cryptography-DES' + #category : #'Cryptography-Core-DES' } { #category : #accessing } diff --git a/source/Cryptography/DESBitPermutation.class.st b/source/Cryptography-Core/DESBitPermutation.class.st similarity index 98% rename from source/Cryptography/DESBitPermutation.class.st rename to source/Cryptography-Core/DESBitPermutation.class.st index adc55d7..3c1afb7 100644 --- a/source/Cryptography/DESBitPermutation.class.st +++ b/source/Cryptography-Core/DESBitPermutation.class.st @@ -11,7 +11,7 @@ Class { 'ChunkBits', 'ChunkMask' ], - #category : #'Cryptography-DES' + #category : #'Cryptography-Core-DES' } { #category : #'instance creation' } diff --git a/source/Cryptography/DESNonPrimitive.class.st b/source/Cryptography-Core/DESNonPrimitive.class.st similarity index 99% rename from source/Cryptography/DESNonPrimitive.class.st rename to source/Cryptography-Core/DESNonPrimitive.class.st index a23710e..8a5efd3 100644 --- a/source/Cryptography/DESNonPrimitive.class.st +++ b/source/Cryptography-Core/DESNonPrimitive.class.st @@ -13,7 +13,7 @@ Class { 'PC2', 'SBoxes' ], - #category : #'Cryptography-DES' + #category : #'Cryptography-Core-DES' } { #category : #'class initialization' } diff --git a/source/Cryptography/DSAKeyPairGenerator.class.st b/source/Cryptography-Core/DSAKeyPairGenerator.class.st similarity index 98% rename from source/Cryptography/DSAKeyPairGenerator.class.st rename to source/Cryptography-Core/DSAKeyPairGenerator.class.st index 29125b4..28f1556 100644 --- a/source/Cryptography/DSAKeyPairGenerator.class.st +++ b/source/Cryptography-Core/DSAKeyPairGenerator.class.st @@ -9,7 +9,7 @@ Class { 'y', 'random' ], - #category : #'Cryptography-DSA' + #category : #'Cryptography-Core-DSA' } { #category : #'as yet unclassified' } diff --git a/source/Cryptography/DSAPrivateKey.class.st b/source/Cryptography-Core/DSAPrivateKey.class.st similarity index 97% rename from source/Cryptography/DSAPrivateKey.class.st rename to source/Cryptography-Core/DSAPrivateKey.class.st index 3e69189..b848cf1 100644 --- a/source/Cryptography/DSAPrivateKey.class.st +++ b/source/Cryptography-Core/DSAPrivateKey.class.st @@ -10,7 +10,7 @@ Class { 'g', 'x' ], - #category : #'Cryptography-DSA' + #category : #'Cryptography-Core-DSA' } { #category : #'instance creation' } diff --git a/source/Cryptography/DSAPublicKey.class.st b/source/Cryptography-Core/DSAPublicKey.class.st similarity index 99% rename from source/Cryptography/DSAPublicKey.class.st rename to source/Cryptography-Core/DSAPublicKey.class.st index 7addf40..1a5d5a4 100644 --- a/source/Cryptography/DSAPublicKey.class.st +++ b/source/Cryptography-Core/DSAPublicKey.class.st @@ -10,7 +10,7 @@ Class { 'g', 'y' ], - #category : #'Cryptography-DSA' + #category : #'Cryptography-Core-DSA' } { #category : #examples } diff --git a/source/Cryptography/DiffieHellman.class.st b/source/Cryptography-Core/DiffieHellman.class.st similarity index 97% rename from source/Cryptography/DiffieHellman.class.st rename to source/Cryptography-Core/DiffieHellman.class.st index 02e3a70..334fc69 100644 --- a/source/Cryptography/DiffieHellman.class.st +++ b/source/Cryptography-Core/DiffieHellman.class.st @@ -35,7 +35,7 @@ Class { 'secret', 'sharedKey' ], - #category : #'Cryptography-Diffie-Hellman' + #category : #'Cryptography-Core-Diffie-Hellman' } { #category : #'instance creation' } diff --git a/source/Cryptography/ElGamalKeyGenerator.class.st b/source/Cryptography-Core/ElGamalKeyGenerator.class.st similarity index 98% rename from source/Cryptography/ElGamalKeyGenerator.class.st rename to source/Cryptography-Core/ElGamalKeyGenerator.class.st index 6a27a90..ea074dd 100644 --- a/source/Cryptography/ElGamalKeyGenerator.class.st +++ b/source/Cryptography-Core/ElGamalKeyGenerator.class.st @@ -38,7 +38,7 @@ Class { 'alpha', 'a' ], - #category : #'Cryptography-ElGamal' + #category : #'Cryptography-Core-ElGamal' } { #category : #'instance creation' } diff --git a/source/Cryptography/ElGamalPrivateKey.class.st b/source/Cryptography-Core/ElGamalPrivateKey.class.st similarity index 97% rename from source/Cryptography/ElGamalPrivateKey.class.st rename to source/Cryptography-Core/ElGamalPrivateKey.class.st index ec63dbd..8cd0789 100644 --- a/source/Cryptography/ElGamalPrivateKey.class.st +++ b/source/Cryptography-Core/ElGamalPrivateKey.class.st @@ -30,7 +30,7 @@ Class { 'generator', 'secretExponent' ], - #category : #'Cryptography-ElGamal' + #category : #'Cryptography-Core-ElGamal' } { #category : #'instance creation' } diff --git a/source/Cryptography/ElGamalPublicKey.class.st b/source/Cryptography-Core/ElGamalPublicKey.class.st similarity index 98% rename from source/Cryptography/ElGamalPublicKey.class.st rename to source/Cryptography-Core/ElGamalPublicKey.class.st index 609b75e..0eec2d2 100644 --- a/source/Cryptography/ElGamalPublicKey.class.st +++ b/source/Cryptography-Core/ElGamalPublicKey.class.st @@ -33,7 +33,7 @@ Class { 'generator', 'generatorRaisedToA' ], - #category : #'Cryptography-ElGamal' + #category : #'Cryptography-Core-ElGamal' } { #category : #'instance creation' } diff --git a/source/Cryptography/EuclidAlgorithm.class.st b/source/Cryptography-Core/EuclidAlgorithm.class.st similarity index 98% rename from source/Cryptography/EuclidAlgorithm.class.st rename to source/Cryptography-Core/EuclidAlgorithm.class.st index 69dd693..c7c45ed 100644 --- a/source/Cryptography/EuclidAlgorithm.class.st +++ b/source/Cryptography-Core/EuclidAlgorithm.class.st @@ -11,7 +11,7 @@ Class { 'v', 'gcd' ], - #category : #'Cryptography-RSA' + #category : #'Cryptography-Core-RSA' } { #category : #'as yet unclassified' } diff --git a/source/Cryptography/Fortuna.class.st b/source/Cryptography-Core/Fortuna.class.st similarity index 98% rename from source/Cryptography/Fortuna.class.st rename to source/Cryptography-Core/Fortuna.class.st index 07748d4..68ab45b 100644 --- a/source/Cryptography/Fortuna.class.st +++ b/source/Cryptography-Core/Fortuna.class.st @@ -8,7 +8,7 @@ Class { 'key', 'ctr' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #example } diff --git a/source/Cryptography/InputEventSensor.extension.st b/source/Cryptography-Core/InputEventSensor.extension.st similarity index 70% rename from source/Cryptography/InputEventSensor.extension.st rename to source/Cryptography-Core/InputEventSensor.extension.st index 402e5dc..9a60860 100644 --- a/source/Cryptography/InputEventSensor.extension.st +++ b/source/Cryptography-Core/InputEventSensor.extension.st @@ -1,6 +1,6 @@ Extension { #name : #InputEventSensor } -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } InputEventSensor >> mousePoint [ ^mousePosition diff --git a/source/Cryptography/Integer.extension.st b/source/Cryptography-Core/Integer.extension.st similarity index 92% rename from source/Cryptography/Integer.extension.st rename to source/Cryptography-Core/Integer.extension.st index cb03434..725b2f7 100644 --- a/source/Cryptography/Integer.extension.st +++ b/source/Cryptography-Core/Integer.extension.st @@ -1,12 +1,12 @@ Extension { #name : #Integer } -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } Integer >> areAllBitsSet [ ^self bytesCount ~= (self + 1) bytesCount ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } Integer >> inverseModulo: n [ "Answer the inverse of the receiver modulus n. That is, the integer y such that (self * y) \\ n is 1. Both self and n must be positive, and it is assumed that self < n and that n is integer." "Details: Use the extended Euclidean algorithm, Schneier, p. 247." @@ -59,7 +59,7 @@ Integer >> inverseModulo: n [ ^ u - u2 ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } Integer >> toEBase64String [ self < 0 ifTrue: [^ '-', self negated toEBase64String]. @@ -67,7 +67,7 @@ Integer >> toEBase64String [ ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } Integer >> twosComplement [ | complement digit length | length := self bytesCount + 1. diff --git a/source/Cryptography/KeyHolder.class.st b/source/Cryptography-Core/KeyHolder.class.st similarity index 99% rename from source/Cryptography/KeyHolder.class.st rename to source/Cryptography-Core/KeyHolder.class.st index 473b6d0..a108ae6 100644 --- a/source/Cryptography/KeyHolder.class.st +++ b/source/Cryptography-Core/KeyHolder.class.st @@ -36,7 +36,7 @@ Class { 'random', 'randomChangeProcess' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #LICENSE } diff --git a/source/Cryptography/KeyHolderData.class.st b/source/Cryptography-Core/KeyHolderData.class.st similarity index 97% rename from source/Cryptography/KeyHolderData.class.st rename to source/Cryptography-Core/KeyHolderData.class.st index 0d2dc01..066f805 100644 --- a/source/Cryptography/KeyHolderData.class.st +++ b/source/Cryptography-Core/KeyHolderData.class.st @@ -14,7 +14,7 @@ Class { #instVars : [ 'key' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #LICENSE } diff --git a/source/Cryptography/LargePositiveInteger.extension.st b/source/Cryptography-Core/LargePositiveInteger.extension.st similarity index 82% rename from source/Cryptography/LargePositiveInteger.extension.st rename to source/Cryptography-Core/LargePositiveInteger.extension.st index 8cda07e..57bb7a5 100644 --- a/source/Cryptography/LargePositiveInteger.extension.st +++ b/source/Cryptography-Core/LargePositiveInteger.extension.st @@ -1,6 +1,6 @@ Extension { #name : #LargePositiveInteger } -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } LargePositiveInteger >> destroy [ "Wipe my bytes so that they cannot possibly be discovered." 1 to: self size do: diff --git a/source/Cryptography/MD2.class.st b/source/Cryptography-Core/MD2.class.st similarity index 98% rename from source/Cryptography/MD2.class.st rename to source/Cryptography-Core/MD2.class.st index 966872f..aa066f5 100644 --- a/source/Cryptography/MD2.class.st +++ b/source/Cryptography-Core/MD2.class.st @@ -7,7 +7,7 @@ Class { #classVars : [ 'PITable' ], - #category : #'Cryptography-MD4' + #category : #'Cryptography-Core-MD4' } { #category : #initialization } diff --git a/source/Cryptography/MD4.class.st b/source/Cryptography-Core/MD4.class.st similarity index 99% rename from source/Cryptography/MD4.class.st rename to source/Cryptography-Core/MD4.class.st index 141e266..c242d9a 100644 --- a/source/Cryptography/MD4.class.st +++ b/source/Cryptography-Core/MD4.class.st @@ -12,7 +12,7 @@ Class { 'input', 'output' ], - #category : #'Cryptography-MD4' + #category : #'Cryptography-Core-MD4' } { #category : #'instance creation' } diff --git a/source/Cryptography/MD5.extension.st b/source/Cryptography-Core/MD5.extension.st similarity index 64% rename from source/Cryptography/MD5.extension.st rename to source/Cryptography-Core/MD5.extension.st index 1b59e83..9ceef9d 100644 --- a/source/Cryptography/MD5.extension.st +++ b/source/Cryptography-Core/MD5.extension.st @@ -1,12 +1,12 @@ Extension { #name : #MD5 } -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } MD5 >> finalHash [ self subclassResponsibility ] -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } MD5 >> initializeState [ self subclassResponsibility diff --git a/source/Cryptography/MD5NonPrimitive.extension.st b/source/Cryptography-Core/MD5NonPrimitive.extension.st similarity index 88% rename from source/Cryptography/MD5NonPrimitive.extension.st rename to source/Cryptography-Core/MD5NonPrimitive.extension.st index 78b0332..c92e35a 100644 --- a/source/Cryptography/MD5NonPrimitive.extension.st +++ b/source/Cryptography-Core/MD5NonPrimitive.extension.st @@ -1,13 +1,13 @@ Extension { #name : #MD5NonPrimitive } -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } MD5NonPrimitive >> finalHash [ "Concatenate the state values to produce the 128-bite result" ^ (state at: 1) asByteArray, (state at: 2) asByteArray, (state at: 3) asByteArray, (state at: 4) asByteArray ] -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } MD5NonPrimitive >> initializeState [ "Some magic numbers to get the process started" diff --git a/source/Cryptography/MD5WithPrimitive.class.st b/source/Cryptography-Core/MD5WithPrimitive.class.st similarity index 96% rename from source/Cryptography/MD5WithPrimitive.class.st rename to source/Cryptography-Core/MD5WithPrimitive.class.st index 24cd828..bc44ec0 100644 --- a/source/Cryptography/MD5WithPrimitive.class.st +++ b/source/Cryptography-Core/MD5WithPrimitive.class.st @@ -4,7 +4,7 @@ Message-Digest Algorithm 5 based on the VM plugin (MD5Plugin) to provide functio Class { #name : #MD5WithPrimitive, #superclass : #MD5, - #category : #'Cryptography-MD5' + #category : #'Cryptography-Core-MD5' } { #category : #'private-buffers' } diff --git a/source/Cryptography/MillerRabin.class.st b/source/Cryptography-Core/MillerRabin.class.st similarity index 96% rename from source/Cryptography/MillerRabin.class.st rename to source/Cryptography-Core/MillerRabin.class.st index a54065b..9b38b6e 100644 --- a/source/Cryptography/MillerRabin.class.st +++ b/source/Cryptography-Core/MillerRabin.class.st @@ -13,7 +13,7 @@ Class { 'k', 'n0' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #'primality testing' } diff --git a/source/Cryptography/OFB.class.st b/source/Cryptography-Core/OFB.class.st similarity index 94% rename from source/Cryptography/OFB.class.st rename to source/Cryptography-Core/OFB.class.st index 9382aaf..82e315e 100644 --- a/source/Cryptography/OFB.class.st +++ b/source/Cryptography-Core/OFB.class.st @@ -4,7 +4,7 @@ Output Feedback Mode Class { #name : #OFB, #superclass : #BlockCipherMode, - #category : #'Cryptography-Core' + #category : #'Cryptography-Core-Core' } { #category : #private } diff --git a/source/Cryptography/PasswordSaltAndStretch.class.st b/source/Cryptography-Core/PasswordSaltAndStretch.class.st similarity index 98% rename from source/Cryptography/PasswordSaltAndStretch.class.st rename to source/Cryptography-Core/PasswordSaltAndStretch.class.st index d172a6c..89cf23b 100644 --- a/source/Cryptography/PasswordSaltAndStretch.class.st +++ b/source/Cryptography-Core/PasswordSaltAndStretch.class.st @@ -26,7 +26,7 @@ Class { 'r', 's' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #LICENSE } diff --git a/source/Cryptography/PositionableStream.extension.st b/source/Cryptography-Core/PositionableStream.extension.st similarity index 72% rename from source/Cryptography/PositionableStream.extension.st rename to source/Cryptography-Core/PositionableStream.extension.st index 1a6feac..5f43260 100644 --- a/source/Cryptography/PositionableStream.extension.st +++ b/source/Cryptography-Core/PositionableStream.extension.st @@ -1,13 +1,13 @@ Extension { #name : #PositionableStream } -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } PositionableStream >> nextUtfString [ ^ (self next: self uint16) asString. ] -{ #category : #'*cryptography-core' } +{ #category : #'*Cryptography-Core-core' } PositionableStream >> nextUtfStringPut: s [ self uint16: s size. diff --git a/source/Cryptography/PrimesFinder.class.st b/source/Cryptography-Core/PrimesFinder.class.st similarity index 97% rename from source/Cryptography/PrimesFinder.class.st rename to source/Cryptography-Core/PrimesFinder.class.st index d0196d9..7147bf0 100644 --- a/source/Cryptography/PrimesFinder.class.st +++ b/source/Cryptography-Core/PrimesFinder.class.st @@ -8,7 +8,7 @@ Class { 'wheel', 'candidate' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #'instance creation' } diff --git a/source/Cryptography/PrimesWheel.class.st b/source/Cryptography-Core/PrimesWheel.class.st similarity index 98% rename from source/Cryptography/PrimesWheel.class.st rename to source/Cryptography-Core/PrimesWheel.class.st index 2e1e2b4..112af34 100644 --- a/source/Cryptography/PrimesWheel.class.st +++ b/source/Cryptography-Core/PrimesWheel.class.st @@ -9,7 +9,7 @@ Class { 'residues', 'satisfied' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #precomputed } diff --git a/source/Cryptography/RSAEncryptionScheme.class.st b/source/Cryptography-Core/RSAEncryptionScheme.class.st similarity index 99% rename from source/Cryptography/RSAEncryptionScheme.class.st rename to source/Cryptography-Core/RSAEncryptionScheme.class.st index e55881a..8e38bdd 100644 --- a/source/Cryptography/RSAEncryptionScheme.class.st +++ b/source/Cryptography-Core/RSAEncryptionScheme.class.st @@ -26,7 +26,7 @@ Class { 'privateKey', 'encodingParameter' ], - #category : #'Cryptography-RSA' + #category : #'Cryptography-Core-RSA' } { #category : #'instance creation' } diff --git a/source/Cryptography/RSAKeyPairGenerator.class.st b/source/Cryptography-Core/RSAKeyPairGenerator.class.st similarity index 98% rename from source/Cryptography/RSAKeyPairGenerator.class.st rename to source/Cryptography-Core/RSAKeyPairGenerator.class.st index 5c1fedd..351ffa8 100644 --- a/source/Cryptography/RSAKeyPairGenerator.class.st +++ b/source/Cryptography-Core/RSAKeyPairGenerator.class.st @@ -13,7 +13,7 @@ Class { 'dQ', 'qInv' ], - #category : #'Cryptography-RSA' + #category : #'Cryptography-Core-RSA' } { #category : #'instance creation' } diff --git a/source/Cryptography/RSAPrivateKey.class.st b/source/Cryptography-Core/RSAPrivateKey.class.st similarity index 98% rename from source/Cryptography/RSAPrivateKey.class.st rename to source/Cryptography-Core/RSAPrivateKey.class.st index 00366b0..c06afb1 100644 --- a/source/Cryptography/RSAPrivateKey.class.st +++ b/source/Cryptography-Core/RSAPrivateKey.class.st @@ -11,7 +11,7 @@ Class { 'dQ', 'qInv' ], - #category : #'Cryptography-RSA' + #category : #'Cryptography-Core-RSA' } { #category : #'instance creation' } diff --git a/source/Cryptography/RSAPublicKey.class.st b/source/Cryptography-Core/RSAPublicKey.class.st similarity index 98% rename from source/Cryptography/RSAPublicKey.class.st rename to source/Cryptography-Core/RSAPublicKey.class.st index abe1954..60cdc0d 100644 --- a/source/Cryptography/RSAPublicKey.class.st +++ b/source/Cryptography-Core/RSAPublicKey.class.st @@ -8,7 +8,7 @@ Class { 'exponent', 'modulo' ], - #category : #'Cryptography-RSA' + #category : #'Cryptography-Core-RSA' } { #category : #'instance creation' } diff --git a/source/Cryptography/RandomGenerator.class.st b/source/Cryptography-Core/RandomGenerator.class.st similarity index 98% rename from source/Cryptography/RandomGenerator.class.st rename to source/Cryptography-Core/RandomGenerator.class.st index d4d74e4..3258113 100644 --- a/source/Cryptography/RandomGenerator.class.st +++ b/source/Cryptography-Core/RandomGenerator.class.st @@ -7,7 +7,7 @@ Class { #classInstVars : [ 'picker' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #utilities } diff --git a/source/Cryptography/RandomPool.class.st b/source/Cryptography-Core/RandomPool.class.st similarity index 98% rename from source/Cryptography/RandomPool.class.st rename to source/Cryptography-Core/RandomPool.class.st index 6d1edee..9f2ba44 100644 --- a/source/Cryptography/RandomPool.class.st +++ b/source/Cryptography-Core/RandomPool.class.st @@ -13,7 +13,7 @@ Class { #classInstVars : [ 'default' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #default } diff --git a/source/Cryptography/Rijndael.class.st b/source/Cryptography-Core/Rijndael.class.st similarity index 99% rename from source/Cryptography/Rijndael.class.st rename to source/Cryptography-Core/Rijndael.class.st index 34a1b63..7292bca 100644 --- a/source/Cryptography/Rijndael.class.st +++ b/source/Cryptography-Core/Rijndael.class.st @@ -30,7 +30,7 @@ Class { 'T2', 'T3' ], - #category : #'Cryptography-Rijndael' + #category : #'Cryptography-Core-Rijndael' } { #category : #accessing } diff --git a/source/Cryptography/SHA1.extension.st b/source/Cryptography-Core/SHA1.extension.st similarity index 67% rename from source/Cryptography/SHA1.extension.st rename to source/Cryptography-Core/SHA1.extension.st index cfb4e52..dcf3ad0 100644 --- a/source/Cryptography/SHA1.extension.st +++ b/source/Cryptography-Core/SHA1.extension.st @@ -1,6 +1,6 @@ Extension { #name : #SHA1 } -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } SHA1 class >> oidString [ ^ '1.3.14.3.2.26'. diff --git a/source/Cryptography/SHA256.extension.st b/source/Cryptography-Core/SHA256.extension.st similarity index 75% rename from source/Cryptography/SHA256.extension.st rename to source/Cryptography-Core/SHA256.extension.st index 536a378..87f4182 100644 --- a/source/Cryptography/SHA256.extension.st +++ b/source/Cryptography-Core/SHA256.extension.st @@ -1,13 +1,13 @@ Extension { #name : #SHA256 } -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } SHA256 class >> isPluginAvailable [ ^false ] -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } SHA256 class >> new [ self isPluginAvailable @@ -15,7 +15,7 @@ SHA256 class >> new [ ifFalse: [ ^SHA256NonPrimitive basicNew ] ] -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } SHA256 class >> oidString [ ^ '2.16.840.1.101.3.4.2.2'. diff --git a/source/Cryptography/SHA256NonPrimitive.class.st b/source/Cryptography-Core/SHA256NonPrimitive.class.st similarity index 99% rename from source/Cryptography/SHA256NonPrimitive.class.st rename to source/Cryptography-Core/SHA256NonPrimitive.class.st index 93a23a8..a6b3d20 100644 --- a/source/Cryptography/SHA256NonPrimitive.class.st +++ b/source/Cryptography-Core/SHA256NonPrimitive.class.st @@ -4,7 +4,7 @@ SHA256 version without using a VM plugin Class { #name : #SHA256NonPrimitive, #superclass : #SHA256, - #category : #'Cryptography-SHA256' + #category : #'Cryptography-Core-SHA256' } { #category : #constants } diff --git a/source/Cryptography/SHA256WithPrimitive.class.st b/source/Cryptography-Core/SHA256WithPrimitive.class.st similarity index 97% rename from source/Cryptography/SHA256WithPrimitive.class.st rename to source/Cryptography-Core/SHA256WithPrimitive.class.st index 5361fe2..dec632a 100644 --- a/source/Cryptography/SHA256WithPrimitive.class.st +++ b/source/Cryptography-Core/SHA256WithPrimitive.class.st @@ -7,7 +7,7 @@ Class { #instVars : [ 'state' ], - #category : #'Cryptography-SHA256' + #category : #'Cryptography-Core-SHA256' } { #category : #accessing } diff --git a/source/Cryptography/SecureRandom.class.st b/source/Cryptography-Core/SecureRandom.class.st similarity index 98% rename from source/Cryptography/SecureRandom.class.st rename to source/Cryptography-Core/SecureRandom.class.st index a745d32..93f3783 100644 --- a/source/Cryptography/SecureRandom.class.st +++ b/source/Cryptography-Core/SecureRandom.class.st @@ -8,7 +8,7 @@ Class { 'seed', 'key' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #example } diff --git a/source/Cryptography/SmalltalkImageInstanceID.class.st b/source/Cryptography-Core/SmalltalkImageInstanceID.class.st similarity index 97% rename from source/Cryptography/SmalltalkImageInstanceID.class.st rename to source/Cryptography-Core/SmalltalkImageInstanceID.class.st index 144441a..49afeb7 100644 --- a/source/Cryptography/SmalltalkImageInstanceID.class.st +++ b/source/Cryptography-Core/SmalltalkImageInstanceID.class.st @@ -7,7 +7,7 @@ Class { #classVars : [ 'InstanceID' ], - #category : #'Cryptography-RandomAndPrime' + #category : #'Cryptography-Core-RandomAndPrime' } { #category : #LICENSE } diff --git a/source/Cryptography/SocketStream.extension.st b/source/Cryptography-Core/SocketStream.extension.st similarity index 87% rename from source/Cryptography/SocketStream.extension.st rename to source/Cryptography-Core/SocketStream.extension.st index 5c7d925..e6e9435 100644 --- a/source/Cryptography/SocketStream.extension.st +++ b/source/Cryptography-Core/SocketStream.extension.st @@ -1,6 +1,6 @@ Extension { #name : #SocketStream } -{ #category : #'*Cryptography-Core' } +{ #category : #'*Cryptography-Core-Core' } SocketStream >> peekInBufferForAll: aString [ "Answer whether or not the inbuffer in the receiver contains aString. If a match is made answer true. diff --git a/source/Cryptography/String.extension.st b/source/Cryptography-Core/String.extension.st similarity index 81% rename from source/Cryptography/String.extension.st rename to source/Cryptography-Core/String.extension.st index c7157d9..719261d 100644 --- a/source/Cryptography/String.extension.st +++ b/source/Cryptography-Core/String.extension.st @@ -1,6 +1,6 @@ Extension { #name : #String } -{ #category : #'*cryptography' } +{ #category : #'*Cryptography-Core' } String >> destroy [ 1 to: self size @@ -11,7 +11,7 @@ String >> destroy [ put: (Character value: 0) ] ] -{ #category : #'*Cryptography' } +{ #category : #'*Cryptography-Core' } String >> padded: directionSymbol to: length with: char [ ^directionSymbol = #left ifTrue: [ self padLeftTo: length with: char ] diff --git a/source/Cryptography/ThirtyTwoBitRegister.extension.st b/source/Cryptography-Core/ThirtyTwoBitRegister.extension.st similarity index 70% rename from source/Cryptography/ThirtyTwoBitRegister.extension.st rename to source/Cryptography-Core/ThirtyTwoBitRegister.extension.st index d9aaaff..8abd9bc 100644 --- a/source/Cryptography/ThirtyTwoBitRegister.extension.st +++ b/source/Cryptography-Core/ThirtyTwoBitRegister.extension.st @@ -1,11 +1,11 @@ Extension { #name : #ThirtyTwoBitRegister } -{ #category : #'*cryptography-core-instance creation' } +{ #category : #'*Cryptography-Core-core-instance creation' } ThirtyTwoBitRegister class >> byte1: hi1 byte2: hi2 byte3: low1 byte4: low2 [ ^ super new byte1: hi1 byte2: hi2 byte3: low1 byte4: low2 ] -{ #category : #'*cryptography-core-instance creation' } +{ #category : #'*Cryptography-Core-core-instance creation' } ThirtyTwoBitRegister class >> loadFrom: aByteArray at: index [ ^ super new loadFrom: aByteArray at: index ] diff --git a/source/Cryptography/TripleDES.class.st b/source/Cryptography-Core/TripleDES.class.st similarity index 96% rename from source/Cryptography/TripleDES.class.st rename to source/Cryptography-Core/TripleDES.class.st index 53f9b91..60530c8 100644 --- a/source/Cryptography/TripleDES.class.st +++ b/source/Cryptography-Core/TripleDES.class.st @@ -9,7 +9,7 @@ Class { 'des2', 'des3' ], - #category : #'Cryptography-DES' + #category : #'Cryptography-Core-DES' } { #category : #accessing } diff --git a/source/Cryptography-Core/package.st b/source/Cryptography-Core/package.st new file mode 100644 index 0000000..e8ba2af --- /dev/null +++ b/source/Cryptography-Core/package.st @@ -0,0 +1 @@ +Package { #name : #'Cryptography-Core' } diff --git a/source/Cryptography/package.st b/source/Cryptography/package.st deleted file mode 100644 index 2f00f2c..0000000 --- a/source/Cryptography/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #Cryptography } From 4fe1aa0a76c585ea2ba7d8a289bf7865e386efad Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 01:14:21 +0200 Subject: [PATCH 32/36] adjust baseline --- source/BaselineOfCryptography/BaselineOfCryptography.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/BaselineOfCryptography/BaselineOfCryptography.class.st b/source/BaselineOfCryptography/BaselineOfCryptography.class.st index 07e9ccd..ec6e9a1 100644 --- a/source/BaselineOfCryptography/BaselineOfCryptography.class.st +++ b/source/BaselineOfCryptography/BaselineOfCryptography.class.st @@ -37,8 +37,8 @@ BaselineOfCryptography >> baseline: spec [ "Other" package: 'Blowfish' with: [ spec requires: #(#'Cryptography-Core') ]; - package: 'OpenPGP' with: [ spec requires: #(#'Cryptography') ]; - package: 'LayeredProtocol' with: [ spec requires: #(#'Cryptography') ]. + package: 'OpenPGP' with: [ spec requires: #(#'Cryptography-Core') ]; + package: 'LayeredProtocol' with: [ spec requires: #(#'Cryptography-Core') ]. spec group: 'core' with: #('Cryptography-Core'); From 7ce4748bb73685d04a161b31d4d054d05f9a0086 Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 01:34:05 +0200 Subject: [PATCH 33/36] Fix packaging problem of extension --- .../BlockCipherMode.extension.st | 2 +- source/Cryptography-Core/BlockCipherMode.class.st | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) rename source/{Cryptography-Core => Cryptography-Core-Tests}/BlockCipherMode.extension.st (89%) diff --git a/source/Cryptography-Core/BlockCipherMode.extension.st b/source/Cryptography-Core-Tests/BlockCipherMode.extension.st similarity index 89% rename from source/Cryptography-Core/BlockCipherMode.extension.st rename to source/Cryptography-Core-Tests/BlockCipherMode.extension.st index 30ae629..4b0fd5d 100644 --- a/source/Cryptography-Core/BlockCipherMode.extension.st +++ b/source/Cryptography-Core-Tests/BlockCipherMode.extension.st @@ -1,6 +1,6 @@ Extension { #name : #BlockCipherMode } -{ #category : #'*cryptography-tests' } +{ #category : #'*Cryptography-Core-Tests' } BlockCipherMode class >> key: aByteArray [ Warning signal: 'you do NOT want to use this method in a real program because we use a hard-coded nonce. You should take care of your own nonce.'. ^ (self on: (Rijndael new keySize: aByteArray size; key: aByteArray)) diff --git a/source/Cryptography-Core/BlockCipherMode.class.st b/source/Cryptography-Core/BlockCipherMode.class.st index 2a7fd8c..eb5c7fd 100644 --- a/source/Cryptography-Core/BlockCipherMode.class.st +++ b/source/Cryptography-Core/BlockCipherMode.class.st @@ -22,13 +22,6 @@ BlockCipherMode class >> isAbstract [ ^self == BlockCipherMode ] -{ #category : #'*cryptography-tests' } -BlockCipherMode class >> key: aByteArray [ - Warning signal: 'you do NOT want to use this method in a real program because we use a hard-coded nonce. You should take care of your own nonce.'. - ^ (self on: (Rijndael new keySize: aByteArray size; key: aByteArray)) - initialVector: #(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) asByteArray -] - { #category : #accessing } BlockCipherMode class >> keySize [ ^ self shouldNotImplement From 4a39eec496e5e3b6451ce1393b6fcba3d389fe4c Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 01:47:22 +0200 Subject: [PATCH 34/36] Do not use #methodSymbol anymore - better use #selector in Pharo 9 Fix #26 --- source/ASN1-Core/ASN1PragmaAccessor.class.st | 2 +- source/ASN1-Core/ASN1PragmaMutator.class.st | 2 +- source/ASN1-Core/ASN1StructureElement.class.st | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/source/ASN1-Core/ASN1PragmaAccessor.class.st b/source/ASN1-Core/ASN1PragmaAccessor.class.st index fd07e6d..b0ea7fd 100644 --- a/source/ASN1-Core/ASN1PragmaAccessor.class.st +++ b/source/ASN1-Core/ASN1PragmaAccessor.class.st @@ -22,7 +22,7 @@ ASN1PragmaAccessor class >> fromPragma: aPragma [ ^self new pragma: aPragma; asn1name: aPragma arguments first; - method: aPragma method methodReference methodSymbol; + method: aPragma method methodReference selector; systemClass: aPragma method methodReference classSymbol; yourself diff --git a/source/ASN1-Core/ASN1PragmaMutator.class.st b/source/ASN1-Core/ASN1PragmaMutator.class.st index bf2c50f..3cc0434 100644 --- a/source/ASN1-Core/ASN1PragmaMutator.class.st +++ b/source/ASN1-Core/ASN1PragmaMutator.class.st @@ -25,7 +25,7 @@ ASN1PragmaMutator class >> fromPragma: aPragma [ ^self new pragma: aPragma; asn1name: aPragma arguments first; - method: aPragma method methodReference methodSymbol; + method: aPragma method methodReference selector; systemClass: aPragma method methodReference classSymbol; classOfMutatorArgument: aPragma arguments second; yourself diff --git a/source/ASN1-Core/ASN1StructureElement.class.st b/source/ASN1-Core/ASN1StructureElement.class.st index e801d71..0df9ff7 100644 --- a/source/ASN1-Core/ASN1StructureElement.class.st +++ b/source/ASN1-Core/ASN1StructureElement.class.st @@ -74,6 +74,7 @@ ASN1StructureElement >> hasDefaultOrIsOptional [ { #category : #initialization } ASN1StructureElement >> initialize [ + super initialize. self optional: false ] From 6a2bd1c094b8b864a8ca80503b3188bd40752dcb Mon Sep 17 00:00:00 2001 From: Torsten Bergmann Date: Sat, 17 Apr 2021 03:16:31 +0200 Subject: [PATCH 35/36] No need for MD4 new, Pharo has built in initialization on instantiation --- source/Cryptography-Core/MD4.class.st | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/Cryptography-Core/MD4.class.st b/source/Cryptography-Core/MD4.class.st index c242d9a..9f1ffe4 100644 --- a/source/Cryptography-Core/MD4.class.st +++ b/source/Cryptography-Core/MD4.class.st @@ -27,11 +27,6 @@ MD4 class >> input: anArray [ ^ self new input: anArray ] -{ #category : #'instance creation' } -MD4 class >> new [ - ^ super new initialize -] - { #category : #'instance creation' } MD4 class >> oidString [ From 92f2c55712a6964b3bbc446d9f9f6dd4ea92c502 Mon Sep 17 00:00:00 2001 From: ELePors Date: Sun, 7 Jan 2024 23:48:00 +0100 Subject: [PATCH 36/36] using SDL2 to compute mouse position --- .../InputEventSensor.extension.st | 7 ------ .../RandomGenerator.class.st | 23 +++++++++++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) delete mode 100644 source/Cryptography-Core/InputEventSensor.extension.st diff --git a/source/Cryptography-Core/InputEventSensor.extension.st b/source/Cryptography-Core/InputEventSensor.extension.st deleted file mode 100644 index 9a60860..0000000 --- a/source/Cryptography-Core/InputEventSensor.extension.st +++ /dev/null @@ -1,7 +0,0 @@ -Extension { #name : #InputEventSensor } - -{ #category : #'*Cryptography-Core' } -InputEventSensor >> mousePoint [ - - ^mousePosition -] diff --git a/source/Cryptography-Core/RandomGenerator.class.st b/source/Cryptography-Core/RandomGenerator.class.st index 3258113..5d19669 100644 --- a/source/Cryptography-Core/RandomGenerator.class.st +++ b/source/Cryptography-Core/RandomGenerator.class.st @@ -63,6 +63,15 @@ RandomGenerator class >> key: anInteger [ self subclassResponsibility ] +{ #category : #utilities } +RandomGenerator class >> mousePosition [ + | x y | + x := ByteArray new: 4. + y := ByteArray new: 4. + SDL2 mouseStateX: x y: y. + ^ ( x signedLongAt: 1) @ (y signedLongAt: 1) +] + { #category : #create } RandomGenerator class >> picker [ ^ picker ifNil: [ picker := self withGeneratedKey ] @@ -83,12 +92,15 @@ RandomGenerator class >> startUp [ { #category : #utilities } RandomGenerator class >> unpredictableStringsDo: aBlock [ "Enumerate sources of information from my environment that should be generally hard to guess." - | time | + | time mousePoint | + time := Time millisecondsToRun: - [ aBlock + [ + mousePoint := self mousePosition. + aBlock value: World imageForm bits compressToByteArray ; - value: Sensor mousePoint x asString ; - value: Sensor mousePoint y asString ; + value: mousePoint x asString ; + value: mousePoint y asString ; value: Time millisecondClockValue asByteArray ; value: Date today asString ; value: Time now asString ; @@ -97,10 +109,11 @@ RandomGenerator class >> unpredictableStringsDo: aBlock [ #(imagePath lastUpdateString systemInformationString shortImageName datedVersion lastQuitLogPosition licenseStringTemplate) collect: [ : each | aBlock value: (SmalltalkImage current perform: each) asByteArray ] ]. + mousePoint := self mousePosition. aBlock value: time asByteArray; "maybe the pointer has moved, hit it again." - value: Sensor mousePoint asString ; + value: mousePoint asString ; value: Time millisecondClockValue asByteArray ]