mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-09-20 17:46:08 +00:00
34 lines
982 B
Kotlin
34 lines
982 B
Kotlin
package dev.inmo.tgbotapi.utils.passport
|
|
|
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
|
import dev.inmo.tgbotapi.requests.DownloadFile
|
|
import dev.inmo.tgbotapi.requests.get.GetFile
|
|
import dev.inmo.tgbotapi.types.passport.EncryptedCredentials
|
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithData
|
|
import dev.inmo.tgbotapi.utils.nonstrictJsonFormat
|
|
import kotlinx.serialization.json.JsonObject
|
|
|
|
interface Decryptor {
|
|
fun ByteArray.decrypt(): ByteArray
|
|
}
|
|
|
|
suspend fun Decryptor.decrypt(
|
|
file: PassportFile,
|
|
bot: TelegramBot
|
|
): ByteArray {
|
|
return bot.execute(
|
|
DownloadFile(
|
|
bot.execute(
|
|
GetFile(file.fileId)
|
|
).filePath
|
|
)
|
|
).decrypt()
|
|
}
|
|
fun Decryptor.decryptData(
|
|
data: EncryptedCredentials
|
|
) = nonstrictJsonFormat.decodeFromString(
|
|
JsonObject.serializer(),
|
|
data.data.encodeToByteArray().decrypt().decodeToString()
|
|
)
|