libaacs | branch: master | npzacs <npz...@gmail.com> | Sun Jun 30 20:06:41 2013 +0300| [73c0b1c234fdbed72b6a07d9410806b0d6f50fb3] | committer: npzacs
Store VID in key cache. VID is required for BD-J and BD+, VUK is not enough. > http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=73c0b1c234fdbed72b6a07d9410806b0d6f50fb3 --- src/libaacs/aacs.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libaacs/aacs.c b/src/libaacs/aacs.c index 76fd1e4..848a9ca 100644 --- a/src/libaacs/aacs.c +++ b/src/libaacs/aacs.c @@ -306,6 +306,8 @@ static int _read_vid(AACS *aacs, cert_list *hcl) case MMC_SUCCESS: mkb_close(hrl_mkb); mmc_close(mmc); + /* cache vid */ + keycache_save("vid", aacs->disc_id, aacs->vid, 16); return AACS_SUCCESS; case MMC_ERROR_CERT_REVOKED: error_code = AACS_ERROR_CERT_REVOKED; @@ -818,6 +820,12 @@ const uint8_t *aacs_get_disc_id(AACS *aacs) const uint8_t *aacs_get_vid(AACS *aacs) { if (!memcmp(aacs->vid, empty_key, 16)) { + /* get cached vid */ + if (keycache_find("vid", aacs->disc_id, aacs->vid, 16)) { + DEBUG(DBG_AACS, "Using cached VID\n"); + return aacs->vid; + } + config_file *cf = keydbcfg_config_load(NULL); if (cf) { _read_vid(aacs, cf->host_cert_list); @@ -830,7 +838,7 @@ const uint8_t *aacs_get_vid(AACS *aacs) const uint8_t *aacs_get_pmsn(AACS *aacs) { - if (!memcmp(aacs->vid, empty_key, 16)) { + if (!memcmp(aacs->pmsn, empty_key, 16)) { config_file *cf = keydbcfg_config_load(NULL); if (cf) { _read_vid(aacs, cf->host_cert_list); _______________________________________________ libaacs-devel mailing list libaacs-devel@videolan.org http://mailman.videolan.org/listinfo/libaacs-devel