23f98c22f512b43eda44875cf49c756c8fb2f474
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
Entwicklung & Build
Voraussetzungen
- CMake 3.10+
- C++17-fähiger Compiler (MSVC 2022 bzw. GCC/Clang)
- Git
- vcpkg (wird bei Makefile-Nutzung automatisch gebootstrapped)
Abhängigkeiten
- cryptopp (Crypto++)
- nlohmann-json
- Windows: WinHTTP (SDK)
- Linux: libcurl (wird automatisch über vcpkg genutzt)
Schnellstart mit Makefile (Windows & Linux)
- Abhängigkeiten installieren, konfigurieren und bauen:
make
- Beispiel bauen und ausführen:
make example
Das Makefile erledigt:
- vcpkg klonen & bootstrappen
- Pakete aus
vcpkg.jsoninstallieren - CMake mit vcpkg-Toolchain konfigurieren
- Bibliothek und Beispiel bauen
Manuell mit CMake
# vcpkg klonen & bootstrappen
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'"
# Konfigurieren
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake"
# Bauen
cmake --build build --config Release
# Beispiel
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.
v0.1.9.4 - Automated Release
Latest
Languages
C++
83.6%
C
13.5%
CMake
1.9%
PowerShell
0.7%
Batchfile
0.2%