Skip to content

Commit ad54732

Browse files
authored
vbs: Enable get attestation report (#1872)
This PR plumbs the (extended) hypercall for get VBS report and enables attestation path for VBS. With the VBS attestation support, the PR also adds the VMM test for VBS that exercises the boot-time SKR path. --------- Signed-off-by: Ming-Wei Shih <[email protected]>
1 parent 2717d69 commit ad54732

File tree

24 files changed

+1101
-185
lines changed

24 files changed

+1101
-185
lines changed

Cargo.lock

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,26 @@ version = "2.0.0"
6969
source = "registry+https://github.com/rust-lang/crates.io-index"
7070
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
7171

72+
[[package]]
73+
name = "aes"
74+
version = "0.8.4"
75+
source = "registry+https://github.com/rust-lang/crates.io-index"
76+
checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
77+
dependencies = [
78+
"cfg-if",
79+
"cipher",
80+
"cpufeatures",
81+
]
82+
83+
[[package]]
84+
name = "aes-kw"
85+
version = "0.2.1"
86+
source = "registry+https://github.com/rust-lang/crates.io-index"
87+
checksum = "69fa2b352dcefb5f7f3a5fb840e02665d311d878955380515e4fd50095dd3d8c"
88+
dependencies = [
89+
"aes",
90+
]
91+
7292
[[package]]
7393
name = "aho-corasick"
7494
version = "1.1.3"
@@ -264,6 +284,12 @@ version = "0.8.0"
264284
source = "registry+https://github.com/rust-lang/crates.io-index"
265285
checksum = "77c6d128af408d8ebd08331f0331cf2cf20d19e6c44a7aec58791641ecc8c0b5"
266286

287+
[[package]]
288+
name = "base64ct"
289+
version = "1.8.0"
290+
source = "registry+https://github.com/rust-lang/crates.io-index"
291+
checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
292+
267293
[[package]]
268294
name = "bincode"
269295
version = "1.3.3"
@@ -635,6 +661,16 @@ dependencies = [
635661
"half",
636662
]
637663

664+
[[package]]
665+
name = "cipher"
666+
version = "0.4.4"
667+
source = "registry+https://github.com/rust-lang/crates.io-index"
668+
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
669+
dependencies = [
670+
"crypto-common",
671+
"inout",
672+
]
673+
638674
[[package]]
639675
name = "clap"
640676
version = "4.5.37"
@@ -983,6 +1019,7 @@ checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
9831019
dependencies = [
9841020
"const-oid",
9851021
"der_derive",
1022+
"pem-rfc7468",
9861023
"zeroize",
9871024
]
9881025

@@ -1108,6 +1145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
11081145
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
11091146
dependencies = [
11101147
"block-buffer",
1148+
"const-oid",
11111149
"crypto-common",
11121150
]
11131151

@@ -2584,7 +2622,9 @@ dependencies = [
25842622
name = "guest_emulation_device"
25852623
version = "0.0.0"
25862624
dependencies = [
2625+
"aes-kw",
25872626
"async-trait",
2627+
"base64 0.22.1",
25882628
"disk_backend",
25892629
"disklayer_ram",
25902630
"futures",
@@ -2599,8 +2639,11 @@ dependencies = [
25992639
"pal_async",
26002640
"parking_lot",
26012641
"power_resources",
2642+
"rsa",
26022643
"scsi_buffers",
26032644
"serde_json",
2645+
"sha1",
2646+
"sha2",
26042647
"task_control",
26052648
"thiserror 2.0.12",
26062649
"tracelimit",
@@ -3448,6 +3491,15 @@ dependencies = [
34483491
"hashbrown",
34493492
]
34503493

3494+
[[package]]
3495+
name = "inout"
3496+
version = "0.1.4"
3497+
source = "registry+https://github.com/rust-lang/crates.io-index"
3498+
checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
3499+
dependencies = [
3500+
"generic-array",
3501+
]
3502+
34513503
[[package]]
34523504
name = "input_core"
34533505
version = "0.0.0"
@@ -3662,6 +3714,9 @@ name = "lazy_static"
36623714
version = "1.5.0"
36633715
source = "registry+https://github.com/rust-lang/crates.io-index"
36643716
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
3717+
dependencies = [
3718+
"spin",
3719+
]
36653720

36663721
[[package]]
36673722
name = "libc"
@@ -3679,6 +3734,12 @@ dependencies = [
36793734
"cc",
36803735
]
36813736

3737+
[[package]]
3738+
name = "libm"
3739+
version = "0.2.15"
3740+
source = "registry+https://github.com/rust-lang/crates.io-index"
3741+
checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
3742+
36823743
[[package]]
36833744
name = "libmimalloc-sys"
36843745
version = "0.1.42"
@@ -4597,19 +4658,57 @@ dependencies = [
45974658
"winapi",
45984659
]
45994660

4661+
[[package]]
4662+
name = "num-bigint-dig"
4663+
version = "0.8.4"
4664+
source = "registry+https://github.com/rust-lang/crates.io-index"
4665+
checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
4666+
dependencies = [
4667+
"byteorder",
4668+
"lazy_static",
4669+
"libm",
4670+
"num-integer",
4671+
"num-iter",
4672+
"num-traits",
4673+
"rand",
4674+
"smallvec",
4675+
"zeroize",
4676+
]
4677+
46004678
[[package]]
46014679
name = "num-conv"
46024680
version = "0.1.0"
46034681
source = "registry+https://github.com/rust-lang/crates.io-index"
46044682
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
46054683

4684+
[[package]]
4685+
name = "num-integer"
4686+
version = "0.1.46"
4687+
source = "registry+https://github.com/rust-lang/crates.io-index"
4688+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
4689+
dependencies = [
4690+
"num-traits",
4691+
]
4692+
4693+
[[package]]
4694+
name = "num-iter"
4695+
version = "0.1.45"
4696+
source = "registry+https://github.com/rust-lang/crates.io-index"
4697+
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
4698+
dependencies = [
4699+
"autocfg",
4700+
"num-integer",
4701+
"num-traits",
4702+
]
4703+
46064704
[[package]]
46074705
name = "num-traits"
46084706
version = "0.2.19"
46094707
source = "registry+https://github.com/rust-lang/crates.io-index"
46104708
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
46114709
dependencies = [
46124710
"autocfg",
4711+
"libm",
46134712
]
46144713

46154714
[[package]]
@@ -4853,6 +4952,7 @@ dependencies = [
48534952
"base64-serde",
48544953
"guid",
48554954
"hex",
4955+
"hvdef",
48564956
"mesh",
48574957
"open_enum",
48584958
"serde",
@@ -5417,6 +5517,15 @@ dependencies = [
54175517
"vmcore",
54185518
]
54195519

5520+
[[package]]
5521+
name = "pem-rfc7468"
5522+
version = "0.7.0"
5523+
source = "registry+https://github.com/rust-lang/crates.io-index"
5524+
checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
5525+
dependencies = [
5526+
"base64ct",
5527+
]
5528+
54205529
[[package]]
54215530
name = "petgraph"
54225531
version = "0.6.5"
@@ -5652,6 +5761,27 @@ dependencies = [
56525761
"mesh",
56535762
]
56545763

5764+
[[package]]
5765+
name = "pkcs1"
5766+
version = "0.7.5"
5767+
source = "registry+https://github.com/rust-lang/crates.io-index"
5768+
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
5769+
dependencies = [
5770+
"der",
5771+
"pkcs8",
5772+
"spki",
5773+
]
5774+
5775+
[[package]]
5776+
name = "pkcs8"
5777+
version = "0.10.2"
5778+
source = "registry+https://github.com/rust-lang/crates.io-index"
5779+
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
5780+
dependencies = [
5781+
"der",
5782+
"spki",
5783+
]
5784+
56555785
[[package]]
56565786
name = "pkg-config"
56575787
version = "0.3.32"
@@ -5730,6 +5860,15 @@ dependencies = [
57305860
"jiff",
57315861
]
57325862

5863+
[[package]]
5864+
name = "ppv-lite86"
5865+
version = "0.2.21"
5866+
source = "registry+https://github.com/rust-lang/crates.io-index"
5867+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
5868+
dependencies = [
5869+
"zerocopy 0.8.24",
5870+
]
5871+
57335872
[[package]]
57345873
name = "prettyplease"
57355874
version = "0.1.25"
@@ -5868,6 +6007,35 @@ dependencies = [
58686007
"nibble_vec",
58696008
]
58706009

6010+
[[package]]
6011+
name = "rand"
6012+
version = "0.8.5"
6013+
source = "registry+https://github.com/rust-lang/crates.io-index"
6014+
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
6015+
dependencies = [
6016+
"rand_chacha",
6017+
"rand_core",
6018+
]
6019+
6020+
[[package]]
6021+
name = "rand_chacha"
6022+
version = "0.3.1"
6023+
source = "registry+https://github.com/rust-lang/crates.io-index"
6024+
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
6025+
dependencies = [
6026+
"ppv-lite86",
6027+
"rand_core",
6028+
]
6029+
6030+
[[package]]
6031+
name = "rand_core"
6032+
version = "0.6.4"
6033+
source = "registry+https://github.com/rust-lang/crates.io-index"
6034+
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
6035+
dependencies = [
6036+
"getrandom 0.2.15",
6037+
]
6038+
58716039
[[package]]
58726040
name = "range_map_vec"
58736041
version = "0.2.0"
@@ -5973,6 +6141,26 @@ dependencies = [
59736141
"libc",
59746142
]
59756143

6144+
[[package]]
6145+
name = "rsa"
6146+
version = "0.9.8"
6147+
source = "registry+https://github.com/rust-lang/crates.io-index"
6148+
checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b"
6149+
dependencies = [
6150+
"const-oid",
6151+
"digest",
6152+
"num-bigint-dig",
6153+
"num-integer",
6154+
"num-traits",
6155+
"pkcs1",
6156+
"pkcs8",
6157+
"rand_core",
6158+
"signature",
6159+
"spki",
6160+
"subtle",
6161+
"zeroize",
6162+
]
6163+
59766164
[[package]]
59776165
name = "rusqlite"
59786166
version = "0.34.0"
@@ -6451,6 +6639,17 @@ dependencies = [
64516639
"zerocopy 0.8.24",
64526640
]
64536641

6642+
[[package]]
6643+
name = "sha1"
6644+
version = "0.10.6"
6645+
source = "registry+https://github.com/rust-lang/crates.io-index"
6646+
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
6647+
dependencies = [
6648+
"cfg-if",
6649+
"cpufeatures",
6650+
"digest",
6651+
]
6652+
64546653
[[package]]
64556654
name = "sha2"
64566655
version = "0.10.8"
@@ -6553,6 +6752,16 @@ dependencies = [
65536752
"libc",
65546753
]
65556754

6755+
[[package]]
6756+
name = "signature"
6757+
version = "2.2.0"
6758+
source = "registry+https://github.com/rust-lang/crates.io-index"
6759+
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
6760+
dependencies = [
6761+
"digest",
6762+
"rand_core",
6763+
]
6764+
65566765
[[package]]
65576766
name = "simd-adler32"
65586767
version = "0.3.7"
@@ -6632,6 +6841,16 @@ version = "0.9.8"
66326841
source = "registry+https://github.com/rust-lang/crates.io-index"
66336842
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
66346843

6844+
[[package]]
6845+
name = "spki"
6846+
version = "0.7.3"
6847+
source = "registry+https://github.com/rust-lang/crates.io-index"
6848+
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
6849+
dependencies = [
6850+
"base64ct",
6851+
"der",
6852+
]
6853+
66356854
[[package]]
66366855
name = "stackfuture"
66376856
version = "0.3.0"
@@ -6798,6 +7017,12 @@ version = "0.11.1"
67987017
source = "registry+https://github.com/rust-lang/crates.io-index"
67997018
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
68007019

7020+
[[package]]
7021+
name = "subtle"
7022+
version = "2.6.1"
7023+
source = "registry+https://github.com/rust-lang/crates.io-index"
7024+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
7025+
68017026
[[package]]
68027027
name = "syn"
68037028
version = "1.0.109"
@@ -6871,6 +7096,8 @@ dependencies = [
68717096
name = "tee_call"
68727097
version = "0.0.0"
68737098
dependencies = [
7099+
"hcl",
7100+
"hvdef",
68747101
"sev_guest_device",
68757102
"static_assertions",
68767103
"tdx_guest_device",

0 commit comments

Comments
 (0)