A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/spotify 22 lines 607 B view raw
1use std::env; 2 3use aes::{ 4 cipher::{KeyIvInit, StreamCipher}, 5 Aes256, 6}; 7use anyhow::Error; 8use hex::decode; 9 10type Aes256Ctr = ctr::Ctr64BE<Aes256>; 11 12pub fn decrypt_aes_256_ctr(encrypted_text: &str, key: &[u8]) -> Result<String, Error> { 13 let iv = decode(env::var("SPOTIFY_ENCRYPTION_IV")?)?; 14 let ciphertext = decode(encrypted_text)?; 15 16 let mut cipher = 17 Aes256Ctr::new_from_slices(key, &iv).map_err(|_| Error::msg("Invalid key or IV"))?; 18 let mut decrypted_data = ciphertext.clone(); 19 cipher.apply_keystream(&mut decrypted_data); 20 21 Ok(String::from_utf8(decrypted_data)?) 22}