diff options
Diffstat (limited to 'src/img3.h')
-rw-r--r-- | src/img3.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/img3.h b/src/img3.h new file mode 100644 index 0000000..75fcd5c --- /dev/null +++ b/src/img3.h @@ -0,0 +1,67 @@ +/* + * img3.h + * Functions for handling with Apple's IMG3 format + * + * Copyright (c) 2010 Joshua Hill. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef IMG3_H +#define IMG3_H + +typedef enum { + kNorContainer = 0x696D6733, // img3 + kImg3Container = 0x496D6733, // Img3 + k8900Container = 0x30303938, // 8900 + kImg2Container = 0x494D4732 // IMG2 +} img3_container; + +typedef enum { + kDataElement = 0x44415441, // DATA + kTypeElement = 0x54595045, // TYPE + kKbagElement = 0x4B424147, // KBAG + kShshElement = 0x53485348, // SHSH + kCertElement = 0x43455254, // CERT + kChipElement = 0x43484950, // CHIP + kProdElement = 0x50524F44, // PROD + kSdomElement = 0x53444F4D, // SDOM + kBordElement = 0x424F5244, // BORD + kSepoElement = 0x5345504F, // SEPO + kEcidElement = 0x45434944 // ECID +} img3_element_type; + +typedef struct { + unsigned int signature; + unsigned int fullSize; + unsigned int dataSize; + unsigned int shshOffset; + unsigned int imageType; +} img3_header; + +typedef struct { + unsigned int signature; + unsigned int fullSize; + unsigned int dataSize; +} img3_element_header; + +typedef struct { + unsigned char* data; +} img3_file; + +img3_file* img3_parse_file(unsigned char* data, unsigned int size); +void img3_free(img3_file* file); + +#endif |