Documentation
¶
Overview ¶
Package codesign provides basic functionalities for ad-hoc code signing of Mach-O files.
This is not a general tool for code-signing. It is made specifically for the Go toolchain. It uses the same ad-hoc signing algorithm as the Darwin linker.
Index ¶
Constants ¶
const ( CSMAGIC_REQUIREMENT = 0xfade0c00 CSMAGIC_REQUIREMENTS = 0xfade0c01 CSMAGIC_CODEDIRECTORY = 0xfade0c02 CSMAGIC_EMBEDDED_SIGNATURE = 0xfade0cc0 CSMAGIC_DETACHED_SIGNATURE = 0xfade0cc1 CSSLOT_CODEDIRECTORY = 0 )
const ( CS_HASHTYPE_SHA1 = 1 CS_HASHTYPE_SHA256 = 2 CS_HASHTYPE_SHA256_TRUNCATED = 3 CS_HASHTYPE_SHA384 = 4 )
const ( CS_EXECSEG_MAIN_BINARY = 0x1 CS_EXECSEG_ALLOW_UNSIGNED = 0x10 CS_EXECSEG_DEBUGGER = 0x20 CS_EXECSEG_JIT = 0x40 CS_EXECSEG_SKIP_LV = 0x80 CS_EXECSEG_CAN_LOAD_CDHASH = 0x100 CS_EXECSEG_CAN_EXEC_CDHASH = 0x200 )
const LC_CODE_SIGNATURE = 0x1d
Variables ¶
This section is empty.
Functions ¶
func Sign ¶
Sign generates an ad-hoc code signature and writes it to out. out must have length at least Size(codeSize, id). data is the file content without the signature, of size codeSize. textOff and textSize is the file offset and size of the text segment. isMain is true if this is a main executable. id is the identifier used for signing (a field in CodeDirectory blob, which has no significance in ad-hoc signing).
Types ¶
type CodeDirectory ¶
type CodeDirectory struct {
// contains filtered or unexported fields
}
type CodeSigCmd ¶
CodeSigCmd is Mach-O LC_CODE_SIGNATURE load command.
func FindCodeSigCmd ¶
func FindCodeSigCmd(f *macho.File) (CodeSigCmd, bool)