summarylogtreecommitdiffstats
path: root/002-BN_bn2bin-fix.patch
blob: 8e54df75720feb79fb211776e56f016445ef5c91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--- a/src/aacskeys.cpp	2025-07-10 17:02:59.676452482 -0500
+++ b/src/aacskeys.cpp	2025-07-10 17:03:06.282090837 -0500
@@ -963,7 +963,7 @@
                   if (BN_hex2bn(&key_bn, line) != 32) {
                      (*rdprintf)("Invalid Processing Key / Device Key, ignoring\n");
                   } else {
-                     BN_bn2bin(key_bn, key_bin);
+                     BN_bn2binpad(key_bn, key_bin, 16);

                      memcpy(possible_keys + (keys_tried % 32) * 16, key_bin, 16); // store last 32 keys
                      if (keys_tried >= 32) keys_tried = 0;
@@ -1077,7 +1077,7 @@
             (*rdprintf)("Invalid Media Key in file MediaKey.txt\n");
             ret = -3;
          } else {
-            BN_bn2bin(raw, media_key);
+            BN_bn2binpad(raw, media_key, 16);
          }
       }
    }
@@ -1126,7 +1126,7 @@
                //memset(key, 0, 20);
                ret = -3;
             } else {
-               BN_bn2bin(raw, key);
+               BN_bn2binpad(raw, key, 20);

                // Read the Host Certificate
                if (fgets(linebuffer, linebuffer_size, FileHandle) != linebuffer) {
@@ -1143,7 +1143,7 @@
                      //memset(cert, 0, 92);
                      ret = -5;
                   } else {
-                     BN_bn2bin(raw, cert);
+                     BN_bn2binpad(raw, cert, 92);
                   }
                }
             }
@@ -1424,7 +1424,7 @@
          BIGNUM *volume_id_bn = NULL;
          int rv = BN_hex2bn(&volume_id_bn, argv[currentArg]);
          if (rv == 32) {
-            BN_bn2bin(volume_id_bn, volume_id);
+            BN_bn2binpad(volume_id_bn, volume_id, 16);
             BN_free(volume_id_bn);
          } else {
             BN_free(volume_id_bn);