function _bi255(value) {
        if (!(this instanceof _bi255)) {
            return new _bi255(value);
        }
        if (typeof value === 'undefined') {
            return _ZERO;
        }
        var c = value.constructor;
        if ((c === Array || c === Uint16Array || c === Uint32Array) && (value.length === 16)) {
            this.n = value;
        } else if ((c === Array) && (value.length === 32)) {
            this.n = _bytes2bi255(value).n;
        } else if (c === String) {
            this.n = utils.hexDecode(value);
        } else if (c === Number) {
            this.n = [value & 0xffff,
                      value >> 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
        } else if (value instanceof _bi255) {
            this.n = value.n.slice(0); // Copy constructor
        } else {
            throw "Bad argument for bignum: " + value;
        }
    }
@exports jodid25519/eddsa
Digital signature scheme based on Curve25519 (Ed25519 or EdDSA).

@description
Digital signature scheme based on Curve25519 (Ed25519 or EdDSA).

<p>
This code is adapted from fast-djbec.js, a faster but more complicated
version of the Ed25519 encryption scheme (as compared to djbec.js).
It uses two different representations for big integers: The jsbn
BigInteger class, which can represent arbitrary-length numbers, and a
special fixed-length representation optimised for 256-bit integers.
The reason both are needed is that the Ed25519 algorithm requires some
512-bit numbers.</p>