DigitalSignatureAlgorithm depends on Sound
Hi I discovered that UUIDGenerator and DigitalSignatureAlgorithm used in some encrypting algo are dependent of Sound. BaseSoundSystem>>:randomBitsFromSoundInput: bitCount "Answer a positive integer with 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." "(1 to: 10) collect: [:i | BaseSoundSystem new randomBitsFromSoundInput: 512]" | recorder buf mid samples bitMask randomBits bit | "collect some sound data" recorder := SoundRecorder new clearRecordedSound. recorder resumeRecording. (Delay forSeconds: 1) wait. recorder stopRecording. buf := recorder condensedSamples. "grab bitCount samples from the middle" mid := buf monoSampleCount // 2. samples := buf copyFrom: mid to: mid + bitCount - 1. "find the least significant bit that varies" bitMask := 1. [bitMask < 16r10000 and: [(samples collect: [:s | s bitAnd: bitMask]) asSet size < 2]] whileTrue: [bitMask := bitMask bitShift: 1]. bitMask = 16r10000 ifTrue: [^ self error: 'sound samples do not vary']. "pack the random bits into a positive integer" randomBits := 0. 1 to: samples size do: [:i | bit := ((samples at: i) bitAnd: bitMask) = 0 ifTrue: [0] ifFalse: [1]. randomBits := (randomBits bitShift: 1) + bit]. ^ randomBits Now I was thinking that when the sound package is not loaded we could have a random number generator. Stef
participants (1)
-
Stéphane Ducasse