Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 // Copyright (C) 2020 ARM Limited
0003 
0004 #include <stdio.h>
0005 #include <stdlib.h>
0006 #include <sys/auxv.h>
0007 
0008 #include "helper.h"
0009 
0010 int main(void)
0011 {
0012     struct signatures signed_vals;
0013     unsigned long hwcaps;
0014     size_t val;
0015 
0016     fread(&val, sizeof(size_t), 1, stdin);
0017 
0018     /* don't try to execute illegal (unimplemented) instructions) caller
0019      * should have checked this and keep worker simple
0020      */
0021     hwcaps = getauxval(AT_HWCAP);
0022 
0023     if (hwcaps & HWCAP_PACA) {
0024         signed_vals.keyia = keyia_sign(val);
0025         signed_vals.keyib = keyib_sign(val);
0026         signed_vals.keyda = keyda_sign(val);
0027         signed_vals.keydb = keydb_sign(val);
0028     }
0029     signed_vals.keyg = (hwcaps & HWCAP_PACG) ?  keyg_sign(val) : 0;
0030 
0031     fwrite(&signed_vals, sizeof(struct signatures), 1, stdout);
0032 
0033     return 0;
0034 }