Commit Graph

1981 Commits

Author SHA1 Message Date
Povilas Kanapickas 229abab99f Implement client identity verification
This commit fixes two security vulnerabilities: CVE-2021-42072 and
CVE-2021-42073.

The issues have been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 04:50:15 +02:00
Povilas Kanapickas e79bdf333c gui: Fix fingerprint database being not populated due to missing dirs 2021-11-01 04:50:14 +02:00
Povilas Kanapickas 57769cffda lib/net: Pass connection security level to within socket classes 2021-11-01 04:50:13 +02:00
Povilas Kanapickas 5c7d7194d5 lib/net: Use enum for connection security level instead of boolean 2021-11-01 04:50:12 +02:00
Povilas Kanapickas 82b8fa905e lib/net: Improve name of showCertificate() to reflect what it does 2021-11-01 04:50:11 +02:00
Povilas Kanapickas 133e447fb6 lib/net: Don't hardcode fingerprint DB path in verify_cert_fingerprint() 2021-11-01 04:50:10 +02:00
Povilas Kanapickas 8bc280e0dd gui: Add configuration for requiring client certificates 2021-11-01 04:50:09 +02:00
Povilas Kanapickas ed32e2e326 gui: Expand checkboxes in settings dialog through both grid columns 2021-11-01 04:50:08 +02:00
Povilas Kanapickas 4d73ed9fdd lib/net: Present client certificate when connecting to server 2021-11-01 04:50:07 +02:00
Povilas Kanapickas 92ba6f61e6 gui: Move SSL fingerprint labels out of server frame
SSL fingerprints will be used to auth both server and client.
2021-11-01 04:50:06 +02:00
Povilas Kanapickas c0ce893711 lib/net: Load client SSL certificates when connecting 2021-11-01 04:50:05 +02:00
Povilas Kanapickas 0f3afed664 gui: Switch SSL certificate handler to barrier::fs paths 2021-11-01 04:29:54 +02:00
Povilas Kanapickas b76b332f2f lib/common: Move SSL certificate path definition to common location 2021-11-01 04:29:53 +02:00
Povilas Kanapickas d033ffa3d8 lib/net: Use fs::is_regular_file() to check for path existence 2021-11-01 04:29:52 +02:00
Povilas Kanapickas 220f9e8274 lib/common: Remove unused file 2021-11-01 04:29:51 +02:00
Povilas Kanapickas a2ca7e29f5 lib/common: Switch data directories to fs::path 2021-11-01 04:29:50 +02:00
Povilas Kanapickas 298980fa86 lib/common: Move DataDirectories to barrier namespace 2021-11-01 04:29:49 +02:00
Povilas Kanapickas 677612d342 lib/common: Replace PathUtilities::basename with barrier::fs equivalent 2021-11-01 04:29:48 +02:00
Povilas Kanapickas e7d936b5d7 lib/common: Replace PathUtilities::concat with barrier::fs equivalent 2021-11-01 04:29:47 +02:00
Povilas Kanapickas bcafdc6783 src/lib: Switch to ghc::filesystem in path utilities 2021-11-01 04:29:46 +02:00
Povilas Kanapickas a987605513 lib/io: Rename fstream.h to filesystem.h 2021-11-01 04:29:45 +02:00
Povilas Kanapickas a428b61c7d gui: Add support for SHA256 fingerprints
For the time being both SHA1 and SHA256 fingerprints will be shown in
the UI. This allows users to verify new connections between old and new
versions of Barrier. After the initial verification we use SHA256
fingerprints.

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas c7e6fc6c7e gui: Set the size of the window to the size of the contents 2021-11-01 04:07:09 +02:00
Povilas Kanapickas b7757fbd68 lib/net: Implement a way to generate fingerprint randomart
The code has been copied from OpenSSH.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas a238b27879 gui: Simplify isCertificateValid() 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 7cced74119 lib/net: Use FingerprintData to represent fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 50534ecb43 lib/net: Use new FingerprintDatabase to handle fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas be8ba0d132 gui: Use new FingerprintDatabase to handle fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 9cac96b4af lib/net: Implement a reusable fingerprint database 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 3e71b468f6 lib: Remove useless empty constructors 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 8f88dc2585 lib/base: Support colons in from_hex() 2021-11-01 04:07:09 +02:00
Povilas Kanapickas aa3afa9062 Use openssl library instead of CLI to generate certificates 2021-11-01 04:07:09 +02:00
Povilas Kanapickas dbf56a9375 gui: Use openssl library instead of CLI tool to generate fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas cf732aba37 lib/io: Add a replacement for fopen() which works on Windows
fopen() does not correctly handle non-ASCII paths on Windows.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas 089b8e4749 lib/net: Extract SSL fingerprint generation to reusable function 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 85486927b3 lib/base: Implement pattern to execute something at function exit 2021-11-01 03:19:47 +02:00
Povilas Kanapickas cd7e731cb7 lib: Switch to std::vector<std::uint8_t> for fingerprint data 2021-11-01 03:19:47 +02:00
Povilas Kanapickas ef08470286 src/lib: Use standard std::vsnprintf() instead of hacking our own 2021-11-01 03:19:47 +02:00
Povilas Kanapickas b793675ef8 lib/net: Put secure utils into barrier namespace 2021-11-01 03:19:47 +02:00
Povilas Kanapickas a9b30951ce lib: Add utility function to convert from hex to binary 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 767f3d37ec test: Extract common test utilities to separate file 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 9d8e1faf59 test: Add test for format_ssl_fingerprint() 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 96e0021572 lib/base: Make to_hex() easier to use 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 7f71924a86 lib/net: Make format_ssl_fingerprint() easier to use 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 0e406d4918 lib/net: Extract fingerprint formatting out of SecureSocket 2021-11-01 03:19:47 +02:00
Povilas Kanapickas bfa8964305 Enable encryption by default 2021-11-01 03:00:09 +02:00
Povilas Kanapickas d24f368efe Correctly open files with non-ASCII paths on Windows
This fixes #976, fixes #974, fixes #444.

On Windows the standard stream open() functions expect bytes encoded in
current system encoding, not UTF8. Since we're dealing with UTF8
throughout the application this results in wrong paths being passed and
failure to open files. As a solution, we convert the paths to UTF16 via
the WCHAR character type and use the special Windows-specific overloads
of open() functions.
2021-10-30 01:03:09 +03:00
Povilas Kanapickas 8286c85dc0 lib/common/win32: Extract unicode_to_mb() to separate file 2021-10-30 01:03:09 +03:00
Povilas Kanapickas 15a955ff21 Revert "Use ansi codepage for internal multibyte strings on windows"
This reverts commit 402801e0a6.

We should use UTF8 throughout the application and convert to platform
encodings only at the edge. Otherwise it's not clear which data uses
which encoding and we result in extremele brittle system.
2021-10-30 01:03:09 +03:00
Andrew Shark 547a2dd413 Add warning on wayland, fix #247 2021-10-02 03:21:04 +03:00
a1346054 872e78d342
Trim excess whitespace 2021-09-23 00:20:58 +00:00
a1346054 9c41441861
Fix whitespace alignment 2021-09-23 00:20:55 +00:00
a1346054 9549352a10
Fix codestyle deviations 2021-09-23 00:20:54 +00:00
a1346054 8c014b4bb6
Fix spelling 2021-09-23 00:20:54 +00:00
a1346054 3aee8dd341
Add missing final newline 2021-09-22 22:58:16 +00:00
Peter Hutterer dec895e8d3 cmake: move two windows #defines to the main cmake file
We have a check for windows here anyway, let's move the defines here and we
can drop it in the common header file. And since on Unix HAVE_CONFIG_H is
always defined, we can drop the else condition too.
2021-08-20 15:27:39 +10:00
Peter Hutterer c32ca2195d barrier: split the platform-specific argument parsing
Instead of one function with several ifdefs, split into several functions
to make the code more readable.

No functional changes.
2021-08-20 15:27:39 +10:00
Tomoya Tanjo 7a4c6a25d7
Add `Henkan`, `Muhenkan` and `Zenkaku` entries to macOS
Note: these keys are sometimes referred as `international4` and `international5`, respectively.
2021-06-27 17:07:45 +00:00
Tomoya Tanjo eec676948c
Add `IME on` and `IME off` key entries to Windows
Note that these key codes are same as Kana and EisuToggle keys in macOS, respectively.
See also: https://docs.microsoft.com/en-US/windows-hardware/design/component-guidelines/keyboard-japan-ime#hid-usage-ps2-scan-code-and-virtual-key-code-for-imeon-key--imeoff-key
2021-06-27 17:05:26 +00:00
Tomoya Tanjo 14b5cebb62
Fix keycode for `Kana` in Windows key mapping 2021-06-27 17:00:42 +00:00
Povilas Kanapickas de89c9d45e
Merge pull request #1113 from HwiNyeonKim/master
Missed Korean translation part edited
2021-06-23 17:20:44 +03:00
HwiNyeon Kim 00cfe0ba6d Missed Korean translation part edited
Some parts that still written as "Synergy" in Korean installation process edited to "Barrier."
2021-06-23 16:26:03 +03:00
gloomy-ghost 63d60a14f8 update zh-CN translations 2021-06-23 16:22:42 +03:00
Jose Riha 9a0bbbaaec Update Slovak translation 2021-06-21 21:28:32 +03:00
Povilas Kanapickas 649fdfe042
Merge pull request #1156 from botovq/client_ciphers
Remove #if defined(LIBRESSL_VERSION_NUMBER) path
2021-06-13 18:43:37 +03:00
Chih-Hsuan Yen cad92e89d0
Map more X11 clipboard MIME types to corresponding converters
The following logs are extracted from pasting texts to Firefox's address
bar and a Google Doc page in Firefox, respectively.

[2021-05-16T00:03:14] DEBUG1: request for clipboard 342, target text/plain;charset=utf-8 (600) by 0x03000044 (property=GDK_SELECTION (511))

[2021-05-16T00:03:22] DEBUG1: request for clipboard 342, target application/x-moz-nativehtml (603) by 0x03000044 (property=GDK_SELECTION (511))

Inspired by https://github.com/debauchee/barrier/pull/461. Should fix
pasting unicode on X11 https://github.com/debauchee/barrier/issues/344.
2021-05-16 00:27:57 +08:00
Theo Buehler a29a93f0c8 Remove #if defined(LIBRESSL_VERSION_NUMBER) path
The SSL_get_client_ciphers API has been available since LibreSSL 2.9.1
and is thus present in all supported versions (3.2.x and 3.3.x). In
the upcoming LibreSSL 3.4.x release the SSL_CIPHER struct will become
opaque hence the build will break.
2021-05-06 20:57:15 +02:00
cryzed 06c1a5908c Fixes #1066 2021-02-16 02:35:13 +01:00
Povilas Kanapickas 12024b9a5d
Merge pull request #1031 from albertony/keyboard_ui
Enable use of keyboard to modify screens
2021-01-25 22:52:18 +02:00
albertony 4ee6a54d41 Enable use of keyboard to modify screens 2021-01-25 21:32:19 +01:00
Povilas Kanapickas 8202fe1fc7
Merge pull request #986 from albertony/rc_version_info
Add version info to windows main exe resource
2021-01-25 22:11:34 +02:00
cjaone 5de519d89b 100% German translation 2021-01-22 20:47:47 +01:00
albertony 31ce5cbdf8 Add version info to windows main exe resource 2021-01-22 08:29:01 +01:00
Eike cf231aef03 Corrected spelling in gui_de.ts 2021-01-11 14:20:42 +01:00
Povilas Kanapickas 4d00a1304d gui: Update compiled translation resources 2021-01-11 00:46:38 +02:00
Povilas Kanapickas 3f268a5099 gui: Make langbuild script executable 2021-01-11 00:46:18 +02:00
maboroshin a2753a76ce translation: ja-JP Barrier's Resources 2021-01-11 00:44:44 +02:00
maboroshin e7d5f25fea translation: ja-JP Untranslated part 2021-01-11 00:44:12 +02:00
Tobias Kellner 297de775a3 gui: Add autoStart setting 2021-01-11 00:13:34 +02:00
Felix Schmidt 0c86f1fbf9 lib: Add missing Sun keyboard keys 2021-01-10 22:13:43 +02:00
Dustin Lieu adc49fa066 gui: Fix invalid config being written for hotkeys with multiple actions 2021-01-10 16:38:25 +02:00
Dustin Lieu a48f183ee1 gui: Added special hotkey config rules for comma and semicolon 2021-01-10 15:40:15 +02:00
Povilas Kanapickas def2ef2a9f gui/test: Add tests for Hotkey serialization via QTextStream 2021-01-10 15:28:09 +02:00
Povilas Kanapickas 7befd121d4 gui/test: Remove testing of different QSettings formats
QSettings guarantees are provided regardless of the format and until we
use a custom format it does not make sense to verify guarantees provided
by Qt.
2021-01-10 15:28:08 +02:00
Povilas Kanapickas 141f6de2c4 gui/test: Extract createHotkey() 2021-01-10 15:28:07 +02:00
Povilas Kanapickas a004cd8eba gui/test: Put createAction() to anonymous namespace 2021-01-10 15:28:06 +02:00
Povilas Kanapickas 0259703cb2 gui: Use range-based for loop instead of foreach macro 2021-01-10 14:50:29 +02:00
Povilas Kanapickas 36fa9eaa0e lib: Remove unnecessary use of std::endl
std::endl is "\n" followed by a flush. We only need flushing in certain
circumstances.
2021-01-10 14:28:42 +02:00
Povilas Kanapickas a8a2b7c29a gui: Remove ScreenList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:45 +02:00
Povilas Kanapickas 384dbffce4 gui: Remove HotkeyList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:44 +02:00
Povilas Kanapickas ac60e620ba gui: Remove ActionList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:43 +02:00
Povilas Kanapickas fb067d4001 gui/test: Add tests for Hotkey serialization to QSettings 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 68cfb4e585 gui: Don't use friends to limit access to Action 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 0579101272 gui: Don't use friends to limit access to Hotkey 2021-01-10 13:50:33 +02:00
Povilas Kanapickas a691b31b8e gui: Make access to hotkey actions explicit 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 016393fb67 gui: Remove unnecessary accessor to private member in Hotkey 2021-01-10 13:50:33 +02:00
Povilas Kanapickas e7da893f5a gui/test: Extract temporary file creation to a separate file 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 7f76d3cdcc gui/tests: Use common per-platform libs variable for dependencies 2021-01-10 13:50:14 +02:00
Povilas Kanapickas 88c0c030f8 gui: Add tests for KeySequence serialization 2021-01-07 23:43:54 +02:00
Povilas Kanapickas 1c434df87a gui: Remove unnecessary accessor to private member in KeySequence 2021-01-07 23:43:53 +02:00