@@ -128,8 +128,6 @@ mismatched file: `{path}`
128128
129129 let mut dirs = Vec :: new ( ) ;
130130
131- let mut signatures = BTreeSet :: new ( ) ;
132-
133131 for entry in WalkDir :: new ( & root) {
134132 let entry = entry?;
135133
@@ -158,37 +156,6 @@ mismatched file: `{path}`
158156
159157 let path = path. strip_prefix ( & root) . unwrap ( ) ;
160158
161- if path == SIGNATURES {
162- continue ;
163- }
164-
165- if path. starts_with ( SIGNATURES ) {
166- ensure ! {
167- path. extension( ) == Some ( "signature" ) ,
168- error:: SignatureFilename { path } ,
169- }
170-
171- let pubkey = path
172- . file_stem ( )
173- . context ( error:: SignatureFilename { path } ) ?
174- . parse :: < PublicKey > ( )
175- . context ( error:: SignaturePublicKey { path } ) ?;
176-
177- let signature = fs:: read_to_string ( entry. path ( ) ) . context ( error:: Io { path } ) ?;
178-
179- let signature = signature
180- . parse :: < Signature > ( )
181- . context ( error:: SignatureMalformed { path } ) ?;
182-
183- pubkey
184- . verify ( root_hash. as_bytes ( ) , & signature)
185- . context ( error:: SignatureInvalid { path } ) ?;
186-
187- signatures. insert ( pubkey) ;
188-
189- continue ;
190- }
191-
192159 let path = RelativePath :: try_from ( path) . context ( error:: Path { path } ) ?;
193160
194161 ensure ! {
@@ -209,9 +176,17 @@ mismatched file: `{path}`
209176 }
210177 }
211178
179+ for ( public_key, signature) in & manifest. signatures {
180+ public_key
181+ . verify ( root_hash. as_bytes ( ) , signature)
182+ . context ( error:: SignatureInvalid {
183+ public_key : public_key. clone ( ) ,
184+ } ) ?;
185+ }
186+
212187 if let Some ( key) = self . key {
213188 ensure ! {
214- signatures. contains ( & key) ,
189+ manifest . signatures. contains_key ( & key) ,
215190 error:: SignatureMissing { key } ,
216191 }
217192 }
0 commit comments