code: func (priv *DSAPrivateKey) Import(in []byte) bool {
  	mpiStart := []byte(" #")
  
  	mpis := make([]*big.Int, 5)
  
  	for i := 0; i < len(mpis); i++ {
  		start := bytes.Index(in, mpiStart)
  		if start == -1 {
  			return false
  		}
  		in = in[start+len(mpiStart):]
  		end := bytes.IndexFunc(in, notHex)
  		if end == -1 {
  			return false
  		}
  		hexBytes := in[:end]
  		in = in[end:]
  
  		if len(hexBytes)&1 != 0 {
  			return false
  		}
  
  		mpiBytes := make([]byte, len(hexBytes)/2)
  		if _, err := hex.Decode(mpiBytes, hexBytes); err != nil {
  			return false
  		}
  
  		mpis[i] = new(big.Int).SetBytes(mpiBytes)
  	}
  
  	priv.PrivateKey.P = mpis[0]
  	priv.PrivateKey.Q = mpis[1]
  	priv.PrivateKey.G = mpis[2]
  	priv.PrivateKey.Y = mpis[3]
  	priv.PrivateKey.X = mpis[4]
  	priv.DSAPublicKey.PublicKey = priv.PrivateKey.PublicKey
  
  	a := new(big.Int).Exp(priv.PrivateKey.G, priv.PrivateKey.X, priv.PrivateKey.P)
  	return a.Cmp(priv.PrivateKey.Y) == 0
  }
docs: // Import parses the contents of a libotr private key file.