Resources | developer.brewmp.com Resources | developer.brewmp.com

Developer

resources

Modules

OEMs can customize the OS Services process for loading modules by modifying the implementation of the following a1OEM functions. These functions are in a1OEM.c, which is in the platform\cs\src\OEM directory in the AMSS software.

  • a1OEM_GetStaticModList() - All processes call this function when setting up their in-portion module database to get the list of supported built-in OEM defined static modules. OEMs can customize the list of static modules.
  • a1OEM_GetStaticHashList() - Used while verifying a dynamic module's signature. If the module directory does not contain a signature file, this list is checked to see if the module contains static hashes.
  • a1OEM_GetModLoadingMode() - Called during OS Services initialization of a process to determine if dynamic modules are supported or not. Returns A1OEM_MODLOADINGMODE_DYNSUPPORTED if dynamic modules should be supported and A1OEM_MODLOADINGMODE_DYNNOTSUPPORTED if they are not.
  • a1OEM_GetModEnumInfo() - Called during OS Services initialization to determine if and how the file system should be enumerated to discover dynamic modules to be added to the module database.
  • a1OEM_GetHWIDList() - Called while verifying a dynamic module's signature to acquire the device hardware IDs to compare with the IDs contained in the signature file.
  • a1OEM_GetCarrierID() - Called while verifying a dynamic module's signature to acquire the carrier ID to compare with the ID contained in the signature file.
  • a1OEM_GetBREWSigPolicy() - Called while verifying a dynamic module's signature to acquire the Brew MP Signature Policy to compare with the policy contained in the signature file.
  • a1OEM_GetTCGList() - Called while verifying a dynamic module's signature to acquire the Trusted Code Group (TCG) list to compare with the list contained in the signature file.
  • a1OEM_GetMaxModLoadHeapSize() - Called during OS Services initialization to determine if dynamic modules should be supported. Originally, this function served to let OEMs determine how much heap memory would be consumed by loading a module. Memory now comes from memory regions instead of the heap, so this functionality is not used. Currently, if this function returns zero, then dynamic modules are not supported and will not be loaded; if it returns a non-zero value, then dynamic modules are supported.

For more information on module signatures, refer to the following documents in http://developer.brewmp.com/resources on the Brew MP website:

  • Code Authorization on Brew MP through Digital Signing
  • Generating a code signature
  • Generating a Test Enable Signature