base-system-busybox: SHA512 support patch from Alpine.
This commit is contained in:
parent
06210136c6
commit
5917e3ea6f
2 changed files with 79 additions and 1 deletions
78
srcpkgs/base-system-busybox/patches/loginutils-sha512.patch
Normal file
78
srcpkgs/base-system-busybox/patches/loginutils-sha512.patch
Normal file
|
@ -0,0 +1,78 @@
|
|||
diff --git a/libbb/pw_encrypt.c b/libbb/pw_encrypt.c
|
||||
index 39ffa08..432551c 100644
|
||||
--- libbb/pw_encrypt.c
|
||||
+++ libbb/pw_encrypt.c
|
||||
@@ -59,7 +59,7 @@ char* FAST_FUNC crypt_make_pw_salt(char salt[MAX_PW_SALT_LEN], const char *algo)
|
||||
*salt_ptr++ = '$';
|
||||
#if !ENABLE_USE_BB_CRYPT || ENABLE_USE_BB_CRYPT_SHA
|
||||
if (algo[0] == 's') { /* sha */
|
||||
- salt[1] = '5' + (strcmp(algo, "sha512") == 0);
|
||||
+ salt[1] = '6' - (strcmp(algo, "sha256") == 0);
|
||||
len = 16/2;
|
||||
}
|
||||
#endif
|
||||
diff --git a/loginutils/chpasswd.c b/loginutils/chpasswd.c
|
||||
index 54ed737..59ea602 100644
|
||||
--- loginutils/chpasswd.c
|
||||
+++ loginutils/chpasswd.c
|
||||
@@ -13,11 +13,13 @@
|
||||
//usage: "Read user:password from stdin and update /etc/passwd\n"
|
||||
//usage: IF_LONG_OPTS(
|
||||
//usage: "\n -e,--encrypted Supplied passwords are in encrypted form"
|
||||
-//usage: "\n -m,--md5 Use MD5 encryption instead of DES"
|
||||
+//usage: "\n -m,--md5 Use MD5 encryption instead of SHA512"
|
||||
+//usage: "\n -d,--des Use DES encryption instead of SHA512"
|
||||
//usage: )
|
||||
//usage: IF_NOT_LONG_OPTS(
|
||||
//usage: "\n -e Supplied passwords are in encrypted form"
|
||||
-//usage: "\n -m Use MD5 encryption instead of DES"
|
||||
+//usage: "\n -m Use MD5 encryption instead of SHA512"
|
||||
+//usage: "\n -d Use DES encryption instead of SHA512"
|
||||
//usage: )
|
||||
|
||||
//TODO: implement -c ALGO
|
||||
@@ -26,11 +28,13 @@
|
||||
static const char chpasswd_longopts[] ALIGN1 =
|
||||
"encrypted\0" No_argument "e"
|
||||
"md5\0" No_argument "m"
|
||||
+ "des\0" No_argument "d"
|
||||
;
|
||||
#endif
|
||||
|
||||
#define OPT_ENC 1
|
||||
#define OPT_MD5 2
|
||||
+#define OPT_DES 4
|
||||
|
||||
int chpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int chpasswd_main(int argc UNUSED_PARAM, char **argv)
|
||||
@@ -41,9 +45,9 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (getuid() != 0)
|
||||
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
|
||||
|
||||
- opt_complementary = "m--e:e--m";
|
||||
+ opt_complementary = "m--e:e--m:d--e:e--d:m--d:d--m";
|
||||
IF_LONG_OPTS(applet_long_options = chpasswd_longopts;)
|
||||
- opt = getopt32(argv, "em");
|
||||
+ opt = getopt32(argv, "emd");
|
||||
|
||||
while ((name = xmalloc_fgetline(stdin)) != NULL) {
|
||||
char *free_me;
|
||||
@@ -61,12 +65,14 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (!(opt & OPT_ENC)) {
|
||||
char salt[sizeof("$N$XXXXXXXX")];
|
||||
|
||||
- crypt_make_salt(salt, 1);
|
||||
+ salt[0] = '$';
|
||||
+ salt[1] = '6';
|
||||
+ salt[2] = '$';
|
||||
+ crypt_make_salt(salt + 3, 4);
|
||||
if (opt & OPT_MD5) {
|
||||
- salt[0] = '$';
|
||||
salt[1] = '1';
|
||||
- salt[2] = '$';
|
||||
- crypt_make_salt(salt + 3, 4);
|
||||
+ } else if (opt & OPT_DES) {
|
||||
+ crypt_make_salt(salt, 1);
|
||||
}
|
||||
free_me = pass = pw_encrypt(pass, salt, 0);
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
# Build template for 'base-system-busybox'.
|
||||
pkgname=base-system-busybox
|
||||
version=1.22.1
|
||||
revision=13
|
||||
revision=14
|
||||
wrksrc="busybox-${version}"
|
||||
homepage="http://www.busybox.net"
|
||||
hostmakedepends="perl"
|
||||
|
|
Loading…
Reference in a new issue