Skip to content

chardoncs/libpgfe

Repository files navigation

libpgfe

Version License

Introduction

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

Any questions?

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.

Tips for compilation

Compilers

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+

Build tools

CMake is needed to compile the project.

Implementation Reference

Standards

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

Implementation instances

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