The name "libpgfe" used to be an abbreviation of "Library of Password Generation Front-end". Because it is initially designed to be just an HOTP/TOTP library ported to Nettle. But during the development period, more and more algorithms have been directly implemented in this library, so its full name has been deprecated since it may mislead viewers.
Since v0.2.0, libpgfe has been "self-sufficient" and does not depend on any third-party library.
I will think about it eventually, but not now! Because byte order compatibility will dramatically increase complexity of the code, and I currently don't have enough time or effort to tackle it. Also, I do not have Big Endian machines or virtual machines, so the additional code would be left untested, which is not what I expect.
Q3: Why not Assembly Language?
-
I'm not familiar with Assembly.
-
Assembly is machine-dependent.
-
C is fast enough for libpgfe. It's no need to use Assembly to do those optimizations.
PS: MSVC = Microsoft Visual C++
-
This library prioritizes POSIX compatibility, instead of Windows compatibility.
-
libpgfe needs some necessary features that are not included in MSVC. For instance, like the C code below. MSVC will refuse to compile that code, because a variable is used as the array's size, while Clang and GCC are OK with it.
int main() {
int n = 12;
int arr[n];
return 0;
}