pub struct Cipher { /* private fields */ }Implementations§
Source§impl Cipher
impl Cipher
Sourcepub fn aes_128_cbc() -> Cipher
pub fn aes_128_cbc() -> Cipher
Examples found in repository?
examples/m3u8_down.rs (line 79)
64 fn download(&mut self) -> Result<(), HlsError> {
65 self.req.set_url(self.index_url.as_str())?;
66 let body = self.req.send_check(Method::GET)?.text()?;
67 // println!("{}", body);
68 for line in body.split("\n") {
69 if line.starts_with("#EXT-X-MEDIA-SEQUENCE:") {
70 self.sequence = line.trim().replace("#EXT-X-MEDIA-SEQUENCE:", "").parse()?;
71 continue;
72 }
73 if line.starts_with("#EXT-X-KEY") {
74 let pos = line.find("URI=\"");
75 if let Some(pos) = pos {
76 self.key_url = line[pos + 4..].trim().replace("\"", "");
77 }
78 if line.contains("=AES-128,") {
79 self.cipher = Cipher::aes_128_cbc();
80 }
81 continue;
82 }
83 if line.starts_with("http") {
84 self.ts_urls.push(line.trim().to_string());
85 }
86 }
87 let mut timeout = Timeout::new();
88 timeout.set_read(5000);
89 timeout.set_write(5000);
90 timeout.set_connect(5000);
91 timeout.set_handle(30000);
92 timeout.set_handle_times(10);
93 self.req.set_timeout(timeout);
94 if !self.key_url.is_empty() { self.get_key()?; }
95 self.down_ts()?;
96 Ok(())
97 }pub fn aes_192_cbc() -> Cipher
pub fn aes_256_cbc() -> Cipher
Sourcepub fn aes_128_ecb() -> Cipher
pub fn aes_128_ecb() -> Cipher
Examples found in repository?
examples/m3u8_down.rs (line 40)
15 fn new(index: impl ToString) -> M3u8DownEngine {
16 let mut req = ScReq::new().with_alpn(ALPN::Http20); //.with_proxy(Proxy::new_http_plain("127.0.0.1", 10809));
17 req.set_headers_json(json::object! {
18 "Host": "",
19 "sec-ch-ua-platform": "Android",
20 "user-agent": "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36",
21 "sec-ch-ua": r#""Android WebView";v="135", "Not-A.Brand";v="8", "Chromium";v="135""#,
22 "sec-ch-ua-mobile": "?1",
23 "accept": "*/*",
24 "origin": "",
25 "x-requested-with": "mark.via",
26 "sec-fetch-site": "cross-site",
27 "sec-fetch-mode": "cors",
28 "sec-fetch-dest": "empty",
29 "referer": "",
30 "accept-encoding": "gzip, deflate, br, zstd",
31 "accept-language": "en,zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7",
32 "priority": "u=1, i"
33 }).unwrap();
34 M3u8DownEngine {
35 req,
36 index_url: index.to_string(),
37 sequence: 0,
38 key_url: "".to_string(),
39 ts_urls: vec![],
40 cipher: Cipher::aes_128_ecb(),
41 }
42 }pub fn aes_192_ecb() -> Cipher
pub fn aes_256_ecb() -> Cipher
pub fn aes_128_ctr() -> Cipher
pub fn aes_192_ctr() -> Cipher
pub fn aes_256_ctr() -> Cipher
pub fn aes_128_gcm() -> Cipher
pub fn aes_192_gcm() -> Cipher
pub fn aes_256_gcm() -> Cipher
pub fn aes_128_ofb() -> Cipher
pub fn aes_192_ofb() -> Cipher
pub fn aes_256_ofb() -> Cipher
pub fn des_cbc() -> Cipher
pub fn des_ecb() -> Cipher
pub fn rc4() -> Cipher
pub fn with_secret_key<T>(self, key: T, iv: Option<T>) -> Cipher
Sourcepub fn set_secret_key<T>(&mut self, key: T, iv: Option<T>)
pub fn set_secret_key<T>(&mut self, key: T, iv: Option<T>)
pub fn encrypt(&self, context: impl AsRef<[u8]>) -> Result<Vec<u8>, RlsError>
Auto Trait Implementations§
impl Freeze for Cipher
impl RefUnwindSafe for Cipher
impl Send for Cipher
impl Sync for Cipher
impl Unpin for Cipher
impl UnsafeUnpin for Cipher
impl UnwindSafe for Cipher
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more