phc-format

Latest version on npm Downloads on npm Project license
Lint status Test macOS status Test Ubuntu status Test Windows status
Codecov Coverage report Known Vulnerabilities Dependency Status
XO Code Style used AVA Test Runner used Istanbul Test Coverage used NI Scaffolding System used NP Release System used

πŸ“ PHC string format serializer/deserializer
Coded with ❀️ by Simone Primarosa.

## Motivation The [PHC String Format][specs:phc] is an attempt to specify a common hash string format that’s a restricted & well defined subset of the Modular Crypt Format. New hashes are strongly encouraged to adhere to the PHC specification, rather than the much looser [Modular Crypt Format][specs:mcf]. ## Install ```bash npm install --save @phc/format ``` ## Usage ```js const phc = require('@phc/format'); const phcobj = { id: 'pbkdf2-sha256', params: {i: 6400}, salt: Buffer.from('0ZrzXitFSGltTQnBWOsdAw', 'base64'), hash: Buffer.from('Y11AchqV4b0sUisdZd0Xr97KWoymNE0LNNrnEgY4H9M', 'base64'), }; const phcstr = "$pbkdf2-sha256$i=6400$0ZrzXitFSGltTQnBWOsdAw$Y11AchqV4b0sUisdZd0Xr97KWoymNE0LNNrnEgY4H9M"; phc.serialize(phcobj); // => phcstr phc.deserialize(phcstr); // => phcobj ``` You can also pass an optional version parameter. ```js const phc = require('@phc/format'); const phcobj = { id: 'argon2i', version: 19, params: { m: 120, t: 5000, p: 2 }, salt: Buffer.from('iHSDPHzUhPzK7rCcJgOFfg', 'base64'), hash: Buffer.from('J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g', 'base64'), }; const phcstr = "$argon2i$v=19$m=120,t=5000,p=2$iHSDPHzUhPzK7rCcJgOFfg$J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g"; phc.serialize(phcobj); // => phcstr phc.deserialize(phcstr); // => phcobj ``` ## API #### TOC
serialize(opts) β‡’ string

Generates a PHC string using the data provided.

deserialize(phcstr) β‡’ Object

Parses data from a PHC string.

### serialize(opts) β‡’ string Generates a PHC string using the data provided. **Kind**: global function **Returns**: string - The hash string adhering to the PHC format. | Param | Type | Description | | --- | --- | --- | | opts | Object | Object that holds the data needed to generate the PHC string. | | opts.id | string | Symbolic name for the function. | | [opts.version] | Number | The version of the function. | | [opts.params] | Object | Parameters of the function. | | [opts.salt] | Buffer | The salt as a binary buffer. | | [opts.hash] | Buffer | The hash as a binary buffer. | ### deserialize(phcstr) β‡’ Object Parses data from a PHC string. **Kind**: global function **Returns**: Object - The object containing the data parsed from the PHC string. | Param | Type | Description | | --- | --- | --- | | phcstr | string | A PHC string to parse. | ## Contributing Contributions are REALLY welcome and if you find a security flaw in this code, PLEASE [report it][new issue]. Please check the [contributing guidelines][contributing] for more details. Thanks! ## Authors - **Simone Primarosa** - *Github* ([@simonepri][github:simonepri]) β€’ *Twitter* ([@simoneprimarosa][twitter:simoneprimarosa]) See also the list of [contributors][contributors] who participated in this project. ## License This project is licensed under the MIT License - see the [license][license] file for details. [start]: https://github.com/simonepri/phc-format#start-of-content [new issue]: https://github.com/simonepri/phc-format/issues/new [contributors]: https://github.com/simonepri/phc-format/contributors [license]: https://github.com/simonepri/phc-format/tree/master/license [contributing]: https://github.com/simonepri/phc-format/tree/master/.github/contributing.md [github:simonepri]: https://github.com/simonepri [twitter:simoneprimarosa]: http://twitter.com/intent/user?screen_name=simoneprimarosa [specs:mcf]: https://github.com/ademarre/binary-mcf [specs:phc]: https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md