View Single Post
Old 30th June 2020, 13:22   #35  |  Link
mick0
Registered User
 
Join Date: Dec 2017
Posts: 35
Quote:
Originally Posted by jbkempf View Post
I think the reviewers don't understand it yet (and so do I)
Let's explain it then.

Currently upstream libaacs will discard all unit keys from config file when disc have different amount of unit keys than what we have in the config file.

E.g. say we have a disc that contains four encrypted unit keys and we have an entry for that disc which contains only one unit key - and we can't get a VUK for some reason (missing VUK, missing MK or VID, missing processing key, revoked host certificate etc.). This one unit key in config file could still work for at least one title (e.g. main feature).

Currently upstream libaacs will just check that unit key count in config file don't match the unit key count in Unit_Key_RO.inf and discard the only unit key we have for that disc - which obviously means playback will fail when VUK cannot be calculated. With this patch included it won't do that, it will instead try decrypting the disc with given unit key(s) before giving up.

There are lot of cases (see FV DB xml files for examples) when a disc has e.g. seven unit keys, but six of them are never being used - or in other words - having just one unit key would decrypt the whole disc.

In above scenario with upstream libaacs one would have to make an entry like this, which doesn't make any sense
Code:
0xDISCID = LABEL | U | 1-0xUNITKEY | 2-0x00000000... | 3-0x00000000... | 4-0x00000000...
With this patch included, having an entry like this would do
Code:
0xDISCID = LABEL | U | 1-0xUNITKEY
It will still discard incomplete entries when VUK or MK+VID are available.

I hope this helps.

Last edited by mick0; 30th June 2020 at 13:23. Reason: typos
mick0 is offline   Reply With Quote