@@ -151,3 +151,62 @@ impl TryFrom<&[u8]> for License {
151151 Self :: from_bytes ( value)
152152 }
153153}
154+
155+ #[ cfg( test) ]
156+ mod test {
157+ use super :: License ;
158+ use crate :: license:: CipherType :: Ecc256 ;
159+
160+ #[ test]
161+ fn parse_license_with_empty_playback_policy_container ( ) {
162+ let lic = License :: from_b64 ( concat ! (
163+ "WE1SAAAAAAO6ZrBZY/dbvTGZkxnTjOH/AAMAAQAAAVAAAwACAAAAMgABAA0AAAAK" ,
164+ "AAEAAAAzAAAACgABAAEAMgAAAAwAAAArAAEANAAAAAoH0AACAAQAAAAIAAMACQAA" ,
165+ "APIAAQAKAAAAngEBAQEBAQEBAQEBAQEBAQEAAQADAIACAgICAgICAgICAgICAgIC" ,
166+ "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC" ,
167+ "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC" ,
168+ "AgICAgICAgICAgICAgICAgAAACoAAABMAAEAQAMDAwMDAwMDAwMDAwMDAwMDAwMD" ,
169+ "AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAQAL" ,
170+ "AAAAHAABABAEBAQEBAQEBAQEBAQEBAQE"
171+ ) )
172+ . unwrap ( ) ;
173+
174+ assert_eq ! (
175+ lic. encrypted_keys( ) ,
176+ vec![ ( Ecc256 , & [ 1u8 ; 16 ] , [ 2u8 ; 128 ] . as_slice( ) ) ]
177+ ) ;
178+ assert_eq ! ( lic. public_key( ) . unwrap( ) , [ 3u8 ; 64 ] . as_slice( ) ) ;
179+ assert_eq ! (
180+ lic. cmac_verification_data( ) . unwrap( ) ,
181+ ( & lic. raw[ ..332 ] , [ 4u8 ; 16 ] . as_slice( ) )
182+ ) ;
183+ assert_eq ! ( lic. auxiliary_key( ) , None )
184+ }
185+
186+ #[ test]
187+ fn parse_license_with_non_empty_playback_policy_container ( ) {
188+ let lic = License :: from_b64 ( concat ! (
189+ "WE1SAAAAAAOOieG5U75vQ7O6VHqb06OGAAMAAQAAAYwAAwACAAAAXAABABIAAAAQ" ,
190+ "AAAAAGeRPH8AAQAwAAAADAACowAAAAATAAAADGeQy/8AAAAaAAAADAABUYAAAAAz" ,
191+ "AAAACgABAAEAMgAAAAwAAABNAAEANAAAAAoH0AACAAQAAAAaAAEABQAAABIB9AD6" ,
192+ "AJYAZABkAAMACQAAAPIAAQAKAAAAngEBAQEBAQEBAQEBAQEBAQEAAQADAIACAgIC" ,
193+ "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC" ,
194+ "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC" ,
195+ "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAACoAAABMAAEAQAMDAwMDAwMD" ,
196+ "AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD" ,
197+ "AwMDAwMDAwMAAQALAAAAHAABABAEBAQEBAQEBAQEBAQEBAQE"
198+ ) )
199+ . unwrap ( ) ;
200+
201+ assert_eq ! (
202+ lic. encrypted_keys( ) ,
203+ vec![ ( Ecc256 , & [ 1u8 ; 16 ] , [ 2u8 ; 128 ] . as_slice( ) ) ]
204+ ) ;
205+ assert_eq ! ( lic. public_key( ) . unwrap( ) , [ 3u8 ; 64 ] . as_slice( ) ) ;
206+ assert_eq ! (
207+ lic. cmac_verification_data( ) . unwrap( ) ,
208+ ( & lic. raw[ ..392 ] , [ 4u8 ; 16 ] . as_slice( ) )
209+ ) ;
210+ assert_eq ! ( lic. auxiliary_key( ) , None )
211+ }
212+ }
0 commit comments