mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Add documentation-conforming checks
This commit is contained in:
parent
681d0891ed
commit
0e55dd7db7
@ -627,9 +627,24 @@ bool MTCheckIsSafeGAOrB(id<EncryptionProvider> provider, NSData *gAOrB, NSData *
|
|||||||
[context subInto:bnPMinusOne a:bnP b:bnOne];
|
[context subInto:bnPMinusOne a:bnP b:bnOne];
|
||||||
|
|
||||||
if ([context compare:bnNumber with:bnPMinusOne] == -1) {
|
if ([context compare:bnNumber with:bnPMinusOne] == -1) {
|
||||||
|
id<MTBignum> n2 = [context create];
|
||||||
|
[context assignWordTo:n2 value:2];
|
||||||
|
|
||||||
|
id<MTBignum> n2048_minus_64 = [context create];
|
||||||
|
[context assignWordTo:n2048_minus_64 value:2048 - 64];
|
||||||
|
|
||||||
|
id<MTBignum> n2_to_2048_minus_64 = [context create];
|
||||||
|
[context expInto:n2_to_2048_minus_64 a:n2 b:n2048_minus_64];
|
||||||
|
|
||||||
|
id<MTBignum> dh_prime_minus_n2_to_2048_minus_64 = [context create];
|
||||||
|
[context subInto:dh_prime_minus_n2_to_2048_minus_64 a:bnP b:n2_to_2048_minus_64];
|
||||||
|
|
||||||
|
if ([context compare:bnNumber with:n2_to_2048_minus_64] == 1 &&
|
||||||
|
[context compare:bnNumber with:dh_prime_minus_n2_to_2048_minus_64] == -1) {
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -209,6 +209,10 @@ private func initialHandshakeAccept(postbox: Postbox, network: Network, peerId:
|
|||||||
|
|
||||||
let gb = MTExp(network.encryptionProvider, g, bData, p)!
|
let gb = MTExp(network.encryptionProvider, g, bData, p)!
|
||||||
|
|
||||||
|
if !MTCheckIsSafeGAOrB(network.encryptionProvider, gb, p) {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
|
||||||
var key = MTExp(network.encryptionProvider, gA.makeData(), bData, p)!
|
var key = MTExp(network.encryptionProvider, gA.makeData(), bData, p)!
|
||||||
|
|
||||||
if key.count > 256 {
|
if key.count > 256 {
|
||||||
@ -284,6 +288,10 @@ private func pfsRequestKey(postbox: Postbox, network: Network, peerId: PeerId, l
|
|||||||
let aData = a.makeData()
|
let aData = a.makeData()
|
||||||
let ga = MTExp(network.encryptionProvider, g, aData, p)!
|
let ga = MTExp(network.encryptionProvider, g, aData, p)!
|
||||||
|
|
||||||
|
if !MTCheckIsSafeGAOrB(network.encryptionProvider, ga, p) {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
|
||||||
return postbox.transaction { transaction -> Signal<Void, NoError> in
|
return postbox.transaction { transaction -> Signal<Void, NoError> in
|
||||||
if let state = transaction.getPeerChatState(peerId) as? SecretChatState {
|
if let state = transaction.getPeerChatState(peerId) as? SecretChatState {
|
||||||
switch state.embeddedState {
|
switch state.embeddedState {
|
||||||
@ -308,10 +316,18 @@ private func pfsAcceptKey(postbox: Postbox, network: Network, peerId: PeerId, la
|
|||||||
let g = Data(bytes: &gValue, count: 4)
|
let g = Data(bytes: &gValue, count: 4)
|
||||||
let p = config.p.makeData()
|
let p = config.p.makeData()
|
||||||
|
|
||||||
|
if !MTCheckIsSafeGAOrB(network.encryptionProvider, gA.makeData(), p) {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
|
||||||
let bData = b.makeData()
|
let bData = b.makeData()
|
||||||
|
|
||||||
let gb = MTExp(network.encryptionProvider, g, bData, p)!
|
let gb = MTExp(network.encryptionProvider, g, bData, p)!
|
||||||
|
|
||||||
|
if !MTCheckIsSafeGAOrB(network.encryptionProvider, gb, p) {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
|
||||||
var key = MTExp(network.encryptionProvider, gA.makeData(), bData, p)!
|
var key = MTExp(network.encryptionProvider, gA.makeData(), bData, p)!
|
||||||
|
|
||||||
if key.count > 256 {
|
if key.count > 256 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user