diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 7ada2660..c5ca7bd6 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -830,11 +830,11 @@ passportDataTypePhoneNumber = PassportDataType; passportDataTypeEmailAddress = PassportDataType; -//@description Contains information about a Telegram Passport data @type Telegram Passport data type @data TODO data should be typed @files List of attached files -passportData type:PassportDataType data:string files:vector = PassportData; +//@description Contains information about a Telegram Passport data @type Telegram Passport data type @data TODO data should be typed @files List of attached files with a document @selfie Selfie with the document +passportData type:PassportDataType data:string files:vector selfie:file = PassportData; -//@description Contains information about a Telegram Passport data to save @type Telegram Passport data type @data TODO data should be typed @files List of attached files -inputPassportData type:PassportDataType data:string files:vector = InputPassportData; +//@description Contains information about a Telegram Passport data to save @type Telegram Passport data type @data TODO data should be typed @files List of attached files with a document @selfie Selfie with the document +inputPassportData type:PassportDataType data:string files:vector selfie:file = InputPassportData; //@class PassportAuthorizationForm Contains information about requested Telegram Passport authorization form @data Available data @@ -845,8 +845,8 @@ passportAuthorizationForm id:int32 data:vector = PassportAuthoriza encryptedCredentials data:bytes hash:bytes secret:bytes = EncryptedCredentials; -//@description Contains information about an encrypted Telegram Passport data @type Telegram Passport data type @data Encrypted data about the user @files List of attached files @value Unencrypted data, phone number or email address -encryptedPassportData type:PassportDataType data:bytes files:vector value:string = EncryptedPassportData; +//@description Contains information about an encrypted Telegram Passport data @type Telegram Passport data type @data Encrypted data about the user @files List of attached files @value Unencrypted data, phone number or email address @selfie Selfie with the document +encryptedPassportData type:PassportDataType data:bytes files:vector value:string selfie:file = EncryptedPassportData; //@class MessageContent @description Contains the content of a message diff --git a/td/generate/scheme/td_api.tlo b/td/generate/scheme/td_api.tlo index 67145cb7..d415a298 100644 Binary files a/td/generate/scheme/td_api.tlo and b/td/generate/scheme/td_api.tlo differ diff --git a/td/telegram/SecureValue.cpp b/td/telegram/SecureValue.cpp index 4f23aa02..f1e63199 100644 --- a/td/telegram/SecureValue.cpp +++ b/td/telegram/SecureValue.cpp @@ -281,7 +281,7 @@ td_api::object_ptr get_encrypted_passport_data_ob bool is_plain = value.data.hash.empty(); return td_api::make_object( get_passport_data_type_object(value.type), is_plain ? string() : value.data.data, - get_encrypted_files_object(file_manager, value.files), is_plain ? value.data.data : string()); + get_encrypted_files_object(file_manager, value.files), is_plain ? value.data.data : string(), get_encrypted_file_object(file_manager, value.selfie)); } telegram_api::object_ptr get_input_secure_value_object( @@ -351,6 +351,7 @@ Result get_secure_value(td_api::object_ptrtype_)); res.data = std::move(input_passport_data->data_); // res.files = TODO + // res.selfie = TODO return res; } @@ -393,6 +394,8 @@ Result decrypt_encrypted_secure_value(FileManager *file_manager, co // TODO //TRY_RESULT(files, decrypt_secure_files(file_manager, secret, encrypted_secure_value.files)); //res.files = std::move(files); + //TRY_RESULT(selfie, decrypt_secure_file(file_manager, secret, encrypted_secure_value.selfie)); + //res.selfie = std::move(selfie); break; } } @@ -404,11 +407,13 @@ SecureFile encrypt_secure_file(FileManager *file_manager, const secure_storage:: //TODO: return SecureFile{}; } + vector encrypt_secure_files(FileManager *file_manager, const secure_storage::Secret &master_secret, vector files, string &to_hash) { return transform(files, [&](auto file_id) { return encrypt_secure_file(file_manager, master_secret, file_id, to_hash); }); } + SecureData encrypt_secure_data(const secure_storage::Secret &master_secret, Slice data, string &to_hash) { namespace ss = secure_storage; auto secret = ss::Secret::create_new(); @@ -422,6 +427,7 @@ SecureData encrypt_secure_data(const secure_storage::Secret &master_secret, Slic to_hash.append(secret.as_slice().str()); return res; } + EncryptedSecureValue encrypt_secure_value(FileManager *file_manager, const secure_storage::Secret &master_secret, const SecureValue &secure_value) { namespace ss = secure_storage; @@ -438,6 +444,7 @@ EncryptedSecureValue encrypt_secure_value(FileManager *file_manager, const secur res.data = encrypt_secure_data(master_secret, secure_value.data, to_hash); // TODO //res.files = encrypt_secure_files(file_manager, master_secret, secure_value.files, to_hash); + //res.selfie = encrypt_secure_file(file_manager, master_secret, secure_value.selfie, to_hash); res.hash = ss::calc_value_hash(to_hash).as_slice().str(); break; } diff --git a/td/telegram/SecureValue.h b/td/telegram/SecureValue.h index bec87cad..f2299d66 100644 --- a/td/telegram/SecureValue.h +++ b/td/telegram/SecureValue.h @@ -126,6 +126,7 @@ class SecureValue { SecureValueType type; string data; vector files; + FileId selfie; }; Result get_secure_value(td_api::object_ptr &&input_passport_data);