keepassx 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +30 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +64 -0
- data/.travis.yml +12 -3
- data/Gemfile +4 -2
- data/Guardfile +16 -0
- data/LICENSE +19 -0
- data/README.md +33 -0
- data/Rakefile +3 -2
- data/keepassx.gemspec +20 -10
- data/lib/keepassx.rb +42 -3
- data/lib/keepassx/aes_crypt.rb +16 -6
- data/lib/keepassx/database.rb +218 -27
- data/lib/keepassx/database/dumper.rb +87 -0
- data/lib/keepassx/database/finder.rb +102 -0
- data/lib/keepassx/database/loader.rb +217 -0
- data/lib/keepassx/entry.rb +70 -38
- data/lib/keepassx/field/base.rb +191 -0
- data/lib/keepassx/field/entry.rb +32 -0
- data/lib/keepassx/field/group.rb +27 -0
- data/lib/keepassx/fieldable.rb +161 -0
- data/lib/keepassx/group.rb +93 -20
- data/lib/keepassx/hashable_payload.rb +6 -0
- data/lib/keepassx/header.rb +102 -27
- data/lib/keepassx/version.rb +5 -0
- data/spec/factories.rb +23 -0
- data/spec/fixtures/database_empty.kdb +0 -0
- data/spec/fixtures/database_test.kdb +0 -0
- data/spec/fixtures/database_test_dumped.yml +76 -0
- data/spec/fixtures/database_with_key.kdb +0 -0
- data/spec/fixtures/database_with_key.key +1 -0
- data/spec/fixtures/database_with_key2.key +1 -0
- data/spec/fixtures/test_data_array.yml +113 -0
- data/spec/fixtures/test_data_array_dumped.yml +124 -0
- data/spec/keepassx/database_spec.rb +491 -29
- data/spec/keepassx/entry_spec.rb +95 -0
- data/spec/keepassx/group_spec.rb +92 -0
- data/spec/keepassx_spec.rb +17 -0
- data/spec/spec_helper.rb +59 -3
- metadata +143 -69
- data/.rvmrc +0 -1
- data/Gemfile.lock +0 -28
- data/lib/keepassx/entry_field.rb +0 -49
- data/lib/keepassx/group_field.rb +0 -44
- data/spec/test_database.kdb +0 -0
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.8.7-p249@keepassx --create
|
data/Gemfile.lock
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
keepassx (0.1.0)
|
5
|
-
fast-aes (~> 0.1)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
diff-lcs (1.1.3)
|
11
|
-
fast-aes (0.1.1)
|
12
|
-
rake (0.8.7)
|
13
|
-
rspec (2.11.0)
|
14
|
-
rspec-core (~> 2.11.0)
|
15
|
-
rspec-expectations (~> 2.11.0)
|
16
|
-
rspec-mocks (~> 2.11.0)
|
17
|
-
rspec-core (2.11.1)
|
18
|
-
rspec-expectations (2.11.3)
|
19
|
-
diff-lcs (~> 1.1.3)
|
20
|
-
rspec-mocks (2.11.3)
|
21
|
-
|
22
|
-
PLATFORMS
|
23
|
-
ruby
|
24
|
-
|
25
|
-
DEPENDENCIES
|
26
|
-
keepassx!
|
27
|
-
rake (= 0.8.7)
|
28
|
-
rspec (= 2.11.0)
|
data/lib/keepassx/entry_field.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
module Keepassx
|
2
|
-
class EntryField
|
3
|
-
FIELD_TYPES = [
|
4
|
-
[0x0, 'ignored', :null],
|
5
|
-
[0x1, 'uuid', :ascii],
|
6
|
-
[0x2, 'groupid', :int],
|
7
|
-
[0x3, 'imageid', :int],
|
8
|
-
[0x4, 'title', :string],
|
9
|
-
[0x5, 'url', :string],
|
10
|
-
[0x6, 'username', :string],
|
11
|
-
[0x7, 'password', :string],
|
12
|
-
[0x8, 'notes', :string],
|
13
|
-
[0x9, 'creation_time', :date],
|
14
|
-
[0xa, 'last_mod_time', :date],
|
15
|
-
[0xb, 'last_acc_time', :date],
|
16
|
-
[0xc, 'expiration_time', :date],
|
17
|
-
[0xd, 'binary_desc', :string],
|
18
|
-
[0xe, 'binary_data', :shunt],
|
19
|
-
[0xFFFF, 'terminator', :nil]
|
20
|
-
]
|
21
|
-
FIELD_TERMINATOR = 0xFFFF
|
22
|
-
TYPE_CODE_FIELD_SIZE = 2 # unsigned short integer
|
23
|
-
DATA_LENGTH_FIELD_SIZE = 4 # unsigned integer
|
24
|
-
|
25
|
-
|
26
|
-
attr_reader :name, :data_type, :data
|
27
|
-
|
28
|
-
def initialize(payload)
|
29
|
-
type_code, @data_length = payload.read(TYPE_CODE_FIELD_SIZE + DATA_LENGTH_FIELD_SIZE).unpack('SI')
|
30
|
-
@name, @data_type = _parse_type_code(type_code)
|
31
|
-
@data = payload.read(@data_length)
|
32
|
-
end
|
33
|
-
|
34
|
-
def terminator?
|
35
|
-
name == 'terminator'
|
36
|
-
end
|
37
|
-
|
38
|
-
def length
|
39
|
-
TYPE_CODE_FIELD_SIZE + DATA_LENGTH_FIELD_SIZE + @data_length
|
40
|
-
end
|
41
|
-
|
42
|
-
def _parse_type_code(type_code)
|
43
|
-
(_, name, data_type) = FIELD_TYPES.detect do |(code, *rest)|
|
44
|
-
code == type_code
|
45
|
-
end
|
46
|
-
[name, data_type]
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
data/lib/keepassx/group_field.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Keepassx
|
2
|
-
class GroupField
|
3
|
-
FIELD_TYPES = [
|
4
|
-
[0x0, 'ignored', :null],
|
5
|
-
[0x1, 'groupid', :int],
|
6
|
-
[0x2, 'group_name', :string],
|
7
|
-
[0x3, 'creation_time', :date],
|
8
|
-
[0x4, 'lastmod_time', :date],
|
9
|
-
[0x5, 'lastacc_time', :date],
|
10
|
-
[0x6, 'expire_time', :date],
|
11
|
-
[0x7, 'imageid', :int],
|
12
|
-
[0x8, 'level', :short],
|
13
|
-
[0x9, 'flags', :int],
|
14
|
-
[0xFFFF, 'terminator', :null]
|
15
|
-
]
|
16
|
-
FIELD_TERMINATOR = 0xFFFF
|
17
|
-
TYPE_CODE_FIELD_SIZE = 2 # unsigned short integer
|
18
|
-
DATA_LENGTH_FIELD_SIZE = 4 # unsigned integer
|
19
|
-
|
20
|
-
|
21
|
-
attr_reader :name, :data_type, :data
|
22
|
-
|
23
|
-
def initialize(payload)
|
24
|
-
type_code, @data_length = payload.read(TYPE_CODE_FIELD_SIZE + DATA_LENGTH_FIELD_SIZE).unpack('SI')
|
25
|
-
@name, @data_type = _parse_type_code(type_code)
|
26
|
-
@data = payload.read(@data_length)
|
27
|
-
end
|
28
|
-
|
29
|
-
def terminator?
|
30
|
-
name == 'terminator'
|
31
|
-
end
|
32
|
-
|
33
|
-
def length
|
34
|
-
TYPE_CODE_FIELD_SIZE + DATA_LENGTH_FIELD_SIZE + @data_length
|
35
|
-
end
|
36
|
-
|
37
|
-
def _parse_type_code(type_code)
|
38
|
-
(_, name, data_type) = FIELD_TYPES.detect do |(code, *rest)|
|
39
|
-
code == type_code
|
40
|
-
end
|
41
|
-
[name, data_type]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/spec/test_database.kdb
DELETED
Binary file
|