|
|
@ -2,6 +2,10 @@
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
#include <cstddef>
|
|
|
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
|
|
|
|
#include "common/assert.h"
|
|
|
|
#include "common/assert.h"
|
|
|
|
#include "core/crypto/aes_util.h"
|
|
|
|
#include "core/crypto/aes_util.h"
|
|
|
|
#include "core/file_sys/nca_patch.h"
|
|
|
|
#include "core/file_sys/nca_patch.h"
|
|
|
@ -13,9 +17,9 @@ BKTR::BKTR(VirtualFile base_romfs_, VirtualFile bktr_romfs_, RelocationBlock rel
|
|
|
|
std::vector<SubsectionBucket> subsection_buckets_, bool is_encrypted_,
|
|
|
|
std::vector<SubsectionBucket> subsection_buckets_, bool is_encrypted_,
|
|
|
|
Core::Crypto::Key128 key_, u64 base_offset_, u64 ivfc_offset_,
|
|
|
|
Core::Crypto::Key128 key_, u64 base_offset_, u64 ivfc_offset_,
|
|
|
|
std::array<u8, 8> section_ctr_)
|
|
|
|
std::array<u8, 8> section_ctr_)
|
|
|
|
: base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)),
|
|
|
|
: relocation(relocation_), relocation_buckets(std::move(relocation_buckets_)),
|
|
|
|
relocation(relocation_), relocation_buckets(std::move(relocation_buckets_)),
|
|
|
|
|
|
|
|
subsection(subsection_), subsection_buckets(std::move(subsection_buckets_)),
|
|
|
|
subsection(subsection_), subsection_buckets(std::move(subsection_buckets_)),
|
|
|
|
|
|
|
|
base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)),
|
|
|
|
encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_),
|
|
|
|
encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_),
|
|
|
|
section_ctr(section_ctr_) {
|
|
|
|
section_ctr(section_ctr_) {
|
|
|
|
for (size_t i = 0; i < relocation.number_buckets - 1; ++i) {
|
|
|
|
for (size_t i = 0; i < relocation.number_buckets - 1; ++i) {
|
|
|
|