@@ -123,69 +123,79 @@ function purge_kernel()
123123
124124 # Search for kernels
125125 mapfile -t kernels < <( find " $kernel_location " -name " vmlinuz-*" | sort -n )
126- unsigned_kernels=()
127- valid_signed_kernels=()
128- invalid_signed_kernels=()
129- valid_validity_checks=()
130- invalid_validity_checks=()
131126
132- # For each detected kernel
133- for unvalidated_kernel in " ${kernels[@]} " ; do
134- # Validate kernel signatures
135- mapfile -t validity_check < <( sbverify --cert " $cert_location " " ${unvalidated_kernel} " 2>&1 )
127+ # Only verify keys if keys exist
128+ if [[ " $valid_keys " == " True" ]]; then
129+ unsigned_kernels=()
130+ valid_signed_kernels=()
131+ invalid_signed_kernels=()
132+ valid_validity_checks=()
133+ invalid_validity_checks=()
134+
135+ # For each detected kernel
136+ for unvalidated_kernel in " ${kernels[@]} " ; do
137+ # Validate kernel signatures
138+ mapfile -t validity_check < <( sbverify --cert " $cert_location " " ${unvalidated_kernel} " 2>&1 )
139+
140+ # Increment signed/unsigned kernels
141+ if [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification OK" ]]; then
142+ # Add to valid signed kernels
143+ valid_signed_kernels+=(" $unvalidated_kernel " )
144+ valid_validity_checks+=(" ${validity_check[0]} " )
145+ elif [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification failed" ]]; then
146+ # Add to invalid signed kernels
147+ invalid_signed_kernels+=(" $unvalidated_kernel " )
148+ invalid_validity_checks+=(" ${validity_check[0]} " )
149+ elif [[ " ${# validity_check[@]} " = 2 && " ${validity_check[0]} " = " No signature table present" ]]; then
150+ # Add to unsinged kernels
151+ unsigned_kernels+=(" $unvalidated_kernel " )
152+ else
153+ # SOME UNKNOWN ERROR?
154+ echo " ??error??"
155+ fi
156+ done
136157
137- # Increment signed/unsigned kernels
138- if [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification OK" ]]; then
139- # Add to valid signed kernels
140- valid_signed_kernels+=(" $unvalidated_kernel " )
141- valid_validity_checks+=(" ${validity_check[0]} " )
142- elif [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification failed" ]]; then
143- # Add to invalid signed kernels
144- invalid_signed_kernels+=(" $unvalidated_kernel " )
145- invalid_validity_checks+=(" ${validity_check[0]} " )
146- elif [[ " ${# validity_check[@]} " = 2 && " ${validity_check[0]} " = " No signature table present" ]]; then
147- # Add to unsinged kernels
148- unsigned_kernels+=(" $unvalidated_kernel " )
158+ # Print all kernels
159+ declare -i counter
160+ echo " Number of kernels available for signing: ${# unsigned_kernels[@]} "
161+ if [[ " ${# unsigned_kernels[@]} " == 0 ]]; then
162+ echo " -none-"
149163 else
150- # SOME UNKNOWN ERROR?
151- echo " ??error??"
164+ for kernel in " ${unsigned_kernels[@]} " ; do
165+ echo " $kernel "
166+ done
167+ fi
168+ echo " Number of signed kernels: ${# valid_signed_kernels[@]} "
169+ if [[ " ${# valid_signed_kernels[@]} " == 0 ]]; then
170+ echo " -none-"
171+ else
172+ counter=0
173+ for kernel in " ${valid_signed_kernels[@]} " ; do
174+ id=$(( "$counter " + 1 ))
175+ echo " $id - $kernel "
176+ echo " -> ${valid_validity_checks[$counter]} "
177+ (( counter++ ))
178+ done
179+ fi
180+ echo " Number of invalid signed kernels: ${# invalid_signed_kernels[@]} "
181+ if [[ " ${# invalid_signed_kernels[@]} " == 0 ]]; then
182+ echo " -none-"
183+ else
184+ counter=0
185+ for kernel in " ${invalid_signed_kernels[@]} " ; do
186+ echo " $kernel "
187+ echo " -> ${invalid_validity_checks[$counter]} "
188+ (( counter++ ))
189+ done
152190 fi
153- done
154-
155- # Print all kernels
156- declare -i counter
157- echo " Number of kernels available for signing: ${# unsigned_kernels[@]} "
158- if [[ " ${# unsigned_kernels[@]} " == 0 ]]; then
159- echo " -none-"
160- else
161- for kernel in " ${unsigned_kernels[@]} " ; do
162- echo " $kernel "
163- done
164- fi
165- echo " Number of signed kernels: ${# valid_signed_kernels[@]} "
166- if [[ " ${# valid_signed_kernels[@]} " == 0 ]]; then
167- echo " -none-"
168- else
169- counter=0
170- for kernel in " ${valid_signed_kernels[@]} " ; do
171- id=$(( "$counter " + 1 ))
172- echo " $id - $kernel "
173- echo " -> ${valid_validity_checks[$counter]} "
174- (( counter++ ))
175- done
176- fi
177- echo " Number of invalid signed kernels: ${# invalid_signed_kernels[@]} "
178- if [[ " ${# invalid_signed_kernels[@]} " == 0 ]]; then
179- echo " -none-"
180191 else
181- counter=0
182- for kernel in " ${invalid_signed_kernels [@]} " ; do
192+ echo " Kernels Present: ${ # kernels[@]} "
193+ for kernel in " ${kernels [@]} " ; do
183194 echo " $kernel "
184- echo " -> ${invalid_validity_checks[$counter]} "
185- (( counter++ ))
186195 done
187- fi
188196
197+ echo " Signature Database key and/or certificate not detected.."
198+ fi
189199 echo " =============================================="
190200 echo " $prev_out "
191201 echo " =============================================="
@@ -195,6 +205,8 @@ function purge_kernel()
195205 if [[ " $user_input " == " 0" ]]; then
196206 ERROR_MSG=" cancelled.."
197207 return 1
208+ elif [[ ! " $valid_keys " == " True" ]]; then
209+ prev_out=" missing/invalid keys, cannot check kernels.."
198210 elif [[ " $user_input " =~ ^[0-9]+$ ]] && test " $user_input " -le " ${# valid_signed_kernels[@]} " ; then
199211 # Purge signed kernel
200212 selection=$(( user_input - 1 ))
@@ -321,71 +333,78 @@ while [[ "$stop" == "False" ]]; do
321333
322334 # Search for kernels
323335 mapfile -t kernels < <( find " $kernel_location " -name " vmlinuz-*" | sort -n )
324- unsigned_kernels=()
325- valid_signed_kernels=()
326- invalid_signed_kernels=()
327- valid_validity_checks=()
328- invalid_validity_checks=()
329-
330- # For each detected kernel
331- for unvalidated_kernel in " ${kernels[@]} " ; do
332- # Validate kernel signatures
333- mapfile -t validity_check < <( sbverify --cert " $cert_location " " ${unvalidated_kernel} " 2>&1 )
334-
335- # Increment signed/unsigned kernels
336- if [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification OK" ]]; then
337- # Add to valid signed kernels
338- valid_signed_kernels+=(" $unvalidated_kernel " )
339- valid_validity_checks+=(" ${validity_check[0]} " )
340- elif [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification failed" ]]; then
341- # Add to invalid signed kernels
342- invalid_signed_kernels+=(" $unvalidated_kernel " )
343- invalid_validity_checks+=(" ${validity_check[0]} " )
344- elif [[ " ${# validity_check[@]} " = 2 && " ${validity_check[0]} " = " No signature table present" ]]; then
345- # Add to unsiged kernels
346- unsigned_kernels+=(" $unvalidated_kernel " )
336+
337+ # Only verify keys if keys exist
338+ if [[ " $valid_keys " == " True" ]]; then
339+ unsigned_kernels=()
340+ valid_signed_kernels=()
341+ invalid_signed_kernels=()
342+ valid_validity_checks=()
343+ invalid_validity_checks=()
344+
345+ # For each detected kernel
346+ for unvalidated_kernel in " ${kernels[@]} " ; do
347+ # Validate kernel signatures
348+ mapfile -t validity_check < <( sbverify --cert " $cert_location " " ${unvalidated_kernel} " 2>&1 )
349+
350+ # Increment signed/unsigned kernels
351+ if [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification OK" ]]; then
352+ # Add to valid signed kernels
353+ valid_signed_kernels+=(" $unvalidated_kernel " )
354+ valid_validity_checks+=(" ${validity_check[0]} " )
355+ elif [[ " ${# validity_check[@]} " = 1 && " ${validity_check[0]} " = " Signature verification failed" ]]; then
356+ # Add to invalid signed kernels
357+ invalid_signed_kernels+=(" $unvalidated_kernel " )
358+ invalid_validity_checks+=(" ${validity_check[0]} " )
359+ elif [[ " ${# validity_check[@]} " = 2 && " ${validity_check[0]} " = " No signature table present" ]]; then
360+ # Add to unsiged kernels
361+ unsigned_kernels+=(" $unvalidated_kernel " )
362+ else
363+ # SOME UNKNOWN ERROR?
364+ echo " ??error??"
365+ fi
366+ done
367+
368+ # Print all kernels
369+ declare -i counter
370+ echo " Number of kernels available for signing: ${# unsigned_kernels[@]} "
371+ if [[ " ${# unsigned_kernels[@]} " == 0 ]]; then
372+ echo " -none-"
347373 else
348- # SOME UNKNOWN ERROR?
349- echo " ??error??"
374+ for kernel in " ${unsigned_kernels[@]} " ; do
375+ echo " $kernel "
376+ done
377+ fi
378+ echo " Number of signed kernels: ${# valid_signed_kernels[@]} "
379+ if [[ " ${# valid_signed_kernels[@]} " == 0 ]]; then
380+ echo " -none-"
381+ else
382+ counter=0
383+ for kernel in " ${valid_signed_kernels[@]} " ; do
384+ echo " $kernel "
385+ echo " -> ${valid_validity_checks[$counter]} "
386+ (( counter++ ))
387+ done
388+ fi
389+ echo " Number of invalid signed kernels: ${# invalid_signed_kernels[@]} "
390+ if [[ " ${# invalid_signed_kernels[@]} " == 0 ]]; then
391+ echo " -none-"
392+ else
393+ counter=0
394+ for kernel in " ${invalid_signed_kernels[@]} " ; do
395+ echo " $kernel "
396+ echo " -> ${invalid_validity_checks[$counter]} "
397+ (( counter++ ))
398+ done
350399 fi
351- done
352400
353- # Print all kernels
354- declare -i counter
355- echo " Number of kernels available for signing: ${# unsigned_kernels[@]} "
356- if [[ " ${# unsigned_kernels[@]} " == 0 ]]; then
357- echo " -none-"
358- else
359- for kernel in " ${unsigned_kernels[@]} " ; do
360- echo " $kernel "
361- done
362- fi
363- echo " Number of signed kernels: ${# valid_signed_kernels[@]} "
364- if [[ " ${# valid_signed_kernels[@]} " == 0 ]]; then
365- echo " -none-"
366- else
367- counter=0
368- for kernel in " ${valid_signed_kernels[@]} " ; do
369- echo " $kernel "
370- echo " -> ${valid_validity_checks[$counter]} "
371- (( counter++ ))
372- done
373- fi
374- echo " Number of invalid signed kernels: ${# invalid_signed_kernels[@]} "
375- if [[ " ${# invalid_signed_kernels[@]} " == 0 ]]; then
376- echo " -none-"
401+ echo " Signature Database key & certificate detected.."
377402 else
378- counter=0
379- for kernel in " ${invalid_signed_kernels [@]} " ; do
403+ echo " Kernels Present: ${ # kernels[@]} "
404+ for kernel in " ${kernels [@]} " ; do
380405 echo " $kernel "
381- echo " -> ${invalid_validity_checks[$counter]} "
382- (( counter++ ))
383406 done
384- fi
385407
386- if [[ " $valid_keys " == " True" ]]; then
387- echo " Signature Database key & certificate detected.."
388- else
389408 echo " Signature Database key and/or certificate not detected.."
390409 fi
391410 echo " =============================================="
0 commit comments