/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef MAR_CMDLINE_H__ #define MAR_CMDLINE_H__
/* We use NSPR here just to import the definition of uint32_t */
#ifdef __cplusplus extern"C" { #endif
struct ProductInformationBlock;
/** * Determines MAR file information. * * @param path The path of the MAR file to check. * @param hasSignatureBlock Optional out parameter specifying if the MAR * file has a signature block or not. * @param numSignatures Optional out parameter for storing the number * of signatures in the MAR file. * @param hasAdditionalBlocks Optional out parameter specifying if the MAR * file has additional blocks or not. * @param offsetAdditionalBlocks Optional out parameter for the offset to the * first additional block. Value is only valid if * hasAdditionalBlocks is not equal to 0. * @param numAdditionalBlocks Optional out parameter for the number of * additional blocks. Value is only valid if * has_additional_blocks is not equal to 0. * @return 0 on success and non-zero on failure.
*/ int get_mar_file_info(constchar* path, int* hasSignatureBlock,
uint32_t* numSignatures, int* hasAdditionalBlocks,
uint32_t* offsetAdditionalBlocks,
uint32_t* numAdditionalBlocks);
/** * Reads the product info block from the MAR file's additional block section. * The caller is responsible for freeing the fields in infoBlock * if the return is successful. * * @param infoBlock Out parameter for where to store the result to * @return 0 on success, -1 on failure
*/ int read_product_info_block(char* path, struct ProductInformationBlock* infoBlock);
/** * Refreshes the product information block with the new information. * The input MAR must not be signed or the function call will fail. * * @param path The path to the MAR file whose product info block * should be refreshed. * @param infoBlock Out parameter for where to store the result to * @return 0 on success, -1 on failure
*/ int refresh_product_info_block(constchar* path, struct ProductInformationBlock* infoBlock);
/** * Writes out a copy of the MAR at src but with the signature block stripped. * * @param src The path of the source MAR file * @param dest The path of the MAR file to write out that has no signature block * @return 0 on success * -1 on error
*/ int strip_signature_block(constchar* src, constchar* dest);
/** * Extracts a signature from a MAR file, base64 encodes it, and writes it out * * @param src The path of the source MAR file * @param sigIndex The index of the signature to extract * @param dest The path of file to write the signature to * @return 0 on success * -1 on error
*/ int extract_signature(constchar* src, uint32_t sigIndex, constchar* dest);
/** * Imports a base64 encoded signature into a MAR file * * @param src The path of the source MAR file * @param sigIndex The index of the signature to import * @param base64SigFile A file which contains the signature to import * @param dest The path of the destination MAR file with replaced * signature * @return 0 on success * -1 on error
*/ int import_signature(constchar* src, uint32_t sigIndex, constchar* base64SigFile, constchar* dest);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.