libpgfe (IPA: /ˌlɪbˈpɪɡfiː/, respelling: "lib-PIG-fee") is a free and open-source cryptographic library focusing on flexibility and easy-to-access interfaces, which is written in C and C++.
libpgfe currently supports hash encoding (e.g. SHA256, MD5), HMAC encoding, HOTP/TOTP, Base 16/32/64 and Blowfish.
libpgfe is currently under heavy development, more features and optimization will be added in the future.
Entry | Info |
---|---|
C Standard | C11 (ISO/IEC 9899:2011) |
C++ Standard | C++14 (ISO/IEC 14882:2014) |
Compiler | LLVM Clang |
License | MIT |
The implementation philosophy of libpgfe assumes that the systems running this library are Little Endian, since it is widely used by architectures and OS. Therefore, this library should not run properly on Big Endian systems.
It is suggested to use latest LLVM or GCC to compile this project. Using MSVC is not tested and will probably cause compilation failure.
Compiler | Suggested version |
---|---|
LLVM Clang | 11.0+ |
GCC | 9.0+ |
CMake is needed to compile the project.
The standards that are followed in this library are shown below.
Algorithm | Standard |
---|---|
Base 16/32/64 | RFC 4648 |
Blowfish | DOI: 10.1007/3-540-58108-1_24 |
HMAC | RFC 2104 RFC 6151 |
HOTP | RFC 4226 |
MD5 | RFC 1321 RFC 6151 |
SHA-1 | RFC 3174 RFC 6234 |
SHA-2 Family | RFC 6234 NIST FIPS 180-4 (Aug. 2015 ver.) |
SHA-3/SHAKE Family (Revised Keccak) | NIST FIPS 202 |
TOTP | RFC 6238 |
Meanwhile, some existing implementation repositories are referenced for the development.
Algorithm | Reference |
---|---|
Blowfish | Reference source code |
SHA-3/SHAKE Family | Keccak-NIST Reference Implementation Fackelmann/SHA3 brainhub/SHU3IUF mjosaarinen/tiny_sha3 |