Files
tianrunCRM/Assets/CoolapeFrame/Plugins/iOS/KeyChainPlugin.mm

121 lines
3.9 KiB
Plaintext
Raw Normal View History

2020-07-04 14:41:25 +08:00
#import "KeyChainPlugin.h"
#import "UICKeyChainStore.h"
 
NSString *_keyForID = @"UserID";
NSString *_keyForUUID = @"UserUUID";
 
@implementation KeyChainPlugin
 
extern "C" {
void setKeyChain(const char* _key, const char* _val);
char* getKeyChain(const char* key);
void deleteKeyChain(char* key);
void setShareKeyChain(const char* _key, const char* _val, const char* _group);
char* getShareKeyChain(const char* key, const char* group);
void deleteShareKeyChain(char* key, const char* group);
    char* getKeyChainUser();
    void setKeyChainUser(const char* userId, const char* uuid);
    void deleteKeyChainUser();
}
 
void setKeyChain(const char* _key, const char* _val)
{
    NSString *key = [NSString stringWithCString: _key encoding:NSUTF8StringEncoding];
    NSString *val = [NSString stringWithCString: _val encoding:NSUTF8StringEncoding];
 
    [UICKeyChainStore setString:val forKey:key];
}
char* getKeyChain(const char* key)
{
    NSString *val = [UICKeyChainStore stringForKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]];
 
    if (val == nil || [val isEqualToString:@""]) {
        val = @"";
}
 
    return makeStringCopy([val UTF8String]);
}
void setShareKeyChain(const char* _key, const char* _val, const char* _group)
{
    NSString *key = [NSString stringWithCString: _key encoding:NSUTF8StringEncoding];
    NSString *val = [NSString stringWithCString: _val encoding:NSUTF8StringEncoding];
    NSString *group = [NSString stringWithCString: _group encoding:NSUTF8StringEncoding];
 
    [UICKeyChainStore setString:val forKey:key service:nil accessGroup:group];
}
char* getShareKeyChain(const char* key, const char* group)
{
  NSString *val = [UICKeyChainStore stringForKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]
service:nil accessGroup:[NSString stringWithCString:group encoding:NSUTF8StringEncoding]];
 
    if (val == nil || [val isEqualToString:@""]) {
        val = @"";
}
 
    return makeStringCopy([val UTF8String]);
}
void deleteShareKeyChain(char* key, const char* group)
{
    [UICKeyChainStore removeItemForKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]
service:nil
accessGroup:[NSString stringWithCString:group encoding:NSUTF8StringEncoding]];
}
char* getKeyChainUser()
{
    NSString *userId = [UICKeyChainStore stringForKey:_keyForID];
    NSString *userUUID = [UICKeyChainStore stringForKey:_keyForUUID];
 
    if (userId == nil || [userId isEqualToString:@""]) {
        NSLog(@"No user information");
        userId = @"";
        userUUID = @"";
    }
 
    NSString* json = [NSString stringWithFormat:@"{\"userId\":\"%@\",\"uuid\":\"%@\"}",userId,userUUID];
 
    return makeStringCopy([json UTF8String]);
}
 
void setKeyChainUser(const char* userId, const char* uuid)
{
    NSString *nsUseId = [NSString stringWithCString: userId encoding:NSUTF8StringEncoding];
    NSString *nsUUID = [NSString stringWithCString: uuid encoding:NSUTF8StringEncoding];
 
    [UICKeyChainStore setString:nsUseId forKey:_keyForID];
    [UICKeyChainStore setString:nsUUID forKey:_keyForUUID];
}
 
void deleteKeyChain(char* key)
{
    [UICKeyChainStore removeItemForKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]];
}
void deleteKeyChainUser()
{
    [UICKeyChainStore removeItemForKey:_keyForID];
    [UICKeyChainStore removeItemForKey:_keyForUUID];
}
 
char* makeStringCopy(const char* str)
{
    if (str == NULL) {
        return NULL;
    }
 
    char* res = (char*)malloc(strlen(str) + 1);
    strcpy(res, str);
    return res;
}
 
@end