138 lines
4.5 KiB
Diff
138 lines
4.5 KiB
Diff
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
|
||
|