mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
commit
2caa983785
5 changed files with 54 additions and 24 deletions
17
.vscode/settings.json
vendored
17
.vscode/settings.json
vendored
|
|
@ -1,7 +1,4 @@
|
|||
{
|
||||
"sweetpad.build.xcodeWorkspacePath": "Telegram/Telegram.xcodeproj/project.xcworkspace",
|
||||
"lldb.library": "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB",
|
||||
"lldb.launch.expressions": "native",
|
||||
"search.followSymlinks": false,
|
||||
"files.exclude": {
|
||||
".git/**": true
|
||||
|
|
@ -13,5 +10,17 @@
|
|||
".git/**": true
|
||||
},
|
||||
"files.associations": {
|
||||
}
|
||||
},
|
||||
"swift.sourcekit-lsp.backgroundIndexing": "on",
|
||||
"swift.sourcekit-lsp.trace.server": "messages",
|
||||
"terminal.integrated.profiles.osx": {
|
||||
"zsh": {
|
||||
"path": "/bin/zsh",
|
||||
"args": [
|
||||
"-l",
|
||||
"-i"
|
||||
]
|
||||
}
|
||||
},
|
||||
"swift.sourcekit-lsp.serverPath": "${workspaceFolder}/build-input/sourcekit-lsp",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -759,7 +759,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||
dict[520887001] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyAnonymous($0) }
|
||||
dict[543872158] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyDefault($0) }
|
||||
dict[-596837136] = { return Api.PaidReactionPrivacy.parse_paidReactionPrivacyPeer($0) }
|
||||
dict[1047842022] = { return Api.Passkey.parse_passkey($0) }
|
||||
dict[-1738457409] = { return Api.Passkey.parse_passkey($0) }
|
||||
dict[982592842] = { return Api.PasswordKdfAlgo.parse_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow($0) }
|
||||
dict[-732254058] = { return Api.PasswordKdfAlgo.parse_passwordKdfAlgoUnknown($0) }
|
||||
dict[-368917890] = { return Api.PaymentCharge.parse_paymentCharge($0) }
|
||||
|
|
|
|||
|
|
@ -398,40 +398,52 @@ public extension Api {
|
|||
}
|
||||
public extension Api {
|
||||
enum Passkey: TypeConstructorDescription {
|
||||
case passkey(id: String, name: String, date: Int32)
|
||||
case passkey(flags: Int32, id: String, name: String, date: Int32, softwareEmojiId: Int64?, lastUsageDate: Int32?)
|
||||
|
||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||
switch self {
|
||||
case .passkey(let id, let name, let date):
|
||||
case .passkey(let flags, let id, let name, let date, let softwareEmojiId, let lastUsageDate):
|
||||
if boxed {
|
||||
buffer.appendInt32(1047842022)
|
||||
buffer.appendInt32(-1738457409)
|
||||
}
|
||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||
serializeString(id, buffer: buffer, boxed: false)
|
||||
serializeString(name, buffer: buffer, boxed: false)
|
||||
serializeInt32(date, buffer: buffer, boxed: false)
|
||||
if Int(flags) & Int(1 << 0) != 0 {serializeInt64(softwareEmojiId!, buffer: buffer, boxed: false)}
|
||||
if Int(flags) & Int(1 << 1) != 0 {serializeInt32(lastUsageDate!, buffer: buffer, boxed: false)}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||
switch self {
|
||||
case .passkey(let id, let name, let date):
|
||||
return ("passkey", [("id", id as Any), ("name", name as Any), ("date", date as Any)])
|
||||
case .passkey(let flags, let id, let name, let date, let softwareEmojiId, let lastUsageDate):
|
||||
return ("passkey", [("flags", flags as Any), ("id", id as Any), ("name", name as Any), ("date", date as Any), ("softwareEmojiId", softwareEmojiId as Any), ("lastUsageDate", lastUsageDate as Any)])
|
||||
}
|
||||
}
|
||||
|
||||
public static func parse_passkey(_ reader: BufferReader) -> Passkey? {
|
||||
var _1: String?
|
||||
_1 = parseString(reader)
|
||||
var _1: Int32?
|
||||
_1 = reader.readInt32()
|
||||
var _2: String?
|
||||
_2 = parseString(reader)
|
||||
var _3: Int32?
|
||||
_3 = reader.readInt32()
|
||||
var _3: String?
|
||||
_3 = parseString(reader)
|
||||
var _4: Int32?
|
||||
_4 = reader.readInt32()
|
||||
var _5: Int64?
|
||||
if Int(_1!) & Int(1 << 0) != 0 {_5 = reader.readInt64() }
|
||||
var _6: Int32?
|
||||
if Int(_1!) & Int(1 << 1) != 0 {_6 = reader.readInt32() }
|
||||
let _c1 = _1 != nil
|
||||
let _c2 = _2 != nil
|
||||
let _c3 = _3 != nil
|
||||
if _c1 && _c2 && _c3 {
|
||||
return Api.Passkey.passkey(id: _1!, name: _2!, date: _3!)
|
||||
let _c4 = _4 != nil
|
||||
let _c5 = (Int(_1!) & Int(1 << 0) == 0) || _5 != nil
|
||||
let _c6 = (Int(_1!) & Int(1 << 1) == 0) || _6 != nil
|
||||
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 {
|
||||
return Api.Passkey.passkey(flags: _1!, id: _2!, name: _3!, date: _4!, softwareEmojiId: _5, lastUsageDate: _6)
|
||||
}
|
||||
else {
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -1039,12 +1039,11 @@ public extension Api.functions.account {
|
|||
}
|
||||
}
|
||||
public extension Api.functions.account {
|
||||
static func registerPasskey(credential: Api.InputPasskeyCredential, name: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Passkey>) {
|
||||
static func registerPasskey(credential: Api.InputPasskeyCredential) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Passkey>) {
|
||||
let buffer = Buffer()
|
||||
buffer.appendInt32(-810803168)
|
||||
buffer.appendInt32(1437867990)
|
||||
credential.serialize(buffer, true)
|
||||
serializeString(name, buffer: buffer, boxed: false)
|
||||
return (FunctionDescription(name: "account.registerPasskey", parameters: [("credential", String(describing: credential)), ("name", String(describing: name))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Passkey? in
|
||||
return (FunctionDescription(name: "account.registerPasskey", parameters: [("credential", String(describing: credential))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Passkey? in
|
||||
let reader = BufferReader(buffer)
|
||||
var result: Api.Passkey?
|
||||
if let signature = reader.readInt32() {
|
||||
|
|
|
|||
|
|
@ -457,11 +457,15 @@ public final class TelegramPasskey: Equatable {
|
|||
public let id: String
|
||||
public let name: String
|
||||
public let date: Int32
|
||||
public let emojiId: Int64?
|
||||
public let lastUsageDate: Int32?
|
||||
|
||||
public init(id: String, name: String, date: Int32) {
|
||||
public init(id: String, name: String, date: Int32, emojiId: Int64?, lastUsageDate: Int32?) {
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.date = date
|
||||
self.emojiId = emojiId
|
||||
self.lastUsageDate = lastUsageDate
|
||||
}
|
||||
|
||||
public static func ==(lhs: TelegramPasskey, rhs: TelegramPasskey) -> Bool {
|
||||
|
|
@ -474,6 +478,12 @@ public final class TelegramPasskey: Equatable {
|
|||
if lhs.date != rhs.date {
|
||||
return false
|
||||
}
|
||||
if lhs.emojiId != rhs.emojiId {
|
||||
return false
|
||||
}
|
||||
if lhs.lastUsageDate != rhs.lastUsageDate {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
@ -481,8 +491,8 @@ public final class TelegramPasskey: Equatable {
|
|||
extension TelegramPasskey {
|
||||
convenience init(apiPasskey: Api.Passkey) {
|
||||
switch apiPasskey {
|
||||
case let .passkey(id, name, date):
|
||||
self.init(id: id, name: name, date: date)
|
||||
case let .passkey(_, id, name, date, softwareEmojiId, lastUsageDate):
|
||||
self.init(id: id, name: name, date: date, emojiId: softwareEmojiId, lastUsageDate: lastUsageDate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -527,7 +537,7 @@ func _internal_requestPasskeyRegistration(network: Network) -> Signal<String?, N
|
|||
}
|
||||
|
||||
func _internal_requestCreatePasskey(network: Network, id: String, clientData: String, attestationObject: Data) -> Signal<TelegramPasskey?, NoError> {
|
||||
return network.request(Api.functions.account.registerPasskey(credential: .inputPasskeyCredentialPublicKey(id: id, rawId: id, response: .inputPasskeyResponseRegister(clientData: .dataJSON(data: clientData), attestationData: Buffer(data: attestationObject))), name: "iCloud"))
|
||||
return network.request(Api.functions.account.registerPasskey(credential: .inputPasskeyCredentialPublicKey(id: id, rawId: id, response: .inputPasskeyResponseRegister(clientData: .dataJSON(data: clientData), attestationData: Buffer(data: attestationObject)))))
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<Api.Passkey?, NoError> in
|
||||
return .single(nil)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue