Separate out components of a TMD signature

Not sure why this hadn't been done already given that the ticket module has always used separate properties for the signature type and data.
This commit is contained in:
Campbell 2024-07-06 20:15:18 +10:00
parent c5abf16f67
commit f96da98d23
Signed by: NinjaCheetah
GPG Key ID: 670C282B3291D63D

View File

@ -31,8 +31,8 @@ class TMD:
""" """
def __init__(self): def __init__(self):
self.blob_header: bytes = b'' self.blob_header: bytes = b''
self.sig_type: int = 0 self.signature_type: int = 0
self.sig: bytes = b'' self.signature: bytes = b''
self.issuer: bytes = b'' # Follows the format "Root-CA%08x-CP%08x" self.issuer: bytes = b'' # Follows the format "Root-CA%08x-CP%08x"
self.tmd_version: int = 0 # This seems to always be 0 no matter what? self.tmd_version: int = 0 # This seems to always be 0 no matter what?
self.ca_crl_version: int = 0 # Certificate Authority Certificate Revocation List version self.ca_crl_version: int = 0 # Certificate Authority Certificate Revocation List version
@ -68,8 +68,12 @@ class TMD:
# ==================================================================================== # ====================================================================================
# Parses each of the keys contained in the TMD. # Parses each of the keys contained in the TMD.
# ==================================================================================== # ====================================================================================
# Signature type.
tmd_data.seek(0x0) tmd_data.seek(0x0)
self.blob_header = tmd_data.read(320) self.signature_type = tmd_data.read(4)
# Signature data.
tmd_data.seek(0x04)
self.signature = tmd_data.read(256)
# Signing certificate issuer. # Signing certificate issuer.
tmd_data.seek(0x140) tmd_data.seek(0x140)
self.issuer = tmd_data.read(64) self.issuer = tmd_data.read(64)
@ -157,8 +161,12 @@ class TMD:
The full TMD file as bytes. The full TMD file as bytes.
""" """
tmd_data = b'' tmd_data = b''
# Signed blob header. # Signature type.
tmd_data += self.blob_header tmd_data += self.signature_type
# Signature data.
tmd_data += self.signature
# Padding to 64 bytes.
tmd_data += b'\x00' * 60
# Signing certificate issuer. # Signing certificate issuer.
tmd_data += self.issuer tmd_data += self.issuer
# TMD version. # TMD version.