diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-01 18:02:12 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-01 18:03:31 +0100 |
| commit | ed180465182fb95424f1c08793b529d5ec577018 (patch) | |
| tree | 614b7046ba82a2749370f54ce5d7743a10289ae7 /src/link/MachO/CodeSignature.zig | |
| parent | abb697e751cb0febf4e5e26f0190c01d7c5fd922 (diff) | |
| download | zig-ed180465182fb95424f1c08793b529d5ec577018.tar.gz zig-ed180465182fb95424f1c08793b529d5ec577018.zip | |
macho: dynamically calculate code signature padding
Diffstat (limited to 'src/link/MachO/CodeSignature.zig')
| -rw-r--r-- | src/link/MachO/CodeSignature.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/link/MachO/CodeSignature.zig b/src/link/MachO/CodeSignature.zig index c7cfdfcb44..442132dac1 100644 --- a/src/link/MachO/CodeSignature.zig +++ b/src/link/MachO/CodeSignature.zig @@ -179,3 +179,11 @@ test "CodeSignature header" { const expected = &[_]u8{ 0xfa, 0xde, 0x0c, 0xc0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0 }; testing.expect(mem.eql(u8, expected[0..], buffer[0..])); } + +pub fn calcCodeSignaturePadding(id: []const u8, file_size: u64) u32 { + const ident_size = id.len + 1; + const total_pages = mem.alignForwardGeneric(u64, file_size, page_size) / page_size; + const hashed_size = total_pages * hash_size; + const codesig_header = @sizeOf(macho.SuperBlob) + @sizeOf(macho.BlobIndex) + @sizeOf(macho.CodeDirectory); + return @intCast(u32, mem.alignForwardGeneric(u64, codesig_header + ident_size + hashed_size, @sizeOf(u64))); +} |
