• Bryan A Ford's avatar
    crypto/subtle: simplify and speed up constant-time primitives · d58bf64d
    Bryan A Ford authored
    This changes improves the ConstantTimeByteEq and ConstantTimeEq
    primitives to both simplify them and improve their performance.
    
    Also, since there were no benchmarks for this package before,
    this change adds benchmarks for ConstantTimeByteEq,
    ConstantTimeEq, and ConstantTimeLessOrEq.
    
    benchmarks on darwin/amd64, 10 runs on old vs new code:
    
    name                    old time/op  new time/op  delta
    ConstantTimeByteEq-4    2.28ns ±16%  1.53ns ± 2%  -33.09%  (p=0.000 n=10+9)
    ConstantTimeEq-4        2.77ns ±10%  1.51ns ± 2%  -45.59%  (p=0.000 n=10+9)
    ConstantTimeLessOrEq-4  1.52ns ± 8%  1.50ns ± 2%     ~     (p=0.866 n=9+9)
    
    Change-Id: I29b8cbcf158e1f30411720db82d38b4ecd166b15
    Reviewed-on: https://go-review.googlesource.com/45310Reviewed-by: 's avatarAdam Langley <agl@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Adam Langley <agl@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    d58bf64d
constant_time.go 1.78 KB