1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//! Secure Content extension types
/// Secure content metadata (read-only awareness)
///
/// This structure provides awareness of secure content elements in a 3MF package
/// without implementing actual cryptographic operations. It parses and exposes the
/// complete keystore structure to enable applications to:
/// - Identify which files are encrypted
/// - Access consumer information (IDs, key IDs, public keys)
/// - Retrieve encryption metadata (algorithms, parameters)
/// - Implement their own decryption using external cryptographic libraries
///
/// **Implementation Status**: The keystore is fully parsed to extract all structural
/// information. This allows applications to access encryption metadata and implement
/// their own decryption logic using external libraries.
///
/// **Security Warning**: This does NOT decrypt content or verify signatures.
/// Applications must implement their own cryptographic operations using established
/// libraries (e.g., ring, RustCrypto, OpenSSL).
/// Consumer information from SecureContent keystore
///
/// Represents an authorized consumer (party) that can decrypt protected content.
/// Each consumer has a unique identifier and optional key information.
///
/// **Note**: This structure provides metadata only. Applications must implement
/// their own key management and decryption logic.
/// Resource data group from SecureContent keystore
///
/// Groups encrypted resources that share the same Content Encryption Key (CEK).
/// Each group may have multiple access rights (one per consumer) and multiple
/// encrypted resources.
/// Access right from SecureContent keystore
///
/// Links a consumer to encrypted content by providing the wrapped CEK.
/// Each access right contains the CEK encrypted with a specific consumer's KEK.
/// Key Encryption Key parameters from SecureContent keystore
///
/// Specifies the algorithm and parameters used to wrap (encrypt) the CEK.
/// Resource data from SecureContent keystore
///
/// Describes a single encrypted resource file in the package, including its
/// path and the parameters needed for decryption.
/// Content Encryption Key parameters from SecureContent keystore
///
/// Specifies the symmetric encryption algorithm and parameters used to
/// encrypt the resource data.