func GenerateLongTermKeys(secretConfig *proto.LocalAccountConfig, publicProfile *proto.Profile, rand io.Reader) error { if pk, sk, err := box.GenerateKey(rand); err != nil { return err } else { secretConfig.TransportSecretKeyForServer = (proto.Byte32)(*sk) publicProfile.UserIDAtServer = (proto.Byte32)(*pk) } if pk, sk, err := box.GenerateKey(rand); err != nil { return err } else { secretConfig.MessageAuthSecretKey = (proto.Byte32)(*sk) publicProfile.MessageAuthKey = (proto.Byte32)(*pk) } if pk, sk, err := ed25519.GenerateKey(rand); err != nil { return err } else { secretConfig.KeySigningSecretKey = sk[:] publicProfile.KeySigningKey = (proto.Byte32)(*pk) } return nil }