Files
tianrunCRM/Assets/CoolapeFrame/Plugins/iOS/KeyChainPlugin.mm
2020-07-04 14:41:25 +08:00

121 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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