Skip to content

Commit e658a73

Browse files
1.48.3 - Have I Been Pwned - Audit
1 parent 2d8f0d6 commit e658a73

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+9589
-270
lines changed
File renamed without changes.
File renamed without changes.

ConcurrentMutableSet.h

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// ConcurrentMutableSet.h
3+
// Strongbox
4+
//
5+
// Created by Strongbox on 02/05/2020.
6+
// Copyright © 2020 Mark McGuill. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface ConcurrentMutableSet<ObjectType> : NSObject
14+
15+
+ (instancetype)mutableSet;
16+
- (void)addObject:(ObjectType)object;
17+
18+
- (void)addObjectsFromArray:(NSArray<ObjectType>*)array;
19+
- (void)removeObject:(ObjectType)object;
20+
- (NSSet<ObjectType>*)snapshot;
21+
- (NSArray<ObjectType>*)arraySnapshot;
22+
23+
- (NSUInteger)count;
24+
- (BOOL)containsObject:(ObjectType)object;
25+
26+
@property (readonly, nullable) id anyObject;
27+
28+
@end
29+
30+
NS_ASSUME_NONNULL_END

ConcurrentMutableSet.m

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
//
2+
// ConcurrentMutableSet.m
3+
// Strongbox
4+
//
5+
// Created by Strongbox on 02/05/2020.
6+
// Copyright © 2020 Mark McGuill. All rights reserved.
7+
//
8+
9+
#import "ConcurrentMutableSet.h"
10+
11+
@interface ConcurrentMutableSet ()
12+
13+
@property (strong, nonatomic) NSMutableSet *data;
14+
@property (strong, nonatomic) dispatch_queue_t dataQueue;
15+
16+
@end
17+
18+
@implementation ConcurrentMutableSet // Multiple Readers, Serialized Writes
19+
20+
+ (instancetype)mutableSet {
21+
return [[ConcurrentMutableSet alloc] init];
22+
}
23+
24+
- (instancetype)init
25+
{
26+
self = [super init];
27+
if (self) {
28+
self.data = NSMutableSet.set;
29+
self.dataQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_CONCURRENT);
30+
}
31+
return self;
32+
}
33+
34+
- (void)addObject:(id)object {
35+
dispatch_barrier_async(self.dataQueue, ^{ // Serialized Write with Barrier
36+
[self.data addObject:object];
37+
});
38+
}
39+
40+
- (void)addObjectsFromArray:(NSArray*)array {
41+
dispatch_barrier_async(self.dataQueue, ^{ // Serialized Write with Barrier
42+
[self.data addObjectsFromArray:array];
43+
});
44+
}
45+
46+
- (void)removeObject:(id)object {
47+
dispatch_barrier_async(self.dataQueue, ^{ // Serialized Write with Barrier
48+
[self.data removeObject:object];
49+
});
50+
}
51+
52+
- (NSSet*)snapshot {
53+
__block NSSet *result;
54+
55+
dispatch_sync(self.dataQueue, ^{ // Multiple concurrent readers fine no need for barrier
56+
result = self.data.copy;
57+
});
58+
59+
return result;
60+
}
61+
62+
- (NSArray*)arraySnapshot {
63+
__block NSArray *result;
64+
65+
dispatch_sync(self.dataQueue, ^{ // Multiple concurrent readers fine no need for barrier
66+
result = self.data.allObjects.copy;
67+
});
68+
69+
return result;
70+
}
71+
72+
- (NSUInteger)count {
73+
__block NSUInteger result;
74+
75+
dispatch_sync(self.dataQueue, ^{ // Multiple concurrent readers fine no need for barrier
76+
result = self.data.count;
77+
});
78+
79+
return result;
80+
}
81+
82+
- (id)anyObject {
83+
__block id result;
84+
85+
dispatch_sync(self.dataQueue, ^{ // Multiple concurrent readers fine no need for barrier
86+
result = self.data.anyObject;
87+
});
88+
89+
return result;
90+
}
91+
92+
- (BOOL)containsObject:(id)object {
93+
__block BOOL result;
94+
95+
dispatch_sync(self.dataQueue, ^{ // Multiple concurrent readers fine no need for barrier
96+
result = [self.data containsObject:object];
97+
});
98+
99+
return result;
100+
}
101+
102+
@end

Gemfile.lock

+179
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
CFPropertyList (2.3.6)
5+
addressable (2.7.0)
6+
public_suffix (>= 2.0.2, < 5.0)
7+
atomos (0.1.3)
8+
aws-eventstream (1.1.0)
9+
aws-partitions (1.304.0)
10+
aws-sdk-core (3.94.0)
11+
aws-eventstream (~> 1, >= 1.0.2)
12+
aws-partitions (~> 1, >= 1.239.0)
13+
aws-sigv4 (~> 1.1)
14+
jmespath (~> 1.0)
15+
aws-sdk-kms (1.30.0)
16+
aws-sdk-core (~> 3, >= 3.71.0)
17+
aws-sigv4 (~> 1.1)
18+
aws-sdk-s3 (1.63.0)
19+
aws-sdk-core (~> 3, >= 3.83.0)
20+
aws-sdk-kms (~> 1)
21+
aws-sigv4 (~> 1.1)
22+
aws-sigv4 (1.1.3)
23+
aws-eventstream (~> 1.0, >= 1.0.2)
24+
babosa (1.0.3)
25+
claide (1.0.3)
26+
colored (1.2)
27+
colored2 (3.1.2)
28+
commander-fastlane (4.4.6)
29+
highline (~> 1.7.2)
30+
declarative (0.0.10)
31+
declarative-option (0.1.0)
32+
digest-crc (0.5.1)
33+
domain_name (0.5.20190701)
34+
unf (>= 0.0.5, < 1.0.0)
35+
dotenv (2.7.5)
36+
emoji_regex (1.0.1)
37+
excon (0.73.0)
38+
faraday (0.17.3)
39+
multipart-post (>= 1.2, < 3)
40+
faraday-cookie_jar (0.0.6)
41+
faraday (>= 0.7.4)
42+
http-cookie (~> 1.0.0)
43+
faraday_middleware (0.13.1)
44+
faraday (>= 0.7.4, < 1.0)
45+
fastimage (2.1.7)
46+
fastlane (2.146.1)
47+
CFPropertyList (>= 2.3, < 4.0.0)
48+
addressable (>= 2.3, < 3.0.0)
49+
aws-sdk-s3 (~> 1.0)
50+
babosa (>= 1.0.2, < 2.0.0)
51+
bundler (>= 1.12.0, < 3.0.0)
52+
colored
53+
commander-fastlane (>= 4.4.6, < 5.0.0)
54+
dotenv (>= 2.1.1, < 3.0.0)
55+
emoji_regex (>= 0.1, < 2.0)
56+
excon (>= 0.71.0, < 1.0.0)
57+
faraday (~> 0.17)
58+
faraday-cookie_jar (~> 0.0.6)
59+
faraday_middleware (~> 0.13.1)
60+
fastimage (>= 2.1.0, < 3.0.0)
61+
gh_inspector (>= 1.1.2, < 2.0.0)
62+
google-api-client (>= 0.29.2, < 0.37.0)
63+
google-cloud-storage (>= 1.15.0, < 2.0.0)
64+
highline (>= 1.7.2, < 2.0.0)
65+
json (< 3.0.0)
66+
jwt (~> 2.1.0)
67+
mini_magick (>= 4.9.4, < 5.0.0)
68+
multi_xml (~> 0.5)
69+
multipart-post (~> 2.0.0)
70+
plist (>= 3.1.0, < 4.0.0)
71+
public_suffix (~> 2.0.0)
72+
rubyzip (>= 1.3.0, < 2.0.0)
73+
security (= 0.1.3)
74+
simctl (~> 1.6.3)
75+
slack-notifier (>= 2.0.0, < 3.0.0)
76+
terminal-notifier (>= 2.0.0, < 3.0.0)
77+
terminal-table (>= 1.4.5, < 2.0.0)
78+
tty-screen (>= 0.6.3, < 1.0.0)
79+
tty-spinner (>= 0.8.0, < 1.0.0)
80+
word_wrap (~> 1.0.0)
81+
xcodeproj (>= 1.13.0, < 2.0.0)
82+
xcpretty (~> 0.3.0)
83+
xcpretty-travis-formatter (>= 0.0.3)
84+
gh_inspector (1.1.3)
85+
google-api-client (0.36.4)
86+
addressable (~> 2.5, >= 2.5.1)
87+
googleauth (~> 0.9)
88+
httpclient (>= 2.8.1, < 3.0)
89+
mini_mime (~> 1.0)
90+
representable (~> 3.0)
91+
retriable (>= 2.0, < 4.0)
92+
signet (~> 0.12)
93+
google-cloud-core (1.5.0)
94+
google-cloud-env (~> 1.0)
95+
google-cloud-errors (~> 1.0)
96+
google-cloud-env (1.3.1)
97+
faraday (>= 0.17.3, < 2.0)
98+
google-cloud-errors (1.0.0)
99+
google-cloud-storage (1.26.0)
100+
addressable (~> 2.5)
101+
digest-crc (~> 0.4)
102+
google-api-client (~> 0.33)
103+
google-cloud-core (~> 1.2)
104+
googleauth (~> 0.9)
105+
mini_mime (~> 1.0)
106+
googleauth (0.12.0)
107+
faraday (>= 0.17.3, < 2.0)
108+
jwt (>= 1.4, < 3.0)
109+
memoist (~> 0.16)
110+
multi_json (~> 1.11)
111+
os (>= 0.9, < 2.0)
112+
signet (~> 0.14)
113+
highline (1.7.10)
114+
http-cookie (1.0.3)
115+
domain_name (~> 0.5)
116+
httpclient (2.8.3)
117+
jmespath (1.4.0)
118+
json (2.1.0)
119+
jwt (2.1.0)
120+
memoist (0.16.2)
121+
mini_magick (4.10.1)
122+
mini_mime (1.0.2)
123+
multi_json (1.14.1)
124+
multi_xml (0.6.0)
125+
multipart-post (2.0.0)
126+
nanaimo (0.2.6)
127+
naturally (2.2.0)
128+
os (1.1.0)
129+
plist (3.5.0)
130+
public_suffix (2.0.5)
131+
representable (3.0.4)
132+
declarative (< 0.1.0)
133+
declarative-option (< 0.2.0)
134+
uber (< 0.2.0)
135+
retriable (3.1.2)
136+
rouge (2.0.7)
137+
rubyzip (1.3.0)
138+
security (0.1.3)
139+
signet (0.14.0)
140+
addressable (~> 2.3)
141+
faraday (>= 0.17.3, < 2.0)
142+
jwt (>= 1.5, < 3.0)
143+
multi_json (~> 1.10)
144+
simctl (1.6.8)
145+
CFPropertyList
146+
naturally
147+
slack-notifier (2.3.2)
148+
terminal-notifier (2.0.0)
149+
terminal-table (1.8.0)
150+
unicode-display_width (~> 1.1, >= 1.1.1)
151+
tty-cursor (0.7.1)
152+
tty-screen (0.7.1)
153+
tty-spinner (0.9.3)
154+
tty-cursor (~> 0.7)
155+
uber (0.1.0)
156+
unf (0.1.4)
157+
unf_ext
158+
unf_ext (0.0.7.7)
159+
unicode-display_width (1.7.0)
160+
word_wrap (1.0.0)
161+
xcodeproj (1.13.0)
162+
CFPropertyList (>= 2.3.3, < 4.0)
163+
atomos (~> 0.1.3)
164+
claide (>= 1.0.2, < 2.0)
165+
colored2 (~> 3.1)
166+
nanaimo (~> 0.2.6)
167+
xcpretty (0.3.0)
168+
rouge (~> 2.0.7)
169+
xcpretty-travis-formatter (1.0.0)
170+
xcpretty (~> 0.2, >= 0.0.7)
171+
172+
PLATFORMS
173+
ruby
174+
175+
DEPENDENCIES
176+
fastlane
177+
178+
BUNDLED WITH
179+
1.17.2

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ Another great project is KeeWeb, a fully javascript based client which works cro
9292
https://github.com/keeweb/keeweb
9393
https://keeweb.info/
9494

95+
** Have I Been Pwned **
96+
The ['Have I Been Pwned?'](https://haveibeenpwned.com/) service is provided by Troy Hunt. Strongbox uses the Pwned Passwords API there. Many thanks for some amazing work. Please consider donating to him to keep the service running [here](https://haveibeenpwned.com/Donate).
97+
9598
I use many different libraries in the app here are just a few:
9699

97100
- Dropbox-iOS-SDK

StrongBox Auto Fill/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<key>CFBundlePackageType</key>
1818
<string>XPC!</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>$(MARKETING_VERSION)</string>
20+
<string>1.48.3</string>
2121
<key>CFBundleURLTypes</key>
2222
<array>
2323
<dict>
@@ -30,7 +30,7 @@
3030
</dict>
3131
</array>
3232
<key>CFBundleVersion</key>
33-
<string>$(CURRENT_PROJECT_VERSION)</string>
33+
<string>2903</string>
3434
<key>NSAppTransportSecurity</key>
3535
<dict>
3636
<key>NSAllowsArbitraryLoads</key>

StrongBox.xcworkspace/contents.xcworkspacedata

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

StrongBox/About.rtf

+21-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
{\rtf1\ansi\ansicpg1252\cocoartf2511
2-
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
3-
{\colortbl;\red255\green255\blue255;}
4-
{\*\expandedcolortbl;;}
1+
{\rtf1\ansi\ansicpg1252\cocoartf2512
2+
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\froman\fcharset0 Times-Roman;
3+
}
4+
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
5+
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
56
\paperw11900\paperh16840\margl1440\margr1440\vieww16720\viewh12740\viewkind0
67
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\qc\partightenfactor0
78

@@ -44,7 +45,15 @@ Ukrainian - Artem Polivanchuk\
4445
\f0\b \cf0 Third Party Kudos
4546
\f1\b0 \
4647
==================\
47-
Strongbox uses a number of third party libraries, resources and components. \
48+
Strongbox uses a number of third party libraries, resources, services and components. \
49+
\
50+
51+
\f0\b Have I Been Pwned?
52+
\f1\b0 \
53+
The 'Have I Been Pwned?' service is provided by Troy Hunt. Strongbox uses the Pwned Passwords API there. Many thanks for some amazing work. Please consider donating to him to keep the service running [here](https://haveibeenpwned.com/Donate).\
54+
\
55+
https://haveibeenpwned.com/\
56+
\
4857
\
4958

5059
\f0\b Google Drive
@@ -166,4 +175,10 @@ Unless required by applicable law or agreed to in writing, software\
166175
distributed under the License is distributed on an "AS IS" BASIS,\
167176
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\
168177
See the License for the specific language governing permissions and\
169-
limitations under the License.}
178+
limitations under the License.\
179+
\
180+
Norwegian Diceware Wordlist\
181+
\pard\pardeftab720\partightenfactor0
182+
183+
\f2 \cf2 \expnd0\expndtw0\kerning0
184+
Willy T. Koch under a CC-BY license}

0 commit comments

Comments
 (0)