OpenSSL is a production-grade cryptographic library and toolkit that implements the TLS, DTLS, and QUIC protocols alongside a comprehensive general-purpose cryptographic library (libcrypto). The codebase is organized around a modular provider architecture: core cryptographic algorithms (ciphers, digests, key exchanges, signatures, etc.) are implemented as loadable providers (default, FIPS, legacy, base, null), with a unified EVP API that dispatches operations to the appropriate provider. The library exposes a vast public API (hundreds of functions in include/openssl/) for secure communications, certificate handling (X.509, PKCS#12, CMS, OCSP), and low-level crypto primitives. The command-line tool (apps/openssl.c) provides administrative and diagnostic commands for key generation, certificate management, encryption, and protocol testing. The architecture is layered: the BIO abstraction handles I/O (files, sockets, memory buffers), the SSL/TLS/QUIC state machines manage handshakes and record layer processing, and the provider framework isolates algorithm implementations from the core library. Key entry points include library initialization (crypto/init.c), provider loading (crypto/provider_core.c), SSL context creation (ssl/ssl_lib.c), and the EVP interface (crypto/evp/). Data flows typically start with an application calling EVP or SSL functions, which route through the provider dispatch to platform-optimized implementations (e.g., AES-NI, ARM NEON, RISC-V vector extensions). The codebase includes extensive fuzzing harnesses (fuzz/), a comprehensive test suite (test/), and demos (demos/) illustrating common use cases. External dependencies are minimal: the core library relies only on OS threading (pthreads, Windows threads) and basic system calls. Optional dependencies include compression libraries (zlib, zstd, brotli) and external test frameworks (tlsfuzzer, NSS, BoringSSL for interop testing). The project actively maintains FIPS 140-3 validation modules and supports post-quantum algorithms (ML-DSA, ML-KEM, SLH-DSA, LMS) alongside legacy algorithms. Platform-specific hardware acceleration is handled through compile-time detection and runtime capability checks (e.g., crypto/armcap.c, crypto/riscvcap.c).
WiiUDownloader is a cross-platform desktop application written in Go that downloads Wii U games, updates, DLC, and demos directly from Nintendo's CDN servers. It is the primary open-source replacement for the abandoned Wii U USB Helper. The application provides a GTK3-based GUI (via gotk3) on all three major platforms, with a command-line core library. Key features include automatic decryption using embedded common keys and title keys derived from PBKDF2, resume-capable downloads with SHA-256 segment verification via a journal file, hash-tree validation for hashed content, FST/U8 archive extraction, and a queue-based batch download system. The architecture cleanly separates the core download/decryption logic (root package) from the GUI (cmd/WiiUDownloader), with reusable internal format parsers for TMD, FST, and U8. No title keys are required; the system generates tickets and certificates on the fly. The project is actively maintained, with recent commits and CI/CD pipelines producing Windows, macOS, and Linux builds.
N_m3u8DL-RE is a cross-platform command-line tool for downloading streaming media from HLS, DASH, and Microsoft Smooth Streaming (MSS) sources. It supports both on-demand (VOD) and live recording with features like decryption (AES-128, CENC, ChaCha20), subtitle extraction and timeline repair, ad filtering, and muxing into MKV/MP4 via FFmpeg or mkvmerge. The architecture is a monolithic CLI application built on .NET 10 with System.CommandLine, Spectre.Console for progress UI, and extensive external tool integration. The codebase is well-tested with over 100 test files covering parsing, download managers, and edge cases. Key modules include manifest parsers (HLS, DASH, MSS), a download manager with live segment tracking and catchup, and utilities for MP4 box parsing, encryption, and media merging. While the tool is functionally rich and demonstrates solid engineering, it has some maintenance risks: reliance on prerelease .NET toolchains, large monolithic classes (e.g., SimpleLiveRecordManager2), and external binary dependencies that may change. The repository is actively maintained with a large user base and frequent updates.
This repository provides a command-line tool for decrypting and unpacking WeChat mini-program package files (.wxapkg). The tool takes a .wxapkg file as input, extracts the wxid from the file path, decrypts the file if necessary using a hardcoded IV and salt with PBKDF2-derived AES-CBC keys, and then unpacks the decrypted file into a directory containing the original mini-program source files. The architecture is a simple monolithic Go application with two internal packages: `decrypter` for handling the decryption process and `unpacker` for parsing the wxapkg binary format and extracting files. The main function in `main.go` orchestrates the flow: argument parsing, decryption (if needed), and unpacking. The decrypter package demonstrates competent use of Go's crypto libraries for AES-CBC decryption and PBKDF2 key derivation, though it is tightly coupled to the WeChat-specific file format (fixed IV, salt, and XOR step). The unpacker package provides a clean, self-contained implementation for reading the wxapkg index structure and extracting embedded files, relying only on the Go standard library. However, the repository is marked as archived by the maintainer due to the inability to keep up with WeChat's frequent updates, indicating that the tool may not work with newer versions of the wxapkg format.