mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-27 14:56:16 +00:00
111 lines
3.9 KiB
C
111 lines
3.9 KiB
C
|
/* 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(const char *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(const char *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(const char *src, const char * 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(const char *src, uint32_t sigIndex, const char * 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(const char *src,
|
||
|
uint32_t sigIndex,
|
||
|
const char * base64SigFile,
|
||
|
const char *dest);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* MAR_CMDLINE_H__ */
|