]> git.saurik.com Git - apple/security.git/blob - keychain/trust/TrustedPeers/TPCircle.h
Security-58286.41.2.tar.gz
[apple/security.git] / keychain / trust / TrustedPeers / TPCircle.h
1 /*
2 * Copyright (c) 2017 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24 #import <Foundation/Foundation.h>
25
26 NS_ASSUME_NONNULL_BEGIN
27
28 /*!
29 A "circle" identifies a set of peers that should be included and
30 a set of peers that should be excluded from trust membership.
31
32 This class is a value type -- its members are immutable and
33 instances with identical contents are interchangeable.
34 It overrides isEqual and hash, so that two instances with
35 identical contents will compare as equal.
36 */
37 @interface TPCircle : NSObject
38
39 @property (nonatomic, readonly) NSString *circleID;
40 @property (nonatomic, readonly) NSSet<NSString*>* includedPeerIDs;
41 @property (nonatomic, readonly) NSSet<NSString*>* excludedPeerIDs;
42
43 /*!
44 A convenience for allocating and initializing an instance from array literals.
45 */
46 + (instancetype)circleWithIncludedPeerIDs:(nullable NSArray<NSString*> *)includedPeerIDs
47 excludedPeerIDs:(nullable NSArray<NSString*> *)excludedPeerIDs;
48
49 /*!
50 A convenience for checking a provided circleID. Returns nil if it does not match.
51 */
52 + (nullable instancetype)circleWithID:(NSString *)circleID
53 includedPeerIDs:(nullable NSArray<NSString*> *)includedPeerIDs
54 excludedPeerIDs:(nullable NSArray<NSString*> *)excludedPeerIDs;
55
56 /*!
57 Construct a circle that includes a set of peer IDs and excludes a set of peer IDs.
58 */
59 - (instancetype)initWithIncludedPeerIDs:(NSSet<NSString*> *)includedPeerIDs
60 excludedPeerIDs:(NSSet<NSString*> *)excludedPeerIDs;
61
62 - (BOOL)isEqualToCircle:(TPCircle *)other;
63
64 @end
65
66 NS_ASSUME_NONNULL_END