|  |  |  | @ -17,8 +17,8 @@ import ( | 
			
		
	
		
			
				
					|  |  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | var ( | 
			
		
	
		
			
				
					|  |  |  |  | 	ErrWrongSecurityCommand   = errors.New("macOS wrong security command") | 
			
		
	
		
			
				
					|  |  |  |  | 	ErrCouldNotFindInKeychain = errors.New("macOS could not find in keychain") | 
			
		
	
		
			
				
					|  |  |  |  | 	errWrongSecurityCommand   = errors.New("wrong security command") | 
			
		
	
		
			
				
					|  |  |  |  | 	errCouldNotFindInKeychain = errors.New("could not be find in keychain") | 
			
		
	
		
			
				
					|  |  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | func (c *chromium) GetMasterKey() ([]byte, error) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -39,19 +39,19 @@ func (c *chromium) GetMasterKey() ([]byte, error) { | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	if stderr.Len() > 0 { | 
			
		
	
		
			
				
					|  |  |  |  | 		if strings.Contains(stderr.String(), "could not be found") { | 
			
		
	
		
			
				
					|  |  |  |  | 			return nil, ErrCouldNotFindInKeychain | 
			
		
	
		
			
				
					|  |  |  |  | 			return nil, errCouldNotFindInKeychain | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		return nil, errors.New(stderr.String()) | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	chromeSecret := bytes.TrimSpace(stdout.Bytes()) | 
			
		
	
		
			
				
					|  |  |  |  | 	if chromeSecret == nil { | 
			
		
	
		
			
				
					|  |  |  |  | 		return nil, ErrWrongSecurityCommand | 
			
		
	
		
			
				
					|  |  |  |  | 		return nil, errWrongSecurityCommand | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	chromeSalt := []byte("saltysalt") | 
			
		
	
		
			
				
					|  |  |  |  | 	// @https://source.chromium.org/chromium/chromium/src/+/master:components/os_crypt/os_crypt_mac.mm;l=157
 | 
			
		
	
		
			
				
					|  |  |  |  | 	key := pbkdf2.Key(chromeSecret, chromeSalt, 1003, 16, sha1.New) | 
			
		
	
		
			
				
					|  |  |  |  | 	if key == nil { | 
			
		
	
		
			
				
					|  |  |  |  | 		return nil, ErrWrongSecurityCommand | 
			
		
	
		
			
				
					|  |  |  |  | 		return nil, errWrongSecurityCommand | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	c.masterKey = key | 
			
		
	
		
			
				
					|  |  |  |  | 	log.Infof("%s initialized master key success", c.name) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |