conformal/btcscript — pull request #31 by davecgh (2014-12-20 07:48:44+00:00)
Title: Update script builder for BIP0062 and enforce limits.

BIP0062 defines specific rules and canonical encodings for data pushes.

The existing script builder code already conformed to all but one of the
canonical data push rules that was added after it was originally
implemented (adding a single byte of 0x81 must be converted to
OP_1NEGATE). This commit implements that case and expands the existing
tests to explicitly cover all cases mentioned in BIP0062.

In addition, as a part of this change, the AddData function has been
modified so that any attempt to push more than the maximum script element
size bytes (520) in one push or any pushes the would cause the script to
exceed the maximum script bytes allowed by the script engine (10000) will
result in the script not being modified . This change should have no
effect on existing callers since they are almost positively not creating
scripts which violate these rules as they could never be executed.

However, since the regression tests intentionally need to be able to
exceed that limit, a new function named AddFullData has been added which
does not enforce the limits, but still provides canonical encoding of the
pushed data.

Note that this commit does not affect consensus rules nor modify the
script engine.