diff options
| author | Lans Zhang <jia.zhang@windriver.com> | 2017-08-17 11:22:49 +0800 |
|---|---|---|
| committer | Lans Zhang <jia.zhang@windriver.com> | 2017-08-17 11:22:49 +0800 |
| commit | 464433a169336a4362021e67a6f935a152450239 (patch) | |
| tree | 2490cc6eecc162a9cf3cd64cb3091b97e3b82c41 /meta-signing-key/classes | |
| parent | d5a4de8f096e2a03d89b5a756f5ab65f316a79dc (diff) | |
| download | meta-secure-core-464433a169336a4362021e67a6f935a152450239.tar.gz | |
sign_rpm_ext: support RPM signing
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
Diffstat (limited to 'meta-signing-key/classes')
| -rw-r--r-- | meta-signing-key/classes/user-key-store.bbclass | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/meta-signing-key/classes/user-key-store.bbclass b/meta-signing-key/classes/user-key-store.bbclass index 57610ac..c3ed1cf 100644 --- a/meta-signing-key/classes/user-key-store.bbclass +++ b/meta-signing-key/classes/user-key-store.bbclass | |||
| @@ -11,6 +11,7 @@ UEFI_SB = '${@bb.utils.contains("DISTRO_FEATURES", "efi-secure-boot", "1", "0", | |||
| 11 | MOK_SB = '${@bb.utils.contains("DISTRO_FEATURES", "efi-secure-boot", "1", "0", d)}' | 11 | MOK_SB = '${@bb.utils.contains("DISTRO_FEATURES", "efi-secure-boot", "1", "0", d)}' |
| 12 | IMA = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' | 12 | IMA = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' |
| 13 | SYSTEM_TRUSTED = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' | 13 | SYSTEM_TRUSTED = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' |
| 14 | RPM = '1' | ||
| 14 | 15 | ||
| 15 | def vprint(str, d): | 16 | def vprint(str, d): |
| 16 | if d.getVar('USER_KEY_SHOW_VERBOSE', True) == '1': | 17 | if d.getVar('USER_KEY_SHOW_VERBOSE', True) == '1': |
| @@ -32,6 +33,7 @@ def uks_rpm_keys_dir(d): | |||
| 32 | if uks_signing_model(d) != 'sample': | 33 | if uks_signing_model(d) != 'sample': |
| 33 | return '' | 34 | return '' |
| 34 | 35 | ||
| 36 | set_keys_dir('RPM', d) | ||
| 35 | return d.getVar('RPM_KEYS_DIR', True) + '/' | 37 | return d.getVar('RPM_KEYS_DIR', True) + '/' |
| 36 | 38 | ||
| 37 | def sign_efi_image(key, cert, input, output, d): | 39 | def sign_efi_image(key, cert, input, output, d): |
| @@ -165,6 +167,19 @@ def check_system_trusted_keys(d): | |||
| 165 | vprint("%s.crt is unavailable" % _, d) | 167 | vprint("%s.crt is unavailable" % _, d) |
| 166 | return False | 168 | return False |
| 167 | 169 | ||
| 170 | def check_rpm_keys(d): | ||
| 171 | dir = uks_rpm_keys_dir(d) | ||
| 172 | |||
| 173 | _ = dir + 'RPM-GPG-PRIVKEY-' + d.getVar('RPM_GPG_NAME', True) | ||
| 174 | if not os.path.exists(_): | ||
| 175 | vprint("%s is unavailable" % _, d) | ||
| 176 | return False | ||
| 177 | |||
| 178 | _ = dir + 'RPM-GPG-KEY-' + d.getVar('RPM_GPG_NAME', True) | ||
| 179 | if not os.path.exists(_): | ||
| 180 | vprint("%s is unavailable" % _, d) | ||
| 181 | return False | ||
| 182 | |||
| 168 | # Convert the PEM to DER format. | 183 | # Convert the PEM to DER format. |
| 169 | def pem2der(input, output, d): | 184 | def pem2der(input, output, d): |
| 170 | import bb.process | 185 | import bb.process |
| @@ -338,6 +353,8 @@ def sanity_check_user_keys(name, may_exit, d): | |||
| 338 | _ = check_ima_user_keys(d) | 353 | _ = check_ima_user_keys(d) |
| 339 | elif name == 'SYSTEM_TRUSTED': | 354 | elif name == 'SYSTEM_TRUSTED': |
| 340 | _ = check_system_trusted_keys(d) | 355 | _ = check_system_trusted_keys(d) |
| 356 | elif name == 'RPM': | ||
| 357 | _ = check_rpm_keys(d) | ||
| 341 | else: | 358 | else: |
| 342 | _ = False | 359 | _ = False |
| 343 | may_exit = True | 360 | may_exit = True |
| @@ -359,8 +376,7 @@ def set_keys_dir(name, d): | |||
| 359 | d.setVar(name + '_KEYS_DIR', d.getVar('DEPLOY_DIR_IMAGE', True) + '/user-keys/' + name.lower() + '_keys') | 376 | d.setVar(name + '_KEYS_DIR', d.getVar('DEPLOY_DIR_IMAGE', True) + '/user-keys/' + name.lower() + '_keys') |
| 360 | 377 | ||
| 361 | python check_deploy_keys() { | 378 | python check_deploy_keys() { |
| 362 | # XXX: the user key for rpm signing is necessary but not required. | 379 | for _ in ('UEFI_SB', 'MOK_SB', 'IMA', 'SYSTEM_TRUSTED', 'RPM'): |
| 363 | for _ in ('UEFI_SB', 'MOK_SB', 'IMA', 'SYSTEM_TRUSTED'): | ||
| 364 | if d.getVar(_, True) != "1": | 380 | if d.getVar(_, True) != "1": |
| 365 | continue | 381 | continue |
| 366 | 382 | ||
