/* 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_ */
Messung V0.5 in Prozent C=89 H=98 G=93
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland