feat: implement Qobuz CMAF streaming and AES decryption
Introduces a new CMAF streaming module for Qobuz that handles progressive segment fetching and full-track decryption. The implementation adds HKDF session key derivation, AES-128-CBC key unwrapping, and AES-128-CTR frame decryption, alongside an ISO BMFF parser for extracting FLAC headers and segment metadata. It also integrates automatic session renewal with double-checked locking, a generic async retry mechanism for transient HTTP errors, and centralized error handling. Finally, it exposes `CmafStreamInfo` and async streaming methods in the public API, updating cryptographic dependencies accordingly.
This commit is contained in:
@@ -29,9 +29,17 @@ sha1 = "0.10"
|
||||
hex = "0.4"
|
||||
md-5 = "0.10"
|
||||
|
||||
# Crypto CMAF (AES-CTR déchiffrement frames, AES-CBC dérobage clé, HKDF dérivation)
|
||||
aes = "0.8"
|
||||
cbc = "0.1"
|
||||
ctr = "0.9"
|
||||
hkdf = "0.12"
|
||||
sha2 = "0.10"
|
||||
|
||||
# Cache en mémoire avec TTL
|
||||
moka = { version = "0.12", features = ["future"] }
|
||||
|
||||
|
||||
# Logging
|
||||
tracing = { workspace = true }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user