Automatic Certificate of Origin Generation for Software Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Manually generating a Certificate of Origin (COO) for software or firmware systems is a tedious and error-prone process due to the complexity of tracking multiple components from different origins and licenses, especially when these components vary across different embedded systems and versions.
Innovation Solution
A system and method for automatic generation of COO during compilation, which processes source modules to generate binary modules, combines them into an executable file, and generates a COO file based on control files, utilizing a compiling module, linker module, and control file processing module to retrieve and combine COO information from standard reference files or source/binary module control files.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If manual COO generation is performed, then flexibility in handling diverse components is maintained, but time consumption and error rate increase significantly
Solution Approach 1:
The system performs preliminary actions by automatically collecting component information, tracking origins and licenses during the build process, and preparing COO data in advance. The compiler and linker automatically gather component metadata and store it in a structured format, so that when COO generation is needed, the data is already organized and ready, eliminating the need for manual information gathering and reducing both time consumption and errors.
2Reliability
If manual COO generation is performed, then complex component tracking can be handled, but error rate increases due to tedious manual work
Solution Approach 1:
The system implements self-service by automatically tracking component origins, licenses, and dependencies throughout the compilation and linking process. The compiler and linker self-automate the collection of COO information, eliminating manual intervention entirely. This automated self-tracking ensures accuracy by consistently applying the same rules and procedures without human error, while still handling complex component relationships through systematic data collection and organization.
3Productivity
If automated COO generation is implemented, then time efficiency improves, but system complexity increases due to additional modules
Solution Approach 1:
The system achieves universality by designing the compiler and linker to perform multiple functions: traditional compilation and linking tasks plus automatic COO information collection and management. These existing building tools are enhanced with additional capabilities to handle component tracking, origin identification, and license information gathering. This multi-functionality approach avoids creating separate dedicated systems, thereby reducing overall system complexity while maintaining high COO generation efficiency.
4Measurement precision
If comprehensive component tracking is performed, then COO accuracy improves, but processing complexity increases
Solution Approach 1:
The system introduces an intermediary mechanism where the compiler and linker act as mediators between the source code components and the COO generation process. These intermediaries automatically collect component information, track origins and licenses, and organize data during the natural compilation and linking flow. This intermediary approach simplifies the tracking system by integrating it into existing tools rather than creating a separate complex tracking infrastructure, thereby maintaining high measurement precision while reducing overall system complexity.
Data Source
AI summary
A system includes at least one computing device. The computing device has one or more processors, a memory, and a storage storing computer executable code. The computer executable code, when executed at the processors, is configured to process a plurality of source modules to generate a plurality of binary modules corresponding to the source modules. Each source module has at least one source file and a control file including a certificate of origin (COO) of the source module, and each binary module generated from each source module has at least one corresponding binary file and a copy of the control file. Once the binary modules are generated, the computer executable code combines the binary files of each of the binary modules to generate an executable file, and generates a COO file for the executable file based on the control files from the source modules or the binary modules.


