3.0.0.0-ok16

This commit is contained in:
luoxueyi 2024-04-13 10:06:19 +08:00
parent d495d2d646
commit af29fe04b6
2 changed files with 42 additions and 25 deletions

View File

@ -16,19 +16,20 @@ import tarfile
import requests import requests
import datetime import datetime
import threading import threading
import subprocess
from email import message
from datetime import datetime from datetime import datetime
from binascii import a2b_hex from binascii import a2b_hex
from Crypto.PublicKey import RSA
from urllib import parse, request from urllib import parse, request
from SystemUpdater.Core import enums from SystemUpdater.Core import enums
from Crypto.Cipher import PKCS1_OAEP
from json.decoder import JSONDecodeError from json.decoder import JSONDecodeError
from dbus.exceptions import DBusException from dbus.exceptions import DBusException
from SystemUpdater.Core.UpdaterConfigParser import UpgradeConfig from SystemUpdater.Core.UpdaterConfigParser import UpgradeConfig
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
LOCALTIDDIR = "/var/lib/kylin-system-updater/" LOCALTIDDIR = "/var/lib/kylin-system-updater/"
LOCALTIDFILE = "tidfile.conf" LOCALTIDFILE = "tidfile.conf"
MSGSNDDIR = "/var/lib/kylin-system-updater/sendinfos/" MSGSNDDIR = "/var/lib/kylin-system-updater/sendinfos/"
@ -335,22 +336,29 @@ class FormatConvert():
def EncodeRSAtoBase64(self, value): def EncodeRSAtoBase64(self, value):
# 将value进行RSA加密并base64转码 # 将value进行RSA加密并base64转码
enMsg = ""
try: try:
# 计算hex值 # 加载公钥
value_hex = a2b_hex(value) public_key = serialization.load_pem_public_key(
# 加载公钥,填充格式OAEP base64.b64decode(self.publickey.keyvalue.encode('utf-8')),
uniqueKey = self.publickey.keyvalue.encode('utf-8') backend=default_backend()
uniqueKeyorig = base64.b64decode(uniqueKey) # 公钥文件 )
rsa_pubkey = RSA.importKey(uniqueKeyorig) # RSA公钥
oaep_pub = PKCS1_OAEP.new(rsa_pubkey) # OAEP填充
# 加密数据 # 加密数据
encodemsg = oaep_pub.encrypt(value_hex) encodemsg = public_key.encrypt(
a2b_hex(value),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA1()),
algorithm=hashes.SHA1(),
label=None
)
)
# 加密数据Base64转码 # 加密数据Base64转码
enMsg = base64.b64encode(encodemsg) enMsg = base64.b64encode(encodemsg)
except ValueError:
logging.error("Value error: %s.", value) except Exception as e:
except TypeError: logging.error("EncodeRSAtoBase64 error: %s.", e)
logging.error("RSA key has no private half.")
return enMsg return enMsg
@ -445,33 +453,33 @@ class MessageSend():
if retval != 0: if retval != 0:
if retval == self.ERR_PARA_FROMAT: if retval == self.ERR_PARA_FROMAT:
result = "Parameter format error" result = "Parameter format error"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.error("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
elif retval == self.ERR_NO_LOACLTID: elif retval == self.ERR_NO_LOACLTID:
result = "The tid value in packageInfo is abnormal, but the message is saved successfully" result = "The tid value in packageInfo is abnormal, but the message is saved successfully"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.info("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
# 将返回的tid保存到本地 # 将返回的tid保存到本地
key = PackageInfo['packageName']+'_'+PackageInfo['messageType'] key = PackageInfo['packageName']+'_'+PackageInfo['messageType']
self.SaveTid(key, retid) self.SaveTid(key, retid)
elif retval == self.ERR_ABNORMAL_SHA: elif retval == self.ERR_ABNORMAL_SHA:
result = "Abnormal UploadedMessage Sha256" result = "Abnormal UploadedMessage Sha256"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.error("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
elif retval == self.ERR_UPLOADMSG_SHA: elif retval == self.ERR_UPLOADMSG_SHA:
result = "Description The UploadedMessageSha256 was decrypted incorrectly" result = "Description The UploadedMessageSha256 was decrypted incorrectly"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.error("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
elif retval == self.ERR_UPLOADMSG_CTS: elif retval == self.ERR_UPLOADMSG_CTS:
result = "The createTimeStamp field of UploadedMessage is abnormal" result = "The createTimeStamp field of UploadedMessage is abnormal"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.error("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
elif retval == self.ERR_UPLOADMSG_CTS: elif retval == self.ERR_UPLOADMSG_CTS:
result = "Invalid key included in \"uploadedMessage\" or \"packageInfo\": <@timestamp>,<_id>,<_index>,<_type>,<createTime>,<highlight>,<sn>,<sort>, check upload field" result = "Invalid key included in \"uploadedMessage\" or \"packageInfo\": <@timestamp>,<_id>,<_index>,<_type>,<createTime>,<highlight>,<sn>,<sort>, check upload field"
logging.debug("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.error("Sent Status: false - packageName: %s : result: %s.", PackageInfo['packageName'], result)
else: else:
logging.debug("Sent Status: false - packageName: %s : retval: %s.", PackageInfo['packageName'], retval) logging.error("Sent Status: false - packageName: %s : retval: %s.", PackageInfo['packageName'], retval)
# 上传失败写入本地json # 上传失败写入本地json
if retval != self.ERR_NO_LOACLTID or retval == self.ERR_NO_LOACLTID: if retval != self.ERR_NO_LOACLTID or retval == self.ERR_NO_LOACLTID:
self.WriteToJson(PackageInfo['messageType'], json_PackageInfo, json_UploadMessage, encodeMsg) self.WriteToJson(PackageInfo['messageType'], json_PackageInfo, json_UploadMessage, encodeMsg)
elif retval == 0: elif retval == 0:
result = "Send to server success" result = "Send to server success"
logging.debug("Sent Status: True - packageName: %s : result: %s.", PackageInfo['packageName'], result) logging.info("Sent Status: True - packageName: %s : result: %s.", PackageInfo['packageName'], result)
def GetLocalTid(self, key): def GetLocalTid(self, key):
# 试图获取本地tid # 试图获取本地tid

9
debian/changelog vendored
View File

@ -1,3 +1,12 @@
kylin-system-updater (3.0.0.0-ok16) v101; urgency=medium
* BUG: 无
* 需求号: 无
* 其他改动说明: immutable同步替换加密库为cryptography
* 其他改动影响域:无
-- luoxueyi <luoxueyi@kylinos.cn> Sat, 13 Apr 2024 10:05:58 +0800
kylin-system-updater (3.0.0.0-ok15) v101; urgency=medium kylin-system-updater (3.0.0.0-ok15) v101; urgency=medium
* BUG: 无 * BUG: 无