libaacs | branch: refs/tags/0.3.0 | npzacs <[email protected]> | Sun Sep 25 
02:23:38 2011 +0300| [32cccee4f619172c8637c061bb6bb19ef8a64e5d] | committer: 
Ano Nymous

Added aacs_get_disc_id()

> http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=32cccee4f619172c8637c061bb6bb19ef8a64e5d
---

 src/libaacs/aacs.c |   13 +++++++++----
 src/libaacs/aacs.h |    2 ++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/libaacs/aacs.c b/src/libaacs/aacs.c
index a5e87ae..250ac49 100644
--- a/src/libaacs/aacs.c
+++ b/src/libaacs/aacs.c
@@ -44,7 +44,7 @@
 
 
 struct aacs {
-    uint8_t pk[16], mk[16], vuk[16], vid[16], *uks;
+    uint8_t pk[16], mk[16], vuk[16], vid[16], disc_id[20], *uks;
     uint32_t num_uks;
     struct config_file_t *cf;
     struct title_entry_list_t *ce;
@@ -441,13 +441,13 @@ static int _verify_ts(uint8_t *buf, size_t size)
 /* Function that collects keys from keydb config entry */
 static uint32_t _find_config_entry(AACS *aacs, const char *path)
 {
-    uint8_t hash[20], discid[20];
+    uint8_t discid[20];
     char str[48];
     uint32_t retval = 0;
     aacs->uks = NULL;
     aacs->num_uks = 0;
 
-    if (!_calc_title_hash(path, hash)) {
+    if (!_calc_title_hash(path, aacs->disc_id)) {
         return 0;
     }
 
@@ -457,7 +457,7 @@ static uint32_t _find_config_entry(AACS *aacs, const char 
*path)
             memset(discid, 0, sizeof(discid));
             hexstring_to_hex_array(discid, sizeof(discid),
                                    aacs->ce->entry.discid);
-            if (!memcmp(hash, discid, 20)) {
+            if (!memcmp(aacs->disc_id, discid, 20)) {
                 DEBUG(DBG_AACS, "Found config entry for discid %s\n",
                       aacs->ce->entry.discid);
                 break;
@@ -674,6 +674,11 @@ int aacs_decrypt_unit(AACS *aacs, uint8_t *buf)
     return 0;
 }
 
+const uint8_t *aacs_get_disc_id(AACS *aacs)
+{
+    return aacs->disc_id;
+}
+
 const uint8_t *aacs_get_vid(AACS *aacs)
 {
     return aacs->vid;
diff --git a/src/libaacs/aacs.h b/src/libaacs/aacs.h
index 1cd65f3..4740ab3 100644
--- a/src/libaacs/aacs.h
+++ b/src/libaacs/aacs.h
@@ -32,6 +32,8 @@ AACS_PUBLIC AACS *aacs_open(const char *path, const char 
*keyfile_path);
 AACS_PUBLIC void aacs_close(AACS *aacs);
 AACS_PUBLIC void aacs_select_title(AACS *aacs, uint32_t title); /* 0 - top 
menu, 0xffff - first play */
 AACS_PUBLIC int  aacs_decrypt_unit(AACS *aacs, uint8_t *buf);
+AACS_PUBLIC const uint8_t *aacs_get_disc_id(AACS *aacs);
 AACS_PUBLIC const uint8_t *aacs_get_vid(AACS *aacs);
 
+
 #endif /* AACS_H_ */

_______________________________________________
libaacs-devel mailing list
[email protected]
http://mailman.videolan.org/listinfo/libaacs-devel

Reply via email to