Skip to content

Pars LibSession - Core cryptographic library for Pars Messenger with FIPS post-quantum crypto

License

Notifications You must be signed in to change notification settings

parsdao/pars-libsession

 
 

Repository files navigation

Pars LibSession

License: GPL-3.0

Core cryptographic library for Pars Messenger - Built on pars.network

Overview

Pars LibSession is the core C++ library that handles Session protocol operations for Pars Messenger apps. It provides:

  • Configuration management
  • Post-quantum encryption/decryption
  • Network communication (onion requests)
  • Protocol encoding/decoding

Current Status

Integration Status: Needs Modification

This library contains hardcoded network endpoints for the Session/Oxen network. To enable Pars Network connectivity, the following modifications are needed.

Required Modifications

  1. Network Configuration (src/session_network.cpp)

    • Make seed node URLs configurable
    • Add runtime network selection
    • Support environment-based configuration
  2. File Server (src/session_network.cpp:250)

    // Current: hardcoded
    constexpr auto file_server = "filev2.getsession.org"sv;
    
    // Needed: configurable
    std::string file_server = get_config("PARS_FILE_SERVER", "files.pars.network");
  3. Protocol URLs (src/session_protocol.cpp)

    • Update hardcoded getsession.org URLs
    • Make URLs configurable or update to pars.network equivalents

Build

# Configure the build
cmake -G Ninja -S . -B Build

# Options:
#   -D ENABLE_ONIONREQ           # Enable onion request APIs
#   -D PARS_NETWORK=1            # Enable Pars network configuration (TODO)

# Regenerate protobuf files
cmake --build Build --target regen-protobuf --parallel --verbose

# Build
cmake --build Build --parallel --verbose

Architecture

pars-libsession/
├── include/session/       # Public headers
│   ├── session_encrypt.h  # Encryption APIs
│   ├── session_network.h  # Network APIs
│   └── config/            # Configuration handling
├── src/
│   ├── session_network.cpp    # Network implementation (needs modification)
│   ├── session_protocol.cpp   # Protocol constants
│   └── ...
├── proto/                 # Protobuf definitions
└── external/              # Dependencies

Usage

C API

#include <session/session_encrypt.h>

// Encrypt a message
session_encrypt(...);

C++ API

#include <session/session_encrypt.hpp>

// Use session utilities
session::encrypt(...);

Integration

This library is used by:

Pars Ecosystem

Repository Description
parsdao/pars-libsession Native crypto library (this repo)
parsdao/pars-desktop Desktop client
parsdao/pars-ios iOS mobile client
parsdao/pars-android Android mobile client
parsdao/node Pars blockchain node

Cryptography

Pars LibSession implements FIPS-compliant post-quantum cryptography:

Algorithm Standard Purpose
ML-KEM-768 FIPS 203 Key encapsulation
ML-DSA-65 FIPS 204 Digital signatures
XChaCha20-Poly1305 - Symmetric encryption (AEAD)
Blake2b-256 - Session ID derivation

Session ID format: 07 + hex(Blake2b-256(KEM_pk || DSA_pk)) = 66 characters

Contributing

  1. Fork this repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Resources

License

GPL-3.0 - See LICENSE

Acknowledgments

About

Pars LibSession - Core cryptographic library for Pars Messenger with FIPS post-quantum crypto

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 83.0%
  • C 14.2%
  • CMake 1.3%
  • Other 1.5%