Add selfie support.

GitOrigin-RevId: 3a778f7000dc074a568e1e44de0a7ca3d208f77b
This commit is contained in:
levlam 2018-04-03 19:28:37 +03:00
parent fb79d6f95a
commit 022bd092ce
4 changed files with 15 additions and 7 deletions

View File

@ -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<file> = 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<file> 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<InputFile> = 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<InputFile> 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<PassportData> = 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<file> 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<file> value:string selfie:file = EncryptedPassportData;
//@class MessageContent @description Contains the content of a message

Binary file not shown.

View File

@ -281,7 +281,7 @@ td_api::object_ptr<td_api::encryptedPassportData> get_encrypted_passport_data_ob
bool is_plain = value.data.hash.empty();
return td_api::make_object<td_api::encryptedPassportData>(
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<telegram_api::inputSecureValue> get_input_secure_value_object(
@ -351,6 +351,7 @@ Result<SecureValue> get_secure_value(td_api::object_ptr<td_api::inputPassportDat
res.type = get_secure_value_type_td_api(std::move(input_passport_data->type_));
res.data = std::move(input_passport_data->data_);
// res.files = TODO
// res.selfie = TODO
return res;
}
@ -393,6 +394,8 @@ Result<SecureValue> 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<SecureFile> encrypt_secure_files(FileManager *file_manager, const secure_storage::Secret &master_secret,
vector<FileId> 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;
}

View File

@ -126,6 +126,7 @@ class SecureValue {
SecureValueType type;
string data;
vector<FileId> files;
FileId selfie;
};
Result<SecureValue> get_secure_value(td_api::object_ptr<td_api::inputPassportData> &&input_passport_data);