code: func (pub *DSAPublicKey) Parse(in []byte) (index []byte, ok bool) {
  	var typeTag uint16
  	if index, typeTag, ok = gotrax.ExtractShort(in); !ok || typeTag != dsaKeyTypeValue {
  		return in, false
  	}
  	if index, pub.P, ok = gotrax.ExtractMPI(index); !ok {
  		return in, false
  	}
  	if index, pub.Q, ok = gotrax.ExtractMPI(index); !ok {
  		return in, false
  	}
  	if index, pub.G, ok = gotrax.ExtractMPI(index); !ok {
  		return in, false
  	}
  	if index, pub.Y, ok = gotrax.ExtractMPI(index); !ok {
  		return in, false
  	}
  	return
  }
docs: // Parse takes the given data and tries to parse it into the PublicKey receiver. It will return not ok if the data is malformed or not for a DSA key