kiran-control-panel/0008-refactor-account-Remove-useless-password-encryption-.patch

138 lines
4.5 KiB
Diff
Raw Normal View History

From 3a30343a3958caafad6b27e1900c0e7b6b9ab26b Mon Sep 17 00:00:00 2001
From: liuxinhao <liuxinhao@kylinsec.com.cn>
Date: Mon, 8 Jan 2024 15:04:41 +0800
Subject: [PATCH 08/17] refactor(account): Remove useless password encryption
interfaces and remove the dependency of libcrypt
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 删除目前无用的密码加密接口去除libcrypt的依赖
---
plugins/account/CMakeLists.txt | 7 +--
plugins/account/utils/passwd-helper.cpp | 57 -------------------------
plugins/account/utils/passwd-helper.h | 1 -
3 files changed, 2 insertions(+), 63 deletions(-)
diff --git a/plugins/account/CMakeLists.txt b/plugins/account/CMakeLists.txt
index 586c6c8..e96fa92 100644
--- a/plugins/account/CMakeLists.txt
+++ b/plugins/account/CMakeLists.txt
@@ -6,7 +6,6 @@ endif ()
pkg_search_module(CRYPTOPP REQUIRED cryptopp)
pkg_search_module(PAM REQUIRED pam)
-pkg_search_module(LIBCRYPT REQUIRED libcrypt)
file(GLOB_RECURSE ACCOUNT_SRC
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
@@ -29,8 +28,7 @@ target_include_directories(${TARGET_NAME} PRIVATE
${KIRAN_CC_DAEMON_INCLUDE_DIRS}
${KLOG_INCLUDE_DIRS}
${KIRAN_STYLE_INCLUDE_DIRS}
- ${CRYPTOPP_INCLUDE_DIRS}
- ${LIBCRYPT_INCLUDE_DIRS})
+ ${CRYPTOPP_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME}
common-widgets
@@ -43,7 +41,6 @@ target_link_libraries(${TARGET_NAME}
${KIRAN_CC_DAEMON_LIBRARIES}
${KLOG_LIBRARIES}
${KIRAN_STYLE_LIBRARIES}
- ${CRYPTOPP_LIBRARIES}
- ${LIBCRYPT_LIBRARIES})
+ ${CRYPTOPP_LIBRARIES})
install(TARGETS ${TARGET_NAME} DESTINATION ${PLUGIN_LIBS_DIR}/)
diff --git a/plugins/account/utils/passwd-helper.cpp b/plugins/account/utils/passwd-helper.cpp
index f6b76f2..a5641c7 100644
--- a/plugins/account/utils/passwd-helper.cpp
+++ b/plugins/account/utils/passwd-helper.cpp
@@ -14,7 +14,6 @@
#include "passwd-helper.h"
-#include <crypt.h>
#include <cryptopp/base64.h>
#include <cryptopp/cryptlib.h>
#include <cryptopp/hex.h>
@@ -33,62 +32,6 @@
using namespace CryptoPP;
-bool PasswdHelper::encryptPassword(const QString &pwd, QString &encrypted)
-{
- QByteArray byteArray = pwd.toLatin1();
- QString saltChar = "ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz./0123456789";
-
- QString rand16SaltChar;
-
- std::default_random_engine randomEngine;
- std::uniform_int_distribution<int> uniformIntDistribution(0, saltChar.size() - 1);
- for (int i = 0; i < 16; i++)
- {
- char ch = saltChar.at(uniformIntDistribution(randomEngine)).toLatin1();
- rand16SaltChar.append(ch);
- }
-
- QString salt = QString("$6$%1$").arg(rand16SaltChar);
- QByteArray saltByteArray = salt.toLatin1();
-
- char *cryptedResult = nullptr;
- QByteArray cryptedResultBuffer(100, 0);
-
- //NOTE:兼容低版本libcrypt不带有crypt_rn接口的版本
-#if 0
- forever
- {
- cryptedResult = crypt_rn(byteArray.data(),
- saltByteArray.data(),
- cryptedResultBuffer.data(),
- cryptedResultBuffer.size());
- if (cryptedResult == nullptr)
- {
- if (errno == ERANGE)
- {
- cryptedResultBuffer.resize(cryptedResultBuffer.size() * 2);
- continue;
- }
- else
- {
- KLOG_WARNING() << "encrypt passwd failed," << strerror(errno);
- }
- }
- break;
- }
-#else
- crypt_data cryptData{};
- cryptedResult = crypt_r(byteArray.data(),
- saltByteArray.data(),
- &cryptData);
-#endif
-
- if (cryptedResult)
- encrypted = cryptedResult;
-
- return cryptedResult != nullptr;
-}
-
bool PasswdHelper::encryptPasswordByRsa(const QString &publicKey, const QString &pwd, QString &encrypted)
{
CryptoPP::RandomPool random_pool;
diff --git a/plugins/account/utils/passwd-helper.h b/plugins/account/utils/passwd-helper.h
index b09d246..fc98068 100644
--- a/plugins/account/utils/passwd-helper.h
+++ b/plugins/account/utils/passwd-helper.h
@@ -18,7 +18,6 @@
class QString;
namespace PasswdHelper
{
-bool encryptPassword(const QString &pwd, QString &encrypted);
bool encryptPasswordByRsa(const QString &publicKey, const QString &pwd, QString &encrypted);
bool checkUserPassword(const QString &user, const QString &pwd);
} // namespace PasswdHelper
--
2.33.0