Commit Graph

2654 Commits

Author SHA1 Message Date
Michael Starke
adcf77f1d7 Fixed minor layout issues 2021-09-30 17:03:54 +02:00
Michael Starke
32b31a3ea8 Only leave one autotype notification in the stacke to prevent polution. 2021-09-30 17:03:54 +02:00
Michael Starke
f1d0d410f1 Updated to current HNHUi to fix missing attribute transferal 2021-09-30 17:03:54 +02:00
Michael Starke
af63b0ec4d Do not wrap after characters since this is not ideal for most use cases in MacPass 2021-09-30 17:03:54 +02:00
Michael Starke
85e55626b0 Fixed clipped popup button in workflow settings 2021-09-30 17:03:54 +02:00
Michael Starke
3c4eac6707 Updated to modern Obj-C 2021-09-30 17:03:54 +02:00
Michael Starke
84f35d6005 Minor codestyle updates 2021-09-30 17:03:54 +02:00
Michael Starke
9e14e8301d Started converting MPPastBoardController API to use more flexible interface. 2021-09-30 17:03:54 +02:00
Michael Starke
1b04e5cfa2 Disable and enable the UI according to type settings 2021-09-30 17:03:54 +02:00
Michael Starke
8884e61e10 Minor refactoring 2021-09-30 17:03:54 +02:00
Michael Starke
781234ef8c Updated font display 2021-09-30 17:03:54 +02:00
Michael Starke
08a49121b0 Updated visual styles of buttons to look ok on Big Sur 2021-09-30 17:03:54 +02:00
Michael Starke
92592a8049 Added type as change source 2021-09-30 17:03:54 +02:00
Michael Starke
5b6483fdab More layout work for TOTP Setup dialog 2021-09-30 17:03:54 +02:00
Michael Starke
3b4d05f676 Fixed typo in Info.plist. Updated copyright year to 2021 and changed OS X to macOS 2021-09-30 17:03:54 +02:00
Michael Starke
7d5edd1c98 WIP on updating the UI correctly 2021-09-30 17:03:54 +02:00
Michael Starke
5652abfb1e Fixed compiler warnings and typos 2021-09-23 22:23:43 +02:00
Michael Starke
b478b47d3d Fixed typo 2021-09-20 21:05:02 +02:00
Michael Starke
8cc4c2717a Removed tip action since it only runs on linux 2021-08-26 14:22:35 +02:00
Michael Starke
f3815f7fa4 Changed action to push release 2021-08-26 14:12:15 +02:00
Michael Starke
93f6a62bb5 Fixed wrong tag name 2021-08-26 10:27:43 +02:00
Michael Starke
174d9c2650 Added explicit tag name 2021-08-25 16:14:37 +02:00
Michael Starke
0b240d3ade Added tag filter to make releases work 2021-08-25 16:11:22 +02:00
Michael Starke
b30279e42e Update nightly.yml 2021-08-24 18:09:17 +02:00
Michael Starke
ef896468bb Update nightly.yml 2021-08-24 17:53:48 +02:00
Michael Starke
b3ad2df29e Update nightly.yml 2021-08-24 17:38:46 +02:00
Michael Starke
9851a7b4e2 Use switch case. Localise user facing texts 2021-07-22 17:43:17 +02:00
Mirko Caserta
3cfbbb1f16 fixed autofill on big sur for password field (#1125)
Co-authored-by: Michael Starke <nomad@hicknhack.com>
2021-06-17 17:54:44 +02:00
Julius Zint
d1690d76d1 Extracted the logic for storing the encrypted compositekey into a
seperate class
2021-03-14 15:54:42 +01:00
Julius Zint
3c54cd9d7a Code refactoring to implement suggestions from the code review.
Binding the touchIdEnabled Buttons state directly to the userdefaults
value.

Fixed bug that disabled the TouchIdEnabled button on an unsucessfull
TouchId unlock
2021-02-21 12:48:04 +01:00
Julius Zint
4aa812740f Code refactoring to implement suggestions from the code review.
Renamed touchIdEnabled outlet to touchIdEnabledButton in preparation
to bind a variable to the state value.

Used SecKeyCreateRandomKey instead of SecKeyGeneratePair as suggested
by the headers.
2021-02-21 12:04:49 +01:00
Julius Zint
197a4145e8 Code refactoring to implement suggestions from the code review.
The fileURL for the current document does no longer have to be passed
in as a parameter but instead is retreived by accessing the windowControllers
document that hosts the MPPasswordInputController.

_touchIdHandleUnlockAttempt got renamed to _touchIdUpdateKeyForCurrentDocument
to better state its actual purpose and should no longer be called
on unsuccessfull unlock attempts. It also now removes stored keys if the
state of the TouchIdEnabled button has changed.

The key, that is derived from the document, is now the same whether it is
used to store it in the transient dictionary or the userdefaults
2021-02-21 11:27:41 +01:00
Julius Zint
88a5af995e Small layout changes. This prevents the error message overlapping
the TouchID enabled button.
2021-02-14 17:58:06 +01:00
Julius Zint
7b79c0b814 Added tooltip to TouchID enabled button. This is a first attempt
to make it better to understand what the mixed state is all about.
2021-02-14 17:56:29 +01:00
Julius Zint
c5e30a0fa0 The TouchID keypair can no be removed from the macOS keychain
This is a good feature for security and stability. It gives users
the option to prevent TouchID unlock for any previously unlocked
database and it is also helpful in cases where only one part of the
keypair is in the macOS keychain.
2021-02-14 17:40:11 +01:00
Julius Zint
9d058f9d15 Explicitly setting the keychain-access-groups. In these groups Keychain
items can be shared. If left empty, Xcode inserts the AppID prefix with
a wildcard.
2021-02-14 10:00:15 +01:00
Julius Zint
33907e07d6 Removed script buildstep that is no longer needed 2021-02-14 10:00:15 +01:00
Julius Zint
02b3fc2945 Fixed errors while rebasing to latest master 2021-02-14 10:00:15 +01:00
Julius Zint
484b5e4acd Added a flag to support unlocking the database with the apple watch as well as TouchID 2021-02-14 10:00:15 +01:00
Julius Zint
82558936da Fixed typo 2021-02-14 10:00:15 +01:00
Julius Zint
92a120c405 Support for persistent TouchID unlock.
While originally not intended, this changeset enables MacPass to
unlock a database with TouchID even after the process is completly
wiped.

It does this by introducing multiple modes of operation.

First:  TouchId can be completly disabled. The TouchID checkbox is off
        and MacPass works like the TouchID feature had never been added.

Second: The TouchID checkbox gets put into the mixed state. MacPass will now
        remember the database key in memory as long as the process remains
	alive and the database can be unlocked with TouchID until the
	applications terminates.

Third: The TouchID checkbox is checked and MacPass will store the encrypted
       database key on a successfull unlock attempt in the standard
       userdefaults. TouchID unlock works now even after MacPass is completly
       terminated and restarted.
2021-02-14 10:00:15 +01:00
Julius Zint
3fc73a7fd9 Switched Encryption algorithm to support larger message texts.
kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM is now used. Apples CryptoKit makes
it very easy to use asymmetric cryptography to encrypt a symmetric key and with it
encrypt a message. So now the Database key material is no longer directly encrypted
with the asymmetric key but with a randomly generated symmetric one.
2021-02-14 10:00:15 +01:00
Julius Zint
431b636057 Switched to archiving the complete composite key for TouchID unlock 2021-02-14 10:00:15 +01:00
Julius Zint
51bdf12198 MPPasswordInputController completion callback refactoring
Changed the completion callback definition to take a KPKCompositeKey pointer
instead of a password string and keyfile URL. This is a intermedate step to
support key files with TouchID unlock. The next step is to make
KPKCompositeKey conform to the NSCoding protocol. The serialized data can
then be stored instead of the password.
2021-02-14 10:00:15 +01:00
Julius Zint
700dd43282 TouchID unlock is now optional
Added a CheckBox to the PasswordInput view, so the user can see and
manipulate, whether the TouchID feature is enabled or disabled. The
choice is remembered in the standard user defaults.
2021-02-14 10:00:15 +01:00
Julius Zint
5157ec823f Enables TouchID unlock for multiple Database files.
This changeset adds the optional fileURL parameter to the
requestPasswordWithMessage function in MPPasswordInputController.
The controller uses this URL as a key to store the encrypted
masterpassword in a dictionary.

In my opinion edge cases like when a file is moved or replaced
do not have to get special handling since the worst case scenario
is that TouchID unlock does not work and users have still the
option to unlock with the masterpassword.

Also this changeset removes the unused
requestPasswordWithCompletionHandler function
2021-02-14 10:00:15 +01:00
Julius Zint
94956a673b fixed typos 2021-02-14 10:00:15 +01:00
Julius Zint
4e56740577 Added necessary entitlement and additional buildstep
Enabled the "Keychain Sharing" Entitlement that is required for
the Keychain APIs to work properly.

The additional buildstep signs the KissXML.framework nested inside
the KeePassKit.framework before this Framework itself is signed and
embedded. This is necessary because, to my knowledge, Xcode does not
support signing nested frameworks.
2021-02-14 10:00:15 +01:00
Julius Zint
a7b8be1886 TouchID unlock Feature for MacPass.
To use it a user must first enter the correct password for the database.
If the unlock succeeds, the supplied password is encrypted with the public
part of a RSA keypair. On subsequent unlocks a TouchID button appears. If
clicked, MacPass queries the Keychain for the private key part and uses it to
decrypt the previously supplied password and tries to unlock the database
with it.
2021-02-14 10:00:15 +01:00
Michael Starke
4addd907d4 Directly set cell class for HNUISecureTextField 2021-02-10 20:21:20 +01:00