1+ %hook SSOKeychain
2+ + (id )accessGroup {
3+ NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
4+ (__bridge NSString *)kSecClassGenericPassword , (__bridge NSString *)kSecClass ,
5+ @" bundleSeedID" , kSecAttrAccount ,
6+ @" " , kSecAttrService ,
7+ (id )kCFBooleanTrue , kSecReturnAttributes ,
8+ nil ];
9+ CFDictionaryRef result = nil ;
10+ OSStatus status = SecItemCopyMatching ((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
11+ if (status == errSecItemNotFound)
12+ status = SecItemAdd ((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
13+ if (status != errSecSuccess)
14+ return nil ;
15+ NSString *accessGroup = [(__bridge NSDictionary *)result objectForKey: (__bridge NSString *)kSecAttrAccessGroup ];
16+
17+ return accessGroup;
18+ }
19+
20+ + (id )sharedAccessGroup {
21+ NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
22+ (__bridge NSString *)kSecClassGenericPassword , (__bridge NSString *)kSecClass ,
23+ @" bundleSeedID" , kSecAttrAccount ,
24+ @" " , kSecAttrService ,
25+ (id )kCFBooleanTrue , kSecReturnAttributes ,
26+ nil ];
27+ CFDictionaryRef result = nil ;
28+ OSStatus status = SecItemCopyMatching ((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
29+ if (status == errSecItemNotFound)
30+ status = SecItemAdd ((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
31+ if (status != errSecSuccess)
32+ return nil ;
33+ NSString *accessGroup = [(__bridge NSDictionary *)result objectForKey: (__bridge NSString *)kSecAttrAccessGroup ];
34+
35+ return accessGroup;
36+ }
37+
38+ %end
0 commit comments