make the signal funcs under MessageClient into static methods so they the first arg isn't self
This commit is contained in:
@@ -90,6 +90,7 @@ class MessengerClient:
|
|||||||
self.dh = GENERATE_DH()
|
self.dh = GENERATE_DH()
|
||||||
self.certificate = None
|
self.certificate = None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetInitAlice(state, SK, bob_dh_public_key):
|
def RatchetInitAlice(state, SK, bob_dh_public_key):
|
||||||
state.DHs = GENERATE_DH()
|
state.DHs = GENERATE_DH()
|
||||||
state.DHr = bob_dh_public_key
|
state.DHr = bob_dh_public_key
|
||||||
@@ -100,6 +101,7 @@ class MessengerClient:
|
|||||||
state.PN = 0
|
state.PN = 0
|
||||||
state.MKSKIPPED = {}
|
state.MKSKIPPED = {}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetInitBob(state, SK, bob_dh_key_pair):
|
def RatchetInitBob(state, SK, bob_dh_key_pair):
|
||||||
state.DHs = bob_dh_key_pair
|
state.DHs = bob_dh_key_pair
|
||||||
state.DHr = None
|
state.DHr = None
|
||||||
@@ -111,17 +113,20 @@ class MessengerClient:
|
|||||||
state.PN = 0
|
state.PN = 0
|
||||||
state.MKSKIPPED = {}
|
state.MKSKIPPED = {}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetSendKey(state):
|
def RatchetSendKey(state):
|
||||||
state.CKs, mk = KDF_CK(state.CKs)
|
state.CKs, mk = KDF_CK(state.CKs)
|
||||||
Ns = state.Ns
|
Ns = state.Ns
|
||||||
state.Ns += 1
|
state.Ns += 1
|
||||||
return Ns, mk
|
return Ns, mk
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetEncrypt(state, plaintext, AD):
|
def RatchetEncrypt(state, plaintext, AD):
|
||||||
Ns, mk = RatchetSendKey(state)
|
Ns, mk = RatchetSendKey(state)
|
||||||
header = HEADER(state.DHs, state.PN, Ns)
|
header = HEADER(state.DHs, state.PN, Ns)
|
||||||
return header, ENCRYPT(mk, plaintext, CONCAT(AD, header))
|
return header, ENCRYPT(mk, plaintext, CONCAT(AD, header))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetReceiveKey(state, header):
|
def RatchetReceiveKey(state, header):
|
||||||
mk = TrySkippedMessageKeys(state, header)
|
mk = TrySkippedMessageKeys(state, header)
|
||||||
if mk != None:
|
if mk != None:
|
||||||
@@ -134,10 +139,12 @@ class MessengerClient:
|
|||||||
state.Nr += 1
|
state.Nr += 1
|
||||||
return mk
|
return mk
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def RatchetDecrypt(state, header, ciphertext, AD):
|
def RatchetDecrypt(state, header, ciphertext, AD):
|
||||||
mk = RatchetReceiveKey(state, header)
|
mk = RatchetReceiveKey(state, header)
|
||||||
return DECRYPT(mk, ciphertext, CONCAT(AD, header))
|
return DECRYPT(mk, ciphertext, CONCAT(AD, header))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def TrySkippedMessageKeys(state, header):
|
def TrySkippedMessageKeys(state, header):
|
||||||
if (header.dh, header.n) in state.MKSKIPPED:
|
if (header.dh, header.n) in state.MKSKIPPED:
|
||||||
mk = state.MKSKIPPED[header.dh, header.n]
|
mk = state.MKSKIPPED[header.dh, header.n]
|
||||||
@@ -146,6 +153,7 @@ class MessengerClient:
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def SkipMessageKeys(state, until):
|
def SkipMessageKeys(state, until):
|
||||||
if state.Nr + MAX_SKIP < until:
|
if state.Nr + MAX_SKIP < until:
|
||||||
raise Error()
|
raise Error()
|
||||||
@@ -155,6 +163,7 @@ class MessengerClient:
|
|||||||
state.MKSKIPPED[state.DHr, state.Nr] = mk
|
state.MKSKIPPED[state.DHr, state.Nr] = mk
|
||||||
state.Nr += 1
|
state.Nr += 1
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def DHRatchet(state, header):
|
def DHRatchet(state, header):
|
||||||
state.PN = state.Ns
|
state.PN = state.Ns
|
||||||
state.Ns = 0
|
state.Ns = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user