summaryrefslogtreecommitdiffstats
path: root/meta-signing-key/classes
diff options
context:
space:
mode:
authorLans Zhang <jia.zhang@windriver.com>2017-08-17 11:22:49 +0800
committerLans Zhang <jia.zhang@windriver.com>2017-08-17 11:22:49 +0800
commit464433a169336a4362021e67a6f935a152450239 (patch)
tree2490cc6eecc162a9cf3cd64cb3091b97e3b82c41 /meta-signing-key/classes
parentd5a4de8f096e2a03d89b5a756f5ab65f316a79dc (diff)
downloadmeta-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.bbclass20
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",
11MOK_SB = '${@bb.utils.contains("DISTRO_FEATURES", "efi-secure-boot", "1", "0", d)}' 11MOK_SB = '${@bb.utils.contains("DISTRO_FEATURES", "efi-secure-boot", "1", "0", d)}'
12IMA = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' 12IMA = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}'
13SYSTEM_TRUSTED = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}' 13SYSTEM_TRUSTED = '${@bb.utils.contains("DISTRO_FEATURES", "ima", "1", "0", d)}'
14RPM = '1'
14 15
15def vprint(str, d): 16def 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
37def sign_efi_image(key, cert, input, output, d): 39def 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
170def 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.
169def pem2der(input, output, d): 184def 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
361python check_deploy_keys() { 378python 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