CHANGELOG.md (7548B)
1 TweetNaCl.js Changelog 2 ====================== 3 4 v1.0.3 5 ------ 6 7 ***IMPORTANT BUG FIX***. Due to a bug in calculating carry in 8 modulo reduction that used bit operations on integers larger than 9 32 bits, `nacl.sign` or `nacl.sign.detached` could have created 10 incorrect signatures. 11 12 This only affects signing, not verification. 13 14 Thanks to @valerini on GitHub for finding and reporting the bug. 15 16 17 v1.0.2 18 ------ 19 20 Exported more internal undocumented functions for 21 third-party projects that rely on low-level interface, 22 (something users of TweetNaCl shouldn't care about). 23 24 25 v1.0.1 26 ------ 27 28 Updated documentation and typings. 29 30 31 v1.0.0 32 ------ 33 34 No code changes from v1.0.0-rc.1. 35 36 37 v1.0.0-rc.1 38 ----------- 39 40 * **IMPORTANT!** In previous versions, `nacl.secretbox.open`, `nacl.box.open`, 41 and `nacl.box.after` returned `false` when opening failed (for example, when 42 using incorrect key, nonce, or when input was maliciously or accidentally 43 modified after encryption). This version instead returns `null`. 44 45 The usual way to check for this condition: 46 47 `if (!result) { ... }` 48 49 is correct and will continue to work. 50 51 However, direct comparison with `false`: 52 53 `if (result == false) { ... }` 54 55 it will no longer work and **will not detect failure**. Please check 56 your code for this condition. 57 58 (`nacl.sign.open` always returned `null`, so it is not affected.) 59 60 61 * Arguments type check now uses `instanceof Uint8Array` instead of `Object.prototype.toString`. 62 * Removed deprecation checks for `nacl.util` (moved to a 63 [separate package](https://github.com/dchest/tweetnacl-util-js) in v0.14.0). 64 * Removed deprecation checks for the old signature API (changed in v0.10.0). 65 * Improved benchmarking. 66 67 v0.14.5 68 ------- 69 70 * Fixed incomplete return types in TypeScript typings. 71 * Replaced COPYING.txt with LICENSE file, which now has public domain dedication 72 text from The Unlicense. License fields in package.json and bower.json have 73 been set to "Unlicense". The project was and will be in the public domain -- 74 this change just makes it easier for automated tools to know about this fact by 75 using the widely recognized and SPDX-compatible template for public domain 76 dedication. 77 78 79 v0.14.4 80 ------- 81 82 * Added TypeScript type definitions (contributed by @AndSDev). 83 * Improved benchmarking code. 84 85 86 v0.14.3 87 ------- 88 89 Fixed a bug in the fast version of Poly1305 and brought it back. 90 91 Thanks to @floodyberry for promptly responding and fixing the original C code: 92 93 > "The issue was not properly detecting if st->h was >= 2^130 - 5, coupled with 94 > [testing mistake] not catching the failure. The chance of the bug affecting 95 > anything in the real world is essentially zero luckily, but it's good to have 96 > it fixed." 97 98 https://github.com/floodyberry/poly1305-donna/issues/2#issuecomment-202698577 99 100 101 v0.14.2 102 ------- 103 104 Switched Poly1305 fast version back to original (slow) version due to a bug. 105 106 107 v0.14.1 108 ------- 109 110 No code changes, just tweaked packaging and added COPYING.txt. 111 112 113 v0.14.0 114 ------- 115 116 * **Breaking change!** All functions from `nacl.util` have been removed. These 117 functions are no longer available: 118 119 nacl.util.decodeUTF8 120 nacl.util.encodeUTF8 121 nacl.util.decodeBase64 122 nacl.util.encodeBase64 123 124 If want to continue using them, you can include 125 <https://github.com/dchest/tweetnacl-util-js> package: 126 127 <script src="nacl.min.js"></script> 128 <script src="nacl-util.min.js"></script> 129 130 or 131 132 var nacl = require('tweetnacl'); 133 nacl.util = require('tweetnacl-util'); 134 135 However it is recommended to use better packages that have wider 136 compatibility and better performance. Functions from `nacl.util` were never 137 intended to be robust solution for string conversion and were included for 138 convenience: cryptography library is not the right place for them. 139 140 Currently calling these functions will throw error pointing to 141 `tweetnacl-util-js` (in the next version this error message will be removed). 142 143 * Improved detection of available random number generators, making it possible 144 to use `nacl.randomBytes` and related functions in Web Workers without 145 changes. 146 147 * Changes to testing (see README). 148 149 150 v0.13.3 151 ------- 152 153 No code changes. 154 155 * Reverted license field in package.json to "Public domain". 156 157 * Fixed typo in README. 158 159 160 v0.13.2 161 ------- 162 163 * Fixed undefined variable bug in fast version of Poly1305. No worries, this 164 bug was *never* triggered. 165 166 * Specified CC0 public domain dedication. 167 168 * Updated development dependencies. 169 170 171 v0.13.1 172 ------- 173 174 * Exclude `crypto` and `buffer` modules from browserify builds. 175 176 177 v0.13.0 178 ------- 179 180 * Made `nacl-fast` the default version in NPM package. Now 181 `require("tweetnacl")` will use fast version; to get the original version, 182 use `require("tweetnacl/nacl.js")`. 183 184 * Cleanup temporary array after generating random bytes. 185 186 187 v0.12.2 188 ------- 189 190 * Improved performance of curve operations, making `nacl.scalarMult`, `nacl.box`, 191 `nacl.sign` and related functions up to 3x faster in `nacl-fast` version. 192 193 194 v0.12.1 195 ------- 196 197 * Significantly improved performance of Salsa20 (~1.5x faster) and 198 Poly1305 (~3.5x faster) in `nacl-fast` version. 199 200 201 v0.12.0 202 ------- 203 204 * Instead of using the given secret key directly, TweetNaCl.js now copies it to 205 a new array in `nacl.box.keyPair.fromSecretKey` and 206 `nacl.sign.keyPair.fromSecretKey`. 207 208 209 v0.11.2 210 ------- 211 212 * Added new constant: `nacl.sign.seedLength`. 213 214 215 v0.11.1 216 ------- 217 218 * Even faster hash for both short and long inputs (in `nacl-fast`). 219 220 221 v0.11.0 222 ------- 223 224 * Implement `nacl.sign.keyPair.fromSeed` to enable creation of sign key pairs 225 deterministically from a 32-byte seed. (It behaves like 226 [libsodium's](http://doc.libsodium.org/public-key_cryptography/public-key_signatures.html) 227 `crypto_sign_seed_keypair`: the seed becomes a secret part of the secret key.) 228 229 * Fast version now has an improved hash implementation that is 2x-5x faster. 230 231 * Fixed benchmarks, which may have produced incorrect measurements. 232 233 234 v0.10.1 235 ------- 236 237 * Exported undocumented `nacl.lowlevel.crypto_core_hsalsa20`. 238 239 240 v0.10.0 241 ------- 242 243 * **Signature API breaking change!** `nacl.sign` and `nacl.sign.open` now deal 244 with signed messages, and new `nacl.sign.detached` and 245 `nacl.sign.detached.verify` are available. 246 247 Previously, `nacl.sign` returned a signature, and `nacl.sign.open` accepted a 248 message and "detached" signature. This was unlike NaCl's API, which dealt with 249 signed messages (concatenation of signature and message). 250 251 The new API is: 252 253 nacl.sign(message, secretKey) -> signedMessage 254 nacl.sign.open(signedMessage, publicKey) -> message | null 255 256 Since detached signatures are common, two new API functions were introduced: 257 258 nacl.sign.detached(message, secretKey) -> signature 259 nacl.sign.detached.verify(message, signature, publicKey) -> true | false 260 261 (Note that it's `verify`, not `open`, and it returns a boolean value, unlike 262 `open`, which returns an "unsigned" message.) 263 264 * NPM package now comes without `test` directory to keep it small. 265 266 267 v0.9.2 268 ------ 269 270 * Improved documentation. 271 * Fast version: increased theoretical message size limit from 2^32-1 to 2^52 272 bytes in Poly1305 (and thus, secretbox and box). However this has no impact 273 in practice since JavaScript arrays or ArrayBuffers are limited to 32-bit 274 indexes, and most implementations won't allocate more than a gigabyte or so. 275 (Obviously, there are no tests for the correctness of implementation.) Also, 276 it's not recommended to use messages that large without splitting them into 277 smaller packets anyway. 278 279 280 v0.9.1 281 ------ 282 283 * Initial release