/ keychain / tppolicy / main.m
main.m
 1  //
 2  //  main.m
 3  //  tppolicy
 4  //
 5  //  Created by Ben Williamson on 7/13/18.
 6  //
 7  
 8  #import <Foundation/Foundation.h>
 9  #import <TrustedPeers/TrustedPeers.h>
10  
11  int main(int argc, const char * argv[])
12  {
13      NSArray<TPPolicyDocument*> *docs
14      = @[
15          [TPPolicyDocument policyDocumentWithVersion:1
16                                      modelToCategory:@[
17                                                        @{ @"prefix": @"iPhone",  @"category": @"full" },
18                                                        @{ @"prefix": @"iPad",    @"category": @"full" },
19                                                        @{ @"prefix": @"Mac",     @"category": @"full" },
20                                                        @{ @"prefix": @"iMac",    @"category": @"full" },
21                                                        @{ @"prefix": @"AppleTV", @"category": @"tv" },
22                                                        @{ @"prefix": @"Watch",   @"category": @"watch" },
23                                                        ]
24                                     categoriesByView:@{
25                                                        @"WiFi":              @[ @"full", @"tv", @"watch" ],
26                                                        @"SafariCreditCards": @[ @"full" ],
27                                                        @"PCSEscrow":         @[ @"full" ]
28                                                        }
29                                introducersByCategory:@{
30                                                        @"full":  @[ @"full" ],
31                                                        @"tv":    @[ @"full", @"tv" ],
32                                                        @"watch": @[ @"full", @"watch" ]
33                                                        }
34                                           redactions:@{}
35                                       keyViewMapping:@[]
36                                             hashAlgo:kTPHashAlgoSHA256],
37          [TPPolicyDocument policyDocumentWithVersion:2
38                                      modelToCategory:@[
39                                                        @{ @"prefix": @"iCycle",  @"category": @"full" }, // new
40                                                        @{ @"prefix": @"iPhone",  @"category": @"full" },
41                                                        @{ @"prefix": @"iPad",    @"category": @"full" },
42                                                        @{ @"prefix": @"Mac",     @"category": @"full" },
43                                                        @{ @"prefix": @"iMac",    @"category": @"full" },
44                                                        @{ @"prefix": @"AppleTV", @"category": @"tv" },
45                                                        @{ @"prefix": @"Watch",   @"category": @"watch" },
46                                                        ]
47                                     categoriesByView:@{
48                                                        @"WiFi":              @[ @"full", @"tv", @"watch" ],
49                                                        @"SafariCreditCards": @[ @"full" ],
50                                                        @"PCSEscrow":         @[ @"full" ]
51                                                        }
52                                introducersByCategory:@{
53                                                        @"full":  @[ @"full" ],
54                                                        @"tv":    @[ @"full", @"tv" ],
55                                                        @"watch": @[ @"full", @"watch" ]
56                                                        }
57                                           redactions:@{}
58                                       keyViewMapping:@[]
59                                             hashAlgo:kTPHashAlgoSHA256],
60          [TPPolicyDocument policyDocumentWithVersion:3
61                                      modelToCategory:@[
62                                                        @{ @"prefix": @"Watch7", @"category": @"full" }, // upgraded
63                                                        @{ @"prefix": @"iCycle",  @"category": @"full" },
64                                                        @{ @"prefix": @"iPhone",  @"category": @"full" },
65                                                        @{ @"prefix": @"iPad",    @"category": @"full" },
66                                                        @{ @"prefix": @"Mac",     @"category": @"full" },
67                                                        @{ @"prefix": @"iMac",    @"category": @"full" },
68                                                        @{ @"prefix": @"AppleTV", @"category": @"tv" },
69                                                        @{ @"prefix": @"Watch",   @"category": @"watch" },
70                                                        ]
71                                     categoriesByView:@{
72                                                        @"WiFi":              @[ @"full", @"tv", @"watch" ],
73                                                        @"SafariCreditCards": @[ @"full" ],
74                                                        @"PCSEscrow":         @[ @"full" ]
75                                                        }
76                                introducersByCategory:@{
77                                                        @"full":  @[ @"full" ],
78                                                        @"tv":    @[ @"full", @"tv" ],
79                                                        @"watch": @[ @"full", @"watch" ]
80                                                        }
81                                           redactions:@{}
82                                       keyViewMapping:@[]
83                                             hashAlgo:kTPHashAlgoSHA256],
84          ];
85  
86      for (TPPolicyDocument *doc in docs) {
87          NSString *base64 = [doc.protobuf base64EncodedStringWithOptions:0];
88          printf("policyVersion: %llu,\n", doc.policyVersion);
89          printf("policyHash: \"%s\",\n", doc.policyHash.UTF8String);
90          printf("policyData: \"%s\"\n", base64.UTF8String);
91      }
92      return 0;
93  }