No edit summary |
(Mention <crypt.h> change) |
||
Line 44: | Line 44: | ||
* Other developers: | * Other developers: | ||
** Add <code>#include <crypt.h</code> if it was missing before. <code><unistd.h></code> no longer provides a declaration of the <code>crypt</code> function. | |||
** Test their applications using one of the following interfaces for unexpected changes in functionality: | ** Test their applications using one of the following interfaces for unexpected changes in functionality: | ||
*** crypt() | *** crypt() | ||
Line 57: | Line 58: | ||
* Policies and guidelines: N/A (not needed for this Change) | * Policies and guidelines: N/A (not needed for this Change) | ||
* Trademark approval: N/A (not needed for this Change) | * Trademark approval: N/A (not needed for this Change) | ||
== Upgrade/compatibility impact == | == Upgrade/compatibility impact == |
Revision as of 16:12, 24 January 2018
Replace glibc's libcrypt with libxcrypt
Summary
There are plans to remove libcrypt from glibc, so we should have a replacement.
Owner
- Name: Björn Esser, Florian Weimer
- Email: besser82@fedoraproject.org, fweimer@redhat.com
- Release notes owner:
Current status
Detailed Description
Since there has been some discussion in the last time about removing libcrypt from glibc in some time and splitting it out into a separate project which can evolve quicker, Zack Weinberg and I put some work into libxcrypt to make it a basically suitable replacement.
It comes with a set of extended interfaces pioneered by Openwall Linux, crypt_rn, crypt_ra, crypt_gensalt, crypt_gensalt_rn, and crypt_gensalt_ra.
The crypt and gensalt functions are supporting all (except for Crypt16, which was used on Ultrix and Tru64, only) widely used password hashing algorithms, which before were specific to just some operating system's implementations of libcrypt.
Benefit to Fedora
With libxcrypt the following benefits are expected:
- new hashing algorithms are easiely integratable
- faster development cycle compared to glibc's libcrypt
- support for all hashing algorithms ever introduced to the crypt function
Scope
- Proposal owners:
- Apply needed packaging changes to glibc
- Review, import and build libxcrypt for Fedora 28
- Other developers:
- Add
#include <crypt.h
if it was missing before.<unistd.h>
no longer provides a declaration of thecrypt
function. - Test their applications using one of the following interfaces for unexpected changes in functionality:
- crypt()
- crypt_r()
- encrypt()
- encrypt_r()
- fcrypt()
- setkey()
- setkey_r()
- Add
- Release engineering: #7160 none expected
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
libxcrypt is fully binary compatible with software linked against glibc's libcrypt and does not require any rebuilds. However, the converse is not true: programs linked against libxcrypt will not work with glibc's libcrypt. Also, programs that use certain legacy APIs supplied by glibc's libcrypt (encrypt, encrypt_r, setkey, setkey_r, and fcrypt) cannot be compiled against libxcrypt.
How To Test
- Logout of your current user session and check if you can login again.
- Change your user password and check if you can login with the new one.
- Check if all packages built against libcrypt are working as expected. You can get a list of those packages with the following command:
sudo dnf repoquery --whatrequires 'libcrypt.so*' | sed -e 's!-[0-9]\+.*$!!g' | sort -u
User Experience
No noticable changes for end-users. Software developers can use some new functionality.
Dependencies
None, except for glibc (and the needed changes there).
Contingency Plan
- Contingency mechanism: Revert changes and restore glibc's libcrypt (and rebuild binaries which link against libxcrypt-only symbols)
- Contingency deadline: Completion deadline (testable)
- Blocks release? No
- Blocks product? None
Documentation
tba.
Release Notes
tba.