
In order to comply with FIPS 140-2 requirements, implement a fips140 module that carries all AES, SHA-xxx and DRBG implementations with the associated chaining mode templates, and perform an integrity selfcheck at load time. The algorithms contained in the module will be registered with the crypto API, and will supersede any existing copies of the same algorithms that were already being provided by the core kernel. Bug: 153614920 Bug: 188620248 Test: boot tested on Pixel hw both with and without a live algo ('hmac(sha1-ce)') Change-Id: Ia893d9992fc12e2617d1ed2899c9794859c389d1 Signed-off-by: Ard Biesheuvel <ardb@google.com>
79 lines
2.0 KiB
ArmAsm
79 lines
2.0 KiB
ArmAsm
/*
|
|
* Common module linker script, always used when linking a module.
|
|
* Archs are free to supply their own linker scripts. ld will
|
|
* combine them automatically.
|
|
*/
|
|
#include <asm/page.h>
|
|
|
|
SECTIONS {
|
|
/DISCARD/ : {
|
|
*(.discard)
|
|
*(.discard.*)
|
|
/*
|
|
* LLD may emit .eh_frame with CONFIG_CFI_CLANG despite
|
|
* -fno-asynchronous-unwind-tables. Discard the section.
|
|
*/
|
|
*(.eh_frame)
|
|
}
|
|
|
|
__ksymtab 0 : { *(SORT(___ksymtab+*)) }
|
|
__ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) }
|
|
__ksymtab_unused 0 : { *(SORT(___ksymtab_unused+*)) }
|
|
__ksymtab_unused_gpl 0 : { *(SORT(___ksymtab_unused_gpl+*)) }
|
|
__ksymtab_gpl_future 0 : { *(SORT(___ksymtab_gpl_future+*)) }
|
|
__kcrctab 0 : { *(SORT(___kcrctab+*)) }
|
|
__kcrctab_gpl 0 : { *(SORT(___kcrctab_gpl+*)) }
|
|
__kcrctab_unused 0 : { *(SORT(___kcrctab_unused+*)) }
|
|
__kcrctab_unused_gpl 0 : { *(SORT(___kcrctab_unused_gpl+*)) }
|
|
__kcrctab_gpl_future 0 : { *(SORT(___kcrctab_gpl_future+*)) }
|
|
|
|
.init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) }
|
|
|
|
__jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
|
|
|
|
__patchable_function_entries : { *(__patchable_function_entries) }
|
|
|
|
#ifdef CONFIG_LTO_CLANG
|
|
/*
|
|
* With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and
|
|
* -ffunction-sections, which increases the size of the final module.
|
|
* Merge the split sections in the final binary.
|
|
*/
|
|
.bss : {
|
|
*(.bss .bss.[0-9a-zA-Z_]*)
|
|
*(.bss..L*)
|
|
}
|
|
|
|
.data : {
|
|
*(.data .data.[0-9a-zA-Z_]*)
|
|
*(.data..L*)
|
|
}
|
|
|
|
.rodata : {
|
|
*(.rodata.._start)
|
|
*(.rodata .rodata.[0-9a-zA-Z_]*)
|
|
*(.rodata..L*)
|
|
*(.rodata.._end)
|
|
}
|
|
|
|
#ifdef CONFIG_CFI_CLANG
|
|
/*
|
|
* With CFI_CLANG, ensure __cfi_check is at the beginning of the
|
|
* .text section, and that the section is aligned to page size.
|
|
*/
|
|
.text : ALIGN(PAGE_SIZE) {
|
|
*(.text.._start)
|
|
*(.text.__cfi_check)
|
|
*(.text .text.[0-9a-zA-Z_]*)
|
|
__cfi_jt_start = .;
|
|
*(.text..L.cfi.jumptable .text..L.cfi.jumptable.*)
|
|
__cfi_jt_end = .;
|
|
*(.text.._end)
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
/* bring in arch-specific sections */
|
|
#include <asm/module.lds.h>
|