Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



45 Commits

Repository files navigation


NaCL Pipe Go Package


A simple experimental Go package providing an io.Reader/io.Writer interface with an NaCL (pronounced 'Salt') crypto backend.

  • np* is the previously called naclpipe tool using this Go package.


  • 2018-11-17

    • remove old unsafe backware compatibility code.
    • tagged 0.2.0
  • 2018-06-24

    • added argon2id key derivation function.
    • upgraded the key derivation function and the parameters to a 2018 flavor.
    • added some godoc documentation
  • 2018-04-01

    • separating command 'np' and package 'naclpipe', this way package can eventually be reused as "crypto" stream.
    • reusable io.Reader/Writer interface.
    • Starting 'semver' and documenting, first version will be 0.1.0
  • 2018-03-24

    • fixing the empty scrypt salt reported by Tom Eklof
    • better handling of pipe input.
    • the structure has changed as the CSPRNG'ed salt is prefixed to the series of blocks

Package Example Usage

import ""

// block size can be arbitrary, we read in block of datas
block := make([]byte, 8192)

// initilize my reader from stdin
cryptoReader, err := naclpipe.NewReader(os.Stdin, "mysuperduperpassword", naclpipe.DerivateArgon2id)
if err != nil {
    log.Fatalf("naclpipe error")

// read & decipher in block
_, err := cryptoReader.Read(b)

Package Usage Example / Tool

see np.

Package Doc

Featuring (because there is always a star in your production..)