1
+ #! /bin/bash
2
+
3
+ set -xeuo pipefail
4
+
5
+ # This script downloads the Linux kernel source code and verifies it using GPG.
6
+
7
+ function verify() {
8
+ local kernel_sha256_sums=" $1 "
9
+ local kernel_version=" $2 "
10
+ local kernel_source=" $3 "
11
+ local kernel_pgp2_sign=" $4 "
12
+
13
+ curl -fsSL ${kernel_sha256_sums} -o sha256sums.asc
14
+ [ -f linux-${kernel_version} .tar.xz ] || curl -fsSLO ${kernel_source}
15
+ gpg2 -q --import keys.asc
16
+ gpg2 --verify sha256sums.asc
17
+ KERNEL_SHA256=$( grep linux-${kernel_version} .tar.xz sha256sums.asc | cut -d ' ' -f 1)
18
+ echo " ${KERNEL_SHA256} linux-${kernel_version} .tar.xz" | sha256sum -c -
19
+ if [ $? -ne 0 ]; then
20
+ return 1
21
+ fi
22
+ # Verify the signature of the kernel source
23
+ [ -f linux-${kernel_version} .tar ] || xz -T 0 -d linux-${kernel_version} .tar.xz
24
+ curl -fsSLO ${kernel_pgp2_sign}
25
+ gpg2 --verify linux-${kernel_version} .tar.sign linux-${kernel_version} .tar
26
+ if [ $? -ne 0 ]; then
27
+ return 1
28
+ fi
29
+ }
30
+
31
+ function extract() {
32
+ local kernel_version=" $1 "
33
+
34
+ if [ -d linux-${kernel_version} ]; then
35
+ echo " Directory linux-${kernel_version} already exists, skipping extraction."
36
+ else
37
+ tar --absolute-names -xf linux-${kernel_version} .tar
38
+ rm -rf ./linux
39
+ mv ./linux-${kernel_version} ./linux
40
+ fi
41
+ }
42
+
43
+ # Main script execution
44
+ function main() {
45
+ local kernel_version=" $1 "
46
+ local kernel_source=" $2 "
47
+ local kernel_sha256_sums=" $3 "
48
+ local kernel_pgp2_sign=" $4 "
49
+ local kernel_source_backup=" $5 "
50
+ local kernel_sha256_sums_backup=" $6 "
51
+ local kernel_pgp2_sign_backup=" $7 "
52
+
53
+ verify " ${kernel_sha256_sums} " " ${kernel_version} " " ${kernel_source} " " ${kernel_pgp2_sign} " || \
54
+ verify " ${kernel_sha256_sums_backup} " " ${kernel_version} " " ${kernel_source_backup} " " ${kernel_pgp2_sign_backup} "
55
+
56
+ extract " ${kernel_version} "
57
+ }
58
+
59
+ main " $@ "
0 commit comments