• Michael McLoughlin's avatar
    curve25519: mask high bit when loading group point · 193df9c0
    Michael McLoughlin authored
    Comparison against BoringSSL-generated test vectors showed mismatches
    with the pure Go implementation of curve25519. The problem was narrowed
    down to a missing mask in feFromBytes(). This diff adds the mask,
    bringing this back in line with the reference implementation and
    RFC 7748:
    
        When receiving such an array, implementations of X25519 (but not
        X448) MUST mask the most significant bit in the final byte.  This is
        done to preserve compatibility with point formats that reserve the
        sign bit for use in other protocols and to increase resistance to
        implementation fingerprinting.
    
    Fixes golang/go#30095
    
    Change-Id: If7efc0e2acd6efb761d6e3cb89cec359d7d81cb1
    Reviewed-on: https://go-review.googlesource.com/c/161257
    Run-TryBot: Filippo Valsorda <filippo@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
    193df9c0
Name
Last commit
Last update
..
const_amd64.h Loading commit data...
const_amd64.s Loading commit data...
cswap_amd64.s Loading commit data...
curve25519.go Loading commit data...
curve25519_test.go Loading commit data...
doc.go Loading commit data...
freeze_amd64.s Loading commit data...
ladderstep_amd64.s Loading commit data...
mont25519_amd64.go Loading commit data...
mul_amd64.s Loading commit data...
square_amd64.s Loading commit data...