code: func DecodeKey(s string) (*Key, error) {
  	var b []byte
  	var err error
  	if s == "" {
  		return nil, errors.New("empty key")
  	}
  	if len(s) == hex.EncodedLen(len(Key{})) {
  		b, err = hex.DecodeString(s)
  	} else {
  		b, err = base64.StdEncoding.DecodeString(s)
  		if err != nil {
  			b, err = base64.URLEncoding.DecodeString(s)
  		}
  	}
  	if err != nil {
  		return nil, err
  	}
  	if len(b) != len(Key{}) {
  		return nil, errKeyLen
  	}
  	k := new(Key)
  	copy(k[:], b)
  	return k, nil
  }
docs: // DecodeKey decodes a key from s and returns it. The key can be in
  // hexadecimal, standard base64, or URL-safe base64.