72 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
This file is part of Telegram Desktop,
 | 
						|
the official desktop application for the Telegram messaging service.
 | 
						|
 | 
						|
For license and copyright information please follow this link:
 | 
						|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
						|
*/
 | 
						|
#pragma once
 | 
						|
 | 
						|
namespace Passport {
 | 
						|
 | 
						|
bytes::vector GenerateSecretBytes();
 | 
						|
 | 
						|
bytes::vector EncryptSecureSecret(
 | 
						|
	bytes::const_span secret,
 | 
						|
	bytes::const_span passwordHashForSecret);
 | 
						|
bytes::vector DecryptSecureSecret(
 | 
						|
	bytes::const_span encryptedSecret,
 | 
						|
	bytes::const_span passwordHashForSecret);
 | 
						|
 | 
						|
bytes::vector SerializeData(const std::map<QString, QString> &data);
 | 
						|
std::map<QString, QString> DeserializeData(bytes::const_span bytes);
 | 
						|
 | 
						|
struct DataError {
 | 
						|
	// QByteArray - bad existing scan with such file_hash
 | 
						|
	// QString - bad data field value with such key
 | 
						|
	// std::nullopt - additional scan required
 | 
						|
	std::variant<v::null_t, QByteArray, QString> key;
 | 
						|
	QString type; // personal_details, passport, etc.
 | 
						|
	QString text;
 | 
						|
 | 
						|
};
 | 
						|
std::vector<DataError> DeserializeErrors(bytes::const_span json);
 | 
						|
 | 
						|
struct EncryptedData {
 | 
						|
	bytes::vector secret;
 | 
						|
	bytes::vector hash;
 | 
						|
	bytes::vector bytes;
 | 
						|
};
 | 
						|
 | 
						|
EncryptedData EncryptData(bytes::const_span bytes);
 | 
						|
 | 
						|
EncryptedData EncryptData(
 | 
						|
	bytes::const_span bytes,
 | 
						|
	bytes::const_span dataSecret);
 | 
						|
 | 
						|
bytes::vector DecryptData(
 | 
						|
	bytes::const_span encrypted,
 | 
						|
	bytes::const_span dataHash,
 | 
						|
	bytes::const_span dataSecret);
 | 
						|
 | 
						|
bytes::vector PrepareValueHash(
 | 
						|
	bytes::const_span dataHash,
 | 
						|
	bytes::const_span valueSecret);
 | 
						|
 | 
						|
bytes::vector EncryptValueSecret(
 | 
						|
	bytes::const_span valueSecret,
 | 
						|
	bytes::const_span secret,
 | 
						|
	bytes::const_span valueHash);
 | 
						|
 | 
						|
bytes::vector DecryptValueSecret(
 | 
						|
	bytes::const_span encrypted,
 | 
						|
	bytes::const_span secret,
 | 
						|
	bytes::const_span valueHash);
 | 
						|
 | 
						|
uint64 CountSecureSecretId(bytes::const_span secret);
 | 
						|
 | 
						|
bytes::vector EncryptCredentialsSecret(
 | 
						|
	bytes::const_span secret,
 | 
						|
	bytes::const_span publicKey);
 | 
						|
 | 
						|
} // namespace Passport
 |