copyStorePath(): Don't require signatures for "trusted" stores
For example, SSH stores could be trusted.
This commit is contained in:
		
							parent
							
								
									fa07558a06
								
							
						
					
					
						commit
						f38224e924
					
				
					 2 changed files with 13 additions and 0 deletions
				
			
		|  | @ -529,6 +529,15 @@ void copyStorePath(ref<Store> srcStore, ref<Store> dstStore, | ||||||
|     StringSink sink; |     StringSink sink; | ||||||
|     srcStore->narFromPath({storePath}, sink); |     srcStore->narFromPath({storePath}, sink); | ||||||
| 
 | 
 | ||||||
|  |     if (srcStore->isTrusted()) | ||||||
|  |         dontCheckSigs = true; | ||||||
|  | 
 | ||||||
|  |     if (!info->narHash && dontCheckSigs) { | ||||||
|  |         auto info2 = make_ref<ValidPathInfo>(*info); | ||||||
|  |         info2->narHash = hashString(htSHA256, *sink.s); | ||||||
|  |         info = info2; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     dstStore->addToStore(*info, sink.s, repair, dontCheckSigs); |     dstStore->addToStore(*info, sink.s, repair, dontCheckSigs); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -562,6 +562,10 @@ public: | ||||||
| 
 | 
 | ||||||
|     const Stats & getStats(); |     const Stats & getStats(); | ||||||
| 
 | 
 | ||||||
|  |     /* Whether this store paths from this store can be imported even
 | ||||||
|  |        if they lack a signature. */ | ||||||
|  |     virtual bool isTrusted() { return false; } | ||||||
|  | 
 | ||||||
| protected: | protected: | ||||||
| 
 | 
 | ||||||
|     Stats stats; |     Stats stats; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue