blob: dec879b7bda08376a3636c5af8971b207af1265a [file] [log] [blame]
David Brown902d6172017-05-05 09:37:41 -06001// Query the bootloader's capabilities.
2
3#[repr(u32)]
4#[derive(Copy, Clone, Eq, PartialEq)]
5#[allow(unused)]
6pub enum Caps {
7 RSA2048 = (1 << 0),
8 EcdsaP224 = (1 << 1),
9 EcdsaP256 = (1 << 2),
10 SwapUpgrade = (1 << 3),
11 OverwriteUpgrade = (1 << 4),
David Brown9930a3e2019-01-11 12:28:26 -070012 EncRsa = (1 << 5),
13 EncKw = (1 << 6),
David Brown902d6172017-05-05 09:37:41 -060014}
15
16impl Caps {
17 pub fn present(self) -> bool {
18 let caps = unsafe { bootutil_get_caps() };
19 (caps as u32) & (self as u32) != 0
20 }
21}
22
23extern "C" {
24 fn bootutil_get_caps() -> Caps;
25}