bitcoinjs/bitcoinjs-lib — pull request #135 by greenaddress (2014-04-17 04:10:06+00:00)
Title: Uses low 's' values for signatures

As per https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki#low-s-values-in-signatures, using values of `s` bounded by `curve.order()/2` can help preventing transaction malleability, by making sure no one other than sender can make different signatures for the same transaction. Combined with additional bitcoind validation to be implemented for transactions with `nVersion=3` it prevents issues with transactions modified by third parties otherwise not having control over them.

This change enables this "low S values" behaviour by default in bitcoinjs-lib, without any additional configuration. I think it is important step for compatibility with `nVersion=3` and is a good idea to always do it, because there are no counterindications for it AFAICS.