On Wed, Apr 8, 2009 at 4:02 AM, Matthew Toseland
<toad at amphibian.dyndns.org> wrote:
> On Tuesday 07 April 2009 16:26:42 j16sdiz at freenetproject.org wrote:
>> Author: j16sdiz
>> Date: 2009-04-07 15:26:41 +0000 (Tue, 07 Apr 2009)
>> New Revision: 26609
>>
>> Modified:
>> ? ?trunk/freenet/src/freenet/crypt/Yarrow.java
>> Log:
>> Use int[] instead of Integer, save autoboxing and put()
>>
>> Modified: trunk/freenet/src/freenet/crypt/Yarrow.java
>> ===================================================================
>> --- trunk/freenet/src/freenet/crypt/Yarrow.java ? ? ? 2009-04-07 15:06:39 
>> UTC (rev
> 26608)
>> +++ trunk/freenet/src/freenet/crypt/Yarrow.java ? ? ? 2009-04-07 15:26:41 
>> UTC (rev
> 26609)
>> @@ -444,12 +444,12 @@
>> ? ? ? private MessageDigest fast_pool, ?slow_pool;
>> ? ? ? private int fast_entropy, ?slow_entropy;
>> ? ? ? private boolean fast_select;
>> - ? ? private Map<EntropySource, Integer> entropySeen;
>> + ? ? private Map<EntropySource, int[]> entropySeen;
>>
>> ? ? ? private void accumulator_init(String digest) throws
> NoSuchAlgorithmException {
>> ? ? ? ? ? ? ? fast_pool = MessageDigest.getInstance(digest);
>> ? ? ? ? ? ? ? slow_pool = MessageDigest.getInstance(digest);
>> - ? ? ? ? ? ? entropySeen = new HashMap<EntropySource, Integer>();
>> + ? ? ? ? ? ? entropySeen = new HashMap<EntropySource, int[]>();
>> ? ? ? }
>>
>> ? ? ? @Override
>> @@ -515,21 +515,21 @@
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? slow_entropy += actualEntropy;
>>
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(source != null) {
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Integer contributedEntropy = 
>> entropySeen.get(source);
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(contributedEntropy == null)
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? contributedEntropy = 
>> Integer.valueOf(actualEntropy);
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? contributedEntropy = 
>> Integer.valueOf(actualEntropy +
> contributedEntropy.intValue());
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? entropySeen.put(source, 
>> contributedEntropy);
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int[] contributedEntropy = 
>> entropySeen.get(source);
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(contributedEntropy == null) {
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? contributedEntropy = new int[] 
>> { actualEntropy };
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? entropySeen.put(source, 
>> contributedEntropy);
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? contributedEntropy[0]++;
>
> Wrong.
> contributedEntropy[0] += actualEntropy;
> Please do not make mistakes in crypt/!
> Otherwise it's a neat optimisation, although using a MutableInt would be
> cleaner.

fixed in r26629.

(this is in the reseed from entropy source code path.)
btw, the current code maybe reseeding too infrequent.

This is the current reseed logic:
   (1) we have more then  (SLOW_THRESHOLD * 2) bits in slow_entropy
 _AND_
   (2) those entropy are from TWO DIFFERENT source, each contribute more then
          THRESHOLD bits

However, we have ONLY TWO sources,
the TWO DIFFERENT sources requirement is too hard to meet.

[...]

Reply via email to