> For the complete documentation index, see [llms.txt](https://easyauth.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://easyauth.papelship.com/documentation/overview/installation-setup.md).

# Installation Setup

This page covers detailed project setup, MSBuild settings, required libraries, and compiler flags.

## Required Libraries & Headers

EasyAuth is delivered as a static C++ library (`.lib`) with companion headers.

### Required Header Files

* **`qPapelEasyAuth.h`**: The primary header exposing all EasyAuth SDK functions, configurations, and structures.
* **`PluginManager.h`**: The plugin interface and event hook engine.
* **`obfuscate.h`**: Compile-time string encryption utility (`_XOR_("string")`).

### Required Static Libraries

* **`qPapelEasyAuth.lib`**: The core EasyAuth static library (compiled with MSVC or Polaris/OLLVM).
* **`libsodium.lib`**: Cryptographic primitives for ChaCha20-Poly1305 and Argon2.

## Visual Studio Project Settings (.vcxproj)

You can either configure your project via the Visual Studio GUI or directly paste the following XML snippets into your `.vcxproj` file.

{% stepper %}
{% step %}

## Include and Library Directories

```xml
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <ClCompile>
    <WarningLevel>Level3</WarningLevel>
    <FunctionLevelLinking>true</FunctionLevelLinking>
    <IntrinsicFunctions>true</IntrinsicFunctions>
    <SDLCheck>true</SDLCheck>
    <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    <ConformanceMode>true</ConformanceMode>
    <LanguageStandard>stdcpp17</LanguageStandard>
    <AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  </ClCompile>
  <Link>
    <SubSystem>Console</SubSystem>
    <EnableCOMDATFolding>true</EnableCOMDATFolding>
    <OptimizeReferences>true</OptimizeReferences>
    <GenerateDebugInformation>true</GenerateDebugInformation>
    <AdditionalLibraryDirectories>lib\x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    <AdditionalDependencies>qPapelEasyAuth.lib;libsodium.lib;ws2_32.lib;crypt32.lib;shlwapi.lib;wbemuuid.lib;wininet.lib;gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
  </Link>
</ItemDefinitionGroup>
```

{% hint style="warning" %}
**Important Linker Dependencies**:

EasyAuth utilizes standard Windows APIs for network, encryption, and telemetry. Ensure your linker dependencies include: `ws2_32.lib`, `crypt32.lib`, `shlwapi.lib`, `wbemuuid.lib`, `wininet.lib`, and `gdiplus.lib`.
{% endhint %}
{% endstep %}
{% endstepper %}

## Compile-Time String Encryption (`_XOR_`)

To prevent reverse engineers from extracting plain text API keys and endpoint strings using string inspection tools (like `strings` or IDA Pro string view), always wrap sensitive strings with the `_XOR_` macro:

```cpp
#include "obfuscate.h"

// ✅ Best Practice: Encrypted at compile-time, decrypted on stack at runtime
std::string api_key = _XOR_("pk_00000073_1381695181994e4ea94eabf54911520b");

// ❌ Insecure: Plain text embedded in binary .rdata section
std::string raw_key = "pk_00000073_1381695181994e4ea94eabf54911520b";
```

## Anti-Tamper CRC Synchronization

When EasyAuth is compiled into your application, the server-side security engine computes a runtime `.text` section hash to protect against patching and cracking.

If you rebuild your application or enable new compiler optimizations, update the expected checksum in your EasyAuth Server dashboard or disable strict CRC checking in development mode:

```cpp
// Disable CRC32 check during rapid local debugging if needed
cfg.flags = easyauth::flag_all & ~easyauth::flag_crc32;
```
