0001
0002
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
0019
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 }