code: func Setup(nonce Nonce, key Key) (Key, *[16]byte) {
  	// We use XSalsa20 for encryption so first we need to generate a
  	// key and nonce with HSalsa20.
  	var hNonce [16]byte
  	copy(hNonce[:], nonce[:])
  	var subKey [32]byte
  	salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma)
  
  	// The final 8 bytes of the original nonce form the new nonce.
  	var counter [16]byte
  	copy(counter[:], nonce[16:])
  	return &subKey, &counter
  }
docs: // Setup produces a sub-key and Salsa20 counter given a nonce and key.