Blame include/mach-o/codesign.h

Packit bbfece
/* Mach-O support for BFD.
Packit bbfece
   Copyright (C) 2011-2018 Free Software Foundation, Inc.
Packit bbfece
Packit bbfece
   This file is part of BFD, the Binary File Descriptor library.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3 of the License, or
Packit bbfece
   (at your option) any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with this program; if not, write to the Free Software
Packit bbfece
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
Packit bbfece
   MA 02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef _MACH_O_CODESIGN_H
Packit bbfece
#define _MACH_O_CODESIGN_H
Packit bbfece
Packit bbfece
/* Codesign blob magics.  */
Packit bbfece
Packit bbfece
/* Superblob containing all the components.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_EMBEDDED_SIGNATURE 0xfade0cc0
Packit bbfece
Packit bbfece
/* Individual code requirement.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_REQUIREMENT 0xfade0c00
Packit bbfece
Packit bbfece
/* Collection of code requirements, indexed by type.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_REQUIREMENTS 0xfade0c01
Packit bbfece
Packit bbfece
/* Directory.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_CODEDIRECTORY 0xfade0c02
Packit bbfece
Packit bbfece
/* Entitlements blob.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_EMBEDDED_ENTITLEMENTS 0xfade7171
Packit bbfece
Packit bbfece
/* Blob container.  */
Packit bbfece
#define BFD_MACH_O_CS_MAGIC_BLOB_WRAPPER 0xfade0b01
Packit bbfece
Packit bbfece
struct mach_o_codesign_codedirectory_external_v1
Packit bbfece
{
Packit bbfece
  /* All the fields are in network byte order (big endian).  */
Packit bbfece
  unsigned char version[4];
Packit bbfece
  unsigned char flags[4];
Packit bbfece
  unsigned char hash_offset[4];
Packit bbfece
  unsigned char ident_offset[4];
Packit bbfece
  unsigned char nbr_special_slots[4];
Packit bbfece
  unsigned char nbr_code_slots[4];
Packit bbfece
  unsigned char code_limit[4];
Packit bbfece
  unsigned char hash_size[1];
Packit bbfece
  unsigned char hash_type[1];
Packit bbfece
  unsigned char spare1[1];
Packit bbfece
  unsigned char page_size[1];
Packit bbfece
  unsigned char spare2[4];
Packit bbfece
};
Packit bbfece
Packit bbfece
struct mach_o_codesign_codedirectory_v1
Packit bbfece
{
Packit bbfece
  unsigned int version;
Packit bbfece
  unsigned int flags;
Packit bbfece
  unsigned int hash_offset;
Packit bbfece
  unsigned int ident_offset;
Packit bbfece
  unsigned int nbr_special_slots;
Packit bbfece
  unsigned int nbr_code_slots;
Packit bbfece
  unsigned int code_limit;
Packit bbfece
  unsigned char hash_size;
Packit bbfece
  unsigned char hash_type;
Packit bbfece
  unsigned char spare1;
Packit bbfece
  unsigned char page_size;
Packit bbfece
  unsigned int spare2;
Packit bbfece
};
Packit bbfece
Packit bbfece
/* Value for hash_type.  */
Packit bbfece
#define BFD_MACH_O_CS_NO_HASH 0
Packit bbfece
#define BFD_MACH_O_CS_HASH_SHA1 1
Packit bbfece
#define BFD_MACH_O_CS_HASH_SHA256 2
Packit bbfece
#define BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_160x256 32 /* Skein, 160 bits */
Packit bbfece
#define BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_256x512 33 /* Skein, 256 bits */
Packit bbfece
Packit bbfece
#endif /* _MACH_O_CODESIGN_H */