Reading a key should go as this: k := new(key) k.ReadPublic(File) k.ReadPrivate(File) For RSA enough public material is stored in the priv. key that we do it in one swoop. This should really be two steps.