Giter VIP home page Giter VIP logo

keepasskit's Introduction

KeePassKit

Build Status CI Carthage compatible

KeePass database loading, storing and manipulation framework. It's inspired by MiniKeePass and KeePass Database Library but has diverged a lot over the development.

Contributors

Chester Liu Jordan Sechler Maxime Epain

License

KeePassKit - Cocoa KeePass Library Copyright (c) 2012-2016 Michael Starke, HicknHack Software GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

References

KeePassKit uses code from the following projects

Argon2 Copyright (c) 2015 Daniel Dinu, Dmitry Khovratovich (main authors), Jean-Philippe Aumasson and Samuel Neves

ChaCha20 Simple Copyright (c) 2014 insane coder (http://insanecoding.blogspot.com/, http://chacha20.insanecoding.org/)

Twofish Copyright (c) 2002 by Niels Ferguson.

KissXML Copyright (c) 2012 Robbie Hanson. All rights reserved.

MiniKeePass Copyright (c) 2011 Jason Rush and John Flanagan. All rights reserved.

KeePass Database Library Copyright (c) 2010 Qiang Yu. All rights reserved.

KeepassX Copyright (c) 2012 Felix Geyer [email protected]

NSData Gzip Category from the CocoaDev Wiki

NSData CommonCrypto Category Copyright (c) 2008-2009 Jim Dovey, All rights reserved.

keepasskit's People

Contributors

jordansekky avatar maxep avatar mstarke avatar skyline75489 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keepasskit's Issues

Support for iOS, tvOS & watchOS

The core functionality of this library should be highly portable to all these Apple platforms. Is there any plan to support other platforms? I tried to make it compatible with iOS and found that some AppKit-specified API are not available. But this shouldn't be too hard a problem as you can find the replacement in UIKit.

  • Data type
  • NSColor and UIColor
  • NSPasteboardwriting/NSPasteboardreading
  • Other Cocoa things

Running "carthage bootstrap"

Hi

I just added this package (as the only one), to a fresh Carthage file ("Cartfile"), and got the following error:

Build Failed
	Task failed with exit code 65:
	/usr/bin/xcrun xcodebuild -project /Users/nikolaj/code/Apollo\ KeePass/Carthage/Checkouts/KissXML/KissXML.xcodeproj -scheme KissXML\ (iOS) -configuration Release -derivedDataPath /Users/nikolaj/Library/Caches/org.carthage.CarthageKit/DerivedData/14.3.1_14E300c/KissXML/933f04fe5ad95c2be07ec0c2f801e140007f20fa -sdk iphoneos ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES archive VALIDATE_WORKSPACE=NO -archivePath /var/folders/xs/ypmj3ymn26x6v0l9br5y_8nm0000gn/T/KissXML SKIP_INSTALL=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO CLANG_ENABLE_CODE_COVERAGE=NO STRIP_INSTALLED_PRODUCT=NO (launched in /Users/nikolaj/code/Apollo KeePass/Carthage/Checkouts/KissXML)

This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/xs/ypmj3ymn26x6v0l9br5y_8nm0000gn/T/carthage-xcodebuild.9hwA7V.log

Am I doing something wrong, or?

Also are there plans to add the ability to add this via Swift Package Manager?

Verify HeaderHash

IO/KPKXmlTreeReader.m doesn't seem to verify if HeaderHash matches the header of the database.

However this is an important security feature as it prevents an attacker (or just a transmission error) from silently corrupting the passwords in the database.

Window associations containing reg-exp strings lead to wrong matching

Observed Behaviour

Window Associations matching is done by converting the title to a regular expression. This will yield undesired behaviour if reg-ex characters are inside the title.

See:

- (void)_updateRegularExpression {
if(_regularExpressionValid) {
return;
}
NSString *pattern;
if([self.windowTitle hasPrefix:@"//"] && [self.windowTitle hasSuffix:@"//"]) {
pattern = [self.windowTitle substringWithRange:NSMakeRange(2, self.windowTitle.length - 4)];
}
else {
NSString *regEx = [self.windowTitle stringByReplacingOccurrencesOfString:@"*" withString:@".*" options:NSCaseInsensitiveSearch range:NSMakeRange(0, self.windowTitle.length)];
/* ensure that the regex matches exactly */
pattern = [NSString stringWithFormat:@"^%@$", regEx];
}
NSError *error;
self.windowTitleRegularExpression = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
if(self.windowTitleRegularExpression) {
_regularExpressionValid = YES;
}
else {
NSLog(@"Error while trying to evaluate regular expression %@: %@", pattern, error.localizedDescription);
}
}

Proposed Fix

Only convert reg-ex and wildcard matching titles to regular expressions and mask out portential reg-ex characters to ensure only the wildcard * is converted to .*

IOS: add binary crash.

I add photo to my entry as an attachment!

let binary = KPKBinary(name: name, data: data)
entry.addBinary(attachment)

when save tree. It crash at self.tree!.encryp!

KeePassKit fails to compile

I checked out a copy of your MacPass project and the KeePassKit submodule fails to compile for me. I'm getting a Property 'key' not found on object of type 'KPKBinary *' on line 669 of KPKEntry.m which is odd to me because that line was added way back in 2013. Seems like there's a name property on the KPKBinary object, but not a key property, unless I'm doing just doing something wrong?

Custom Placeholder Support

KeePassKit might not know all placeholders. It should be possible for users of KeePassKit to resolve unknown placeholders.

Add support for Argon2id key derivation

The release of KeePass 2.47 as well as KeePassXC 2.6.3 there is support to use Argon2id key derivation functions. This needs to be added to KeePassKit to stay compatible

kdbx 4 reference date wrong ?

I have check keepass, keeweb and keepassxc. I found the creation time is not same with macpass with kdbx 4. There are two days interval. I found macpass refer to 0001-01-01 00:00 UTC.

I have check the kdbx 4 page. It said as below.

In encrypted KDBX 4 files (not in plaintext XML exports), all times are now stored as Base64 string of the Int64 number of seconds elapsed since 0001-01-01 00:00 UTC. This improves the performance and reduces the file size.

I think macpass is right.

So I read other clients code. I found Keeweb, keepass and so on, They refer to 0001-01-03 00:00 UTC. I don't know the reason. It doesn't write as the kdbx 4 page. I really think it's the keepass bug. But why keeweb also create the bug?

And now when I use macpass, I can't merge the change from other client.

Wish your reply!

Too much memory used.

When I unlock a 4M kdbx file, it use 100M memory. Why does 4M file need 100M Memory. I try to use auto @autoreleasepool to optimize the momery. But It lead to crash.

How can I optimize the momery. Do you have any idea?

Hope your reply. Thansk.

setProtectPassword usage

I'm implementing KeePassKit into an iOS app so that users can create KDBX files and export them. I'm a bit new to KeePass in general. I noticed the setProtectPassword function

- (void)setProtectPassword:(BOOL)protectPassword {
but I'm not sure how to call it. It seems important, however. How do I call it and what does it do?

Synchronization lacks support for merging KDB files

KDB files do not store UUIDs for Groups. This leads to a duplication of groups on every load when a file need to be synchronised.

A workaround would be to store UUIDs inside a special structure or add them to the Notes for Groups.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.