func compareAccounts()

in google_guest_agent/windows_accounts.go [414:451]


func compareAccounts(newKeys metadata.WindowsKeys, oldStrKeys []string) metadata.WindowsKeys {
	if len(newKeys) == 0 {
		return nil
	}
	if len(oldStrKeys) == 0 {
		return newKeys
	}

	var oldKeys metadata.WindowsKeys
	for _, s := range oldStrKeys {
		var key metadata.WindowsKey
		if err := json.Unmarshal([]byte(s), &key); err != nil {
			if !slices.Contains(badReg, s) {
				logger.Errorf("Bad windows key from registry: %s", err)
				badReg = append(badReg, s)
			}
			continue
		}
		oldKeys = append(oldKeys, key)
	}

	var toAdd metadata.WindowsKeys
	for _, key := range newKeys {
		if func(key metadata.WindowsKey, oldKeys metadata.WindowsKeys) bool {
			for _, oldKey := range oldKeys {
				if oldKey.UserName == key.UserName &&
					oldKey.Modulus == key.Modulus &&
					oldKey.ExpireOn == key.ExpireOn {
					return false
				}
			}
			return true
		}(key, oldKeys) {
			toAdd = append(toAdd, key)
		}
	}
	return toAdd
}