code: func deriveKey(ctx context.Context, mk, nonce []byte, size uint8) ([]byte, error) {
  	err := ctxutil.ErrIfDone(ctx)
  	if err != nil {
  		return nil, err
  	}
  
  	h := blake2b.NewMAC(size, nonce) // NewMAC can panic if size is too big.
  	h.Sum(mk)
  	return h.Sum(nil), nil
  }
docs: // deriveKey Derives a single use key from the given master key via blake2b
  // and a nonce.