mirror of
https://github.com/ThunderEX/py-kms.git
synced 2025-04-18 07:44:00 +03:00
remove unnecessary DecryptedRequest struct
This commit is contained in:
parent
885f67904f
commit
a1666a0ee5
@ -11,8 +11,7 @@ class kmsRequestV5(kmsBase):
|
||||
commonHdr = ()
|
||||
structure = (
|
||||
('salt', '16s'),
|
||||
('encrypted', '236s'), #kmsRequestStruct
|
||||
('padding', ':'),
|
||||
('encrypted', '240s'), #kmsRequestStruct
|
||||
)
|
||||
|
||||
commonHdr = ()
|
||||
@ -24,13 +23,6 @@ class kmsRequestV5(kmsBase):
|
||||
('message', ':', Message),
|
||||
)
|
||||
|
||||
class DecryptedRequest(Structure):
|
||||
commonHdr = ()
|
||||
structure = (
|
||||
('salt', '16s'),
|
||||
('request', ':', kmsRequestStruct),
|
||||
)
|
||||
|
||||
class ResponseV5(Structure):
|
||||
commonHdr = ()
|
||||
structure = (
|
||||
@ -63,20 +55,20 @@ class kmsRequestV5(kmsBase):
|
||||
|
||||
decrypted = self.decryptRequest(requestData)
|
||||
|
||||
responseBuffer = self.serverLogic(decrypted['request'])
|
||||
responseBuffer = self.serverLogic(decrypted)
|
||||
|
||||
iv, encrypted = self.encryptResponse(requestData, decrypted, responseBuffer)
|
||||
|
||||
return self.generateResponse(iv, encrypted, requestData)
|
||||
|
||||
def decryptRequest(self, request):
|
||||
encrypted = request['message'].__bytes__()
|
||||
encrypted = request['message']['encrypted']
|
||||
iv = request['message']['salt']
|
||||
|
||||
decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationCBC(self.key, iv, v6=self.v6))
|
||||
decrypted = decrypter.feed(encrypted) + decrypter.feed()
|
||||
|
||||
return self.DecryptedRequest(decrypted)
|
||||
return kmsRequestStruct(decrypted)
|
||||
|
||||
def encryptResponse(self, request, decrypted, response):
|
||||
randomSalt = bytearray(os.urandom(16))
|
||||
@ -84,9 +76,10 @@ class kmsRequestV5(kmsBase):
|
||||
|
||||
iv = bytearray(request['message']['salt'])
|
||||
|
||||
XorSalts = pyaes.AES(self.key, v6=self.v6).decrypt(iv)
|
||||
randomStuff = bytearray(16)
|
||||
for i in range(0,16):
|
||||
randomStuff[i] = (bytearray(decrypted['salt'])[i] ^ iv[i] ^ randomSalt[i]) & 0xff
|
||||
randomStuff[i] = (bytearray(XorSalts)[i] ^ randomSalt[i]) & 0xff
|
||||
|
||||
responsedata = self.DecryptedResponse()
|
||||
responsedata['response'] = response
|
||||
@ -122,18 +115,11 @@ class kmsRequestV5(kmsBase):
|
||||
return response
|
||||
|
||||
def generateRequest(self, requestBase):
|
||||
esalt = bytearray(os.urandom(16))
|
||||
|
||||
dsalt = pyaes.AESModeOfOperationCBC(self.key, iv=esalt, v6=self.v6).decrypt(esalt)
|
||||
|
||||
decrypted = self.DecryptedRequest()
|
||||
decrypted['salt'] = dsalt
|
||||
decrypted['request'] = requestBase
|
||||
|
||||
encrypter = pyaes.Encrypter(pyaes.AESModeOfOperationCBC(self.key, esalt, v6=self.v6))
|
||||
crypted = encrypter.feed(decrypted) + encrypter.feed()
|
||||
|
||||
message = self.RequestV5.Message(crypted)
|
||||
salt = os.urandom(16)
|
||||
message = self.RequestV5.Message()
|
||||
message['salt'] = salt
|
||||
encrypter = pyaes.Encrypter(pyaes.AESModeOfOperationCBC(self.key, salt, v6=self.v6))
|
||||
message['encrypted'] = encrypter.feed(requestBase) + encrypter.feed()
|
||||
|
||||
request = self.RequestV5()
|
||||
request['versionMinor'] = requestBase['versionMinor']
|
||||
|
@ -39,16 +39,10 @@ class kmsRequestV6(kmsRequestV5):
|
||||
result = hashlib.sha256(bytes(randomSalt)).digest()
|
||||
|
||||
SaltC = bytearray(request['message']['salt'])
|
||||
DSaltC = bytearray(decrypted['salt'])
|
||||
|
||||
XorSalts = bytearray(pyaes.AES(self.key, v6=self.v6).decrypt(SaltC))
|
||||
randomStuff = bytearray(16)
|
||||
for i in range(0,16):
|
||||
randomStuff[i] = (SaltC[i] ^ DSaltC[i] ^ randomSalt[i]) & 0xff
|
||||
|
||||
# XorSalts
|
||||
XorSalts = bytearray(16)
|
||||
for i in range (0, 16):
|
||||
XorSalts[i] = (SaltC[i] ^ DSaltC[i]) & 0xff
|
||||
randomStuff[i] = (XorSalts[i] ^ randomSalt[i]) & 0xff
|
||||
|
||||
message = self.DecryptedResponse.Message()
|
||||
message['response'] = response
|
||||
@ -72,7 +66,7 @@ class kmsRequestV6(kmsRequestV5):
|
||||
HMacMsg.extend(message.__bytes__())
|
||||
|
||||
# HMacKey
|
||||
requestTime = decrypted['request']['requestTime']
|
||||
requestTime = decrypted['requestTime']
|
||||
HMacKey = self.getMACKey(requestTime)
|
||||
HMac = hmac.new(HMacKey, bytes(HMacMsg), hashlib.sha256)
|
||||
digest = HMac.digest()
|
||||
|
Loading…
x
Reference in New Issue
Block a user