PrivateBin API C++ DLL

A cross-platform C++ library for interacting with PrivateBin servers.

Overview

This library provides a simple C++ interface for interacting with PrivateBin services. PrivateBin is a minimalist, open-source online pastebin where the server has zero knowledge of stored data. All data is encrypted and decrypted in the browser using 256-bit AES encryption.

Features

  • Create new pastes with optional expiration, formatting, and security settings
  • Retrieve existing pastes by ID
  • Delete pastes using the deletion token
  • Cross-platform compatibility (Windows and Linux)
  • Support for PrivateBin API versions 1.3 and later

Development & Build

Prerequisites

  • CMake 3.10+
  • C++17-fähiger Compiler (MSVC 2022 bzw. GCC/Clang)
  • Git
  • vcpkg (wird bei Makefile-Nutzung automatisch gebootstrapped)

Dependencies

  • cryptopp (Crypto++)
  • nlohmann-json
  • Windows: WinHTTP (SDK)
  • Linux: libcurl (used automatically via vcpkg)

Quick start with Makefile (Windows & Linux)

  1. Install dependencies, configure, and build:
make
  1. Beispiel bauen und ausführen:
make example

The Makefile does:

  • clone and bootstrap vcpkg
  • install packages from vcpkg.json
  • configure CMake with the vcpkg toolchain
  • build the library and the example

Manual with CMake

# clone and bootstrap vcpkg
git clone https://github.com/microsoft/vcpkg.git "$HOME/vcpkg"
"$HOME/vcpkg/bootstrap-vcpkg.sh"   # Linux/macOS
# Windows (PowerShell):
# powershell -NoProfile -ExecutionPolicy Bypass -Command "& '$env:USERPROFILE\vcpkg\bootstrap-vcpkg.bat'"

# Configure
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake"

# Build
cmake --build build --config Release

# Example
cmake -S example -B example/build -DCMAKE_BUILD_TYPE=Release
cmake --build example/build --config Release

Usage

API Functions

// Create a new paste
int create_paste(const char* server_url, const char* content, 
                 const char* password, const char* expiration,
                 const char* format, int burn_after_reading, 
                 int open_discussion, char** paste_url, 
                 char** delete_token);

// Retrieve a paste
int get_paste(const char* server_url, const char* paste_id, 
              const char* key, char** content);

// Delete a paste
int delete_paste(const char* server_url, const char* paste_id, 
                 const char* delete_token);

// Free memory allocated by the API functions
void free_string(char* str);

Example

#include "privatebinapi.h"
#include <iostream>

int main() {
    char* paste_url = nullptr;
    char* delete_token = nullptr;
    
    int result = create_paste(
        "https://privatebin.net",
        "Hello, PrivateBin!",
        nullptr,           // No password
        "1hour",           // Expire in 1 hour
        "plaintext",       // Plain text format
        0,                 // Don't burn after reading
        0,                 // No discussion
        &paste_url,
        &delete_token
    );
    
    if (result == 0) {
        std::cout << "Paste created: " << paste_url << std::endl;
        std::cout << "Delete token: " << delete_token << std::endl;
        
        // Free allocated memory
        free_string(paste_url);
        free_string(delete_token);
    } else {
        std::cout << "Failed to create paste: " << result << std::endl;
    }
    
    return 0;
}

Error Codes

  • 0: Success
  • 1: Network error
  • 2: Encryption/decryption error
  • 3: Invalid input
  • 4: Server error
  • 5: JSON parsing error

License

This project is licensed under the MIT License - see the LICENSE file for details.

Description
No description provided
Readme MIT 1.3 MiB
2025-08-29 13:18:52 +02:00
Languages
C++ 83.6%
C 13.5%
CMake 1.9%
PowerShell 0.7%
Batchfile 0.2%