code: func (g *Guard) Secret(v []byte) (*Secret, error) {
  	g.lock.Lock()
  	defer g.lock.Unlock()
  
  	b, err := memguard.NewMutableFromBytes(v)
  	if err != nil {
  		return nil, err
  	}
  
  	s := Secret{
  		buffer: b,
  		guard:  g,
  	}
  
  	g.secrets = append(g.secrets, &s)
  	return &s, nil
  }
docs: // Secret returns a new secret for the given value, the given byte slice will
  // be wiped *after* the secret has been moved into secure memory.