1# sha 2 3Check and get file hashes (using any algorithm) 4 5[![Build Status](https://img.shields.io/travis/ForbesLindesay/sha/master.svg)](https://travis-ci.org/ForbesLindesay/sha) 6[![Dependency Status](https://img.shields.io/david/ForbesLindesay/sha.svg)](https://david-dm.org/ForbesLindesay/sha) 7[![NPM version](https://img.shields.io/npm/v/sha.svg)](https://www.npmjs.com/package/sha) 8 9## Installation 10 11 $ npm install sha 12 13## API 14 15### check(fileName, expected, [options,] cb) / checkSync(filename, expected, [options]) 16 17Asynchronously check that `fileName` has a "hash" of `expected`. The callback will be called with either `null` or an error (indicating that they did not match). 18 19Options: 20 21- algorithm: defaults to `sha1` and can be any of the algorithms supported by `crypto.createHash` 22 23### get(fileName, [options,] cb) / getSync(filename, [options]) 24 25Asynchronously get the "hash" of `fileName`. The callback will be called with an optional `error` object and the (lower cased) hex digest of the hash. 26 27Options: 28 29- algorithm: defaults to `sha1` and can be any of the algorithms supported by `crypto.createHash` 30 31### stream(expected, [options]) 32 33Check the hash of a stream without ever buffering it. This is a pass through stream so you can do things like: 34 35```js 36fs.createReadStream('src') 37 .pipe(sha.stream('expected')) 38 .pipe(fs.createWriteStream('dest')) 39``` 40 41`dest` will be a complete copy of `src` and an error will be emitted if the hash did not match `'expected'`. 42 43Options: 44 45- algorithm: defaults to `sha1` and can be any of the algorithms supported by `crypto.createHash` 46 47## License 48 49You may use this software under the BSD or MIT. Take your pick. If you want me to release it under another license, open a pull request.