X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/c38e3ce98599a410a47dc10253faa4d5830f13b2..427c49bcad63d042b29ada2ac27e3dfc4845c779:/utilities/src/iOSforOSX.c?ds=inline diff --git a/utilities/src/iOSforOSX.c b/utilities/src/iOSforOSX.c new file mode 100644 index 00000000..d17cbef2 --- /dev/null +++ b/utilities/src/iOSforOSX.c @@ -0,0 +1,67 @@ +// +// iOSforOSX.c +// utilities +// +// Created by J Osborne on 11/13/12. +// Copyright (c) 2012 Apple Inc. All rights reserved. +// + +#include + +#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) + +#include +#include +#include + +#include +#include +#include +#include "iOSforOSX.h" +#include +#include + +#include ".././libsecurity_keychain/lib/SecBase64P.c" + +CFURLRef SecCopyKeychainDirectoryFile(CFStringRef file) +{ + struct passwd *passwd = getpwuid(getuid()); + if (!passwd) + return NULL; + + CFURLRef pathURL = NULL; + CFURLRef fileURL = NULL; + CFStringRef home = NULL; + CFStringRef filePath = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%s/%@"), "Library/Keychains", file); + require(filePath, xit); + + if (passwd->pw_dir) + home = CFStringCreateWithCString(NULL, passwd->pw_dir, kCFStringEncodingUTF8); + + pathURL = CFURLCreateWithFileSystemPath(NULL, home?home:CFSTR("/"), kCFURLPOSIXPathStyle, true); + if (pathURL) + fileURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault, pathURL, filePath, false); + +xit: + CFReleaseSafe(filePath); + CFReleaseSafe(pathURL); + CFReleaseSafe(home); + return fileURL; +} + +// XXX: do we still need this? see securityd_files? +CFURLRef PortableCFCopyHomeDirectoryURL(void) +{ + char *path = getenv("HOME"); + if (!path) { + struct passwd *pw = getpwuid(getuid()); + path = pw->pw_dir; + } + CFStringRef path_cf = CFStringCreateWithCStringNoCopy(NULL, path, kCFStringEncodingUTF8, kCFAllocatorNull); + CFURLRef path_url = CFURLCreateWithFileSystemPath(NULL, path_cf, kCFURLPOSIXPathStyle, true); + + CFRelease(path_cf); + return path_url; +} + +#endif