keychain-commit Mailing List for Keychain Framework
Status: Abandoned
Brought to you by:
wadetregaskis
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(65) |
Nov
|
Dec
(15) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(2) |
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
(7) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <wad...@us...> - 2009-01-13 07:40:37
|
Revision: 464
http://keychain.svn.sourceforge.net/keychain/?rev=464&view=rev
Author: wadetregaskis
Date: 2009-01-13 07:40:32 +0000 (Tue, 13 Jan 2009)
Log Message:
-----------
* Fixed -[KeychainSearch _removeAttributesOfType:] to start from a valid index rather than one past the end, which causes an exception and the whole shebang to fail. Credit to Nathan Kinsinger for finding and fixing this issue.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/KeychainSearch.m
Modified: trunk/Frameworks/Keychain/Keychain/KeychainSearch.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/KeychainSearch.m 2009-01-13 07:23:41 UTC (rev 463)
+++ trunk/Frameworks/Keychain/Keychain/KeychainSearch.m 2009-01-13 07:40:32 UTC (rev 464)
@@ -302,12 +302,12 @@
}
- (void)_removeAttributesOfType:(SecKeychainAttrType)type {
- NSUInteger i = [_attributes count];
+ NSInteger i = [_attributes count] - 1;
SearchAttribute *current;
// FLAG: this is tricky... we should either figure out a *reliable* way to remove the appropriate attributes from a predicate string, or perhaps better yet fully convert to allowing multiple (logically or'd) predicates on a single attribute, in which case this method can go away entirely.
- while (0 < i) {
+ while (0 <= i) {
current = [_attributes objectAtIndex:i];
if (type == [current type]) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-13 07:23:47
|
Revision: 463
http://keychain.svn.sourceforge.net/keychain/?rev=463&view=rev
Author: wadetregaskis
Date: 2009-01-13 07:23:41 +0000 (Tue, 13 Jan 2009)
Log Message:
-----------
* Now determine the port only for internet items, rather than all KeychainItems (was causing annoying error messages for those items that don't have port attributes).
* The description for generic passwords now displays the service, rather than trying to display the server, port and path, none of which apply for generic passwords.
Credit to Nathan Kinsinger for identifying and fixing these issues.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/KeychainItem.m
Modified: trunk/Frameworks/Keychain/Keychain/KeychainItem.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/KeychainItem.m 2009-01-08 07:36:03 UTC (rev 462)
+++ trunk/Frameworks/Keychain/Keychain/KeychainItem.m 2009-01-13 07:23:41 UTC (rev 463)
@@ -1125,9 +1125,8 @@
}
- (NSString*)description {
- Certificate *cert;
- NSString *label, *account, *protocol, *server, *path, *comment, *typeDescription;
- uint32_t port = [self port];
+ Certificate *cert = nil;
+ NSString *label = nil, *account = nil, *protocol = nil, *server = nil, *service = nil, *path = nil, *comment = nil, *typeDescription = nil;
NSMutableString *result = [[NSMutableString alloc] initWithCapacity:50];
switch ([self kind]) {
@@ -1157,7 +1156,9 @@
if (server) {
[result appendString:server];
-
+
+ uint32_t port = [self port];
+
if (port != 0) {
[result appendString:[NSString stringWithFormat:@":%"PRIu32, port]];
}
@@ -1180,7 +1181,7 @@
break;
//return [NSString stringWithFormat:@"%@: %@ @ %@://%@:%d/%@ (%@)", [self label], [self account], [self protocolString], [self server], (int)[self port], [self path], [self comment]]; break;
- case kSecGenericPasswordItemClass: // <label>: <account> @ [<typeDescription>] <server>:<port>/<path> (<comment>)
+ case kSecGenericPasswordItemClass: // <label>: <account> @ [<typeDescription>] <service> (<comment>)
label = [self label];
if (label) {
@@ -1202,23 +1203,12 @@
[result appendString:@" "];
}
- server = [self server];
+ service = [self service];
- if (server) {
- [result appendString:server];
-
- if (port != 0) {
- [result appendString:[NSString stringWithFormat:@":%"PRIu32, port]];
- }
+ if (service) {
+ [result appendString:service];
}
- path = [self path];
-
- if (path) {
- [result appendString:@"/"];
- [result appendString:path];
- }
-
comment = [self comment];
if (comment) {
@@ -1229,7 +1219,7 @@
break;
- //return [NSString stringWithFormat:@"%@: %@ @ [%@] %@:%d (%@)", [self label], [self account], [self typeDescription], [self server], (int)[self port], [self comment]]; break;
+ //return [NSString stringWithFormat:@"%@: %@ @ [%@] %@ (%@)", [self label], [self account], [self typeDescription], [self service], [self comment]]; break;
case kSecAppleSharePasswordItemClass: // <label>: <account> @ <protocol>://<server> (<comment>)
label = [self label];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-08 07:36:10
|
Revision: 462
http://keychain.svn.sourceforge.net/keychain/?rev=462&view=rev
Author: wadetregaskis
Date: 2009-01-08 07:36:03 +0000 (Thu, 08 Jan 2009)
Log Message:
-----------
* Enabled warnings for missing endlines at the end of files, and fixed the three which were missing them.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Certificates/CertificateGeneration.h
trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj
trunk/Frameworks/Keychain/Utilities/MultiThreading.h
trunk/Frameworks/Keychain/X509/x509.h
Modified: trunk/Frameworks/Keychain/Certificates/CertificateGeneration.h
===================================================================
--- trunk/Frameworks/Keychain/Certificates/CertificateGeneration.h 2009-01-08 07:27:32 UTC (rev 461)
+++ trunk/Frameworks/Keychain/Certificates/CertificateGeneration.h 2009-01-08 07:36:03 UTC (rev 462)
@@ -61,4 +61,4 @@
@param CLModule The CL module to use to generate and sign the certificate. Pass nil to use the current default CL.
@result Returns a new Certificate instance, or nil if an error occurs. */
-Certificate *createCertificate(NameList *subject, NameList *issuer, Validity *validity, Key *publicKey, Key *privateKey, AlgorithmIdentifier *signingAlgorithm, NSData *serialNumber, ExtensionList *extensions, CSSMModule *CSPModule, CSSMModule *CLModule);
\ No newline at end of file
+Certificate *createCertificate(NameList *subject, NameList *issuer, Validity *validity, Key *publicKey, Key *privateKey, AlgorithmIdentifier *signingAlgorithm, NSData *serialNumber, ExtensionList *extensions, CSSMModule *CSPModule, CSSMModule *CLModule);
Modified: trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj
===================================================================
--- trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj 2009-01-08 07:27:32 UTC (rev 461)
+++ trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj 2009-01-08 07:36:03 UTC (rev 462)
@@ -1230,7 +1230,7 @@
/* Begin PBXProject section */
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
- buildConfigurationList = 7528103408569F6900FEFBDC /* Build configuration list for PBXProject "Keychain (Xcode 3.0)" */;
+ buildConfigurationList = 7528103408569F6900FEFBDC /* Build configuration list for PBXProject "Keychain" */;
compatibilityVersion = "Xcode 3.0";
hasScannedForEncodings = 1;
mainGroup = 0867D691FE84028FC02AAC07 /* Keychain */;
@@ -2026,6 +2026,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+ GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
@@ -2071,6 +2072,7 @@
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+ GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
@@ -2367,6 +2369,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+ GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
@@ -2413,6 +2416,7 @@
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES;
+ GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
@@ -2651,7 +2655,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
- 7528103408569F6900FEFBDC /* Build configuration list for PBXProject "Keychain (Xcode 3.0)" */ = {
+ 7528103408569F6900FEFBDC /* Build configuration list for PBXProject "Keychain" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7528103508569F6900FEFBDC /* Debug */,
Modified: trunk/Frameworks/Keychain/Utilities/MultiThreading.h
===================================================================
--- trunk/Frameworks/Keychain/Utilities/MultiThreading.h 2009-01-08 07:27:32 UTC (rev 461)
+++ trunk/Frameworks/Keychain/Utilities/MultiThreading.h 2009-01-08 07:36:03 UTC (rev 462)
@@ -47,4 +47,4 @@
- (void)deactivateThreadSafety;
-@end
\ No newline at end of file
+@end
Modified: trunk/Frameworks/Keychain/X509/x509.h
===================================================================
--- trunk/Frameworks/Keychain/X509/x509.h 2009-01-08 07:27:32 UTC (rev 461)
+++ trunk/Frameworks/Keychain/X509/x509.h 2009-01-08 07:36:03 UTC (rev 462)
@@ -796,4 +796,4 @@
- (CSSM_X509_ALGORITHM_IDENTIFIER*)algorithmIdentifierRef;
-@end
\ No newline at end of file
+@end
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-08 07:27:42
|
Revision: 461
http://keychain.svn.sourceforge.net/keychain/?rev=461&view=rev
Author: wadetregaskis
Date: 2009-01-08 07:27:32 +0000 (Thu, 08 Jan 2009)
Log Message:
-----------
* Removed the Xcode 2.x project; I think everyone's upgraded by now.
Added Paths:
-----------
trunk/Frameworks/Keychain/Keychain.xcodeproj/
Removed Paths:
-------------
trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/
trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/
Property changes on: trunk/Frameworks/Keychain/Keychain.xcodeproj
___________________________________________________________________
Added: svn:ignore
+ *.pbxuser
*.mode*
Added: svn:mergeinfo
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-04 21:13:27
|
Revision: 460
http://keychain.svn.sourceforge.net/keychain/?rev=460&view=rev
Author: wadetregaskis
Date: 2009-01-04 21:13:23 +0000 (Sun, 04 Jan 2009)
Log Message:
-----------
* Removed -[Keychain setLockAfterInterval:] and -[Keychain willLockAfterInterval] - these rely on functionality in the Security framework which isn't actually implemented (as of 10.5.6, at least). Renamed -[Keychain setInterval:] to -[Keychain setLockInterval:] and -[Keychain interval] to -[Keychain lockInterval]. Part of bug #2473561.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/Keychain.h
trunk/Frameworks/Keychain/Keychain/Keychain.m
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.h 2009-01-04 20:57:50 UTC (rev 459)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.h 2009-01-04 21:13:23 UTC (rev 460)
@@ -229,34 +229,19 @@
- (BOOL)willLockOnSleep;
-/*! @method setLockAfterInterval:
- @abstract Sets whether or not the receiver will automatically lock itself after a certain period of inactivity.
- @discussion Some users like to have their keychain lock automatically after a certain period of it being unused, for extra security, as locked keychains cannot be used at all - neither read nor added to.
-
- Note that you should set this only after setting the interval using setInterval:. If you set this first, and interval is 0, you will induce a race condition, the outcome of which may be that the receiver becomes locked.
- @param lockAfterInterval YES if the receiver should lock itself automatically after a certain period of inactivity, NO otherwise. */
-
-- (void)setLockAfterInterval:(BOOL)lockAfterInterval;
-
-/*! @method willLockAfterInterval
- @abstract Returns whether or not the receiver will automatically lock itself after a certain period of inactivity.
- @result Returns YES if the receiver is set to lock after some interval (which can be determined using the interval method), NO otherwise and in case of error. */
-
-- (BOOL)willLockAfterInterval;
-
-/*! @method setInterval:
+/*! @method setLockInterval:
@abstract Sets the time in seconds after which a keychain automatically locks itself.
@discussion This is an idle timeout - if the receiver is unused for the specified interval of time, it locks itself. Note that since keychains are system-wide, other applications may use the receiver without your knowledge. Also not that this interval does not need to be 'reset' every time you use the receiver - the receiver keeps track of time and usage itself.
@param interval The number of seconds of idle time after which the receiver should lock itself. This may be 0, in which case the receiver will lock itself immediately after any operation. Since this setting is system-wide, you should be wary about setting this value to 0, or any other brief interval. */
-- (void)setInterval:(uint32_t)interval;
+- (void)setLockInterval:(uint32_t)interval;
-/*! @method interval
+/*! @method lockInterval
@abstract Returns the time in seconds after which a keychain automatically locks.
@discussion This is an idle timeout - if the receiver is unused for this interval of time, it locks itself. Note that since keychains are system-wide, other applications may use the receiver without your knowledge.
@result The time interval in seconds. This may be a non-zero number even if the receiver is not set to use it. */
-- (uint32_t)interval;
+- (uint32_t)lockInterval;
/*! @method lock
@abstract Locks the receiver.
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.m 2009-01-04 20:57:50 UTC (rev 459)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.m 2009-01-04 21:13:23 UTC (rev 460)
@@ -504,7 +504,7 @@
}
}
-- (void)setLockAfterInterval:(BOOL)lockAfterInterval {
+- (void)setLockInterval:(uint32_t)interval {
SecKeychainSettings settings = {
.version = SEC_KEYCHAIN_SETTINGS_VERS1
};
@@ -512,45 +512,6 @@
_error = SecKeychainCopySettings(_keychain, &settings);
if (noErr == _error) {
- settings.useLockInterval = lockAfterInterval;
-
- _error = SecKeychainSetSettings(_keychain, &settings);
-
- if (CSSM_OK != _error) {
- PSYSLOGND(LOG_ERR, @"Unable to set lock-after-interval for keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainSetSettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
- }
- } else {
- PSYSLOGND(LOG_ERR, @"Unable to set lock-after-interval for keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainCopySettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
- }
-}
-
-- (BOOL)willLockAfterInterval {
- SecKeychainSettings settings = {
- .version = SEC_KEYCHAIN_SETTINGS_VERS1
- };
-
- _error = SecKeychainCopySettings(_keychain, &settings);
-
- if (noErr == _error) {
- return settings.useLockInterval;
- } else {
- PSYSLOGND(LOG_ERR, @"Unable to determine lock-after-interval setting of keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainCopySettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
-
- return NO;
- }
-}
-
-- (void)setInterval:(uint32_t)interval {
- SecKeychainSettings settings = {
- .version = SEC_KEYCHAIN_SETTINGS_VERS1
- };
-
- _error = SecKeychainCopySettings(_keychain, &settings);
-
- if (noErr == _error) {
settings.lockInterval = interval;
_error = SecKeychainSetSettings(_keychain, &settings);
@@ -565,7 +526,7 @@
}
}
-- (uint32_t)interval {
+- (uint32_t)lockInterval {
SecKeychainSettings settings = {
SEC_KEYCHAIN_SETTINGS_VERS1
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-04 20:57:53
|
Revision: 459
http://keychain.svn.sourceforge.net/keychain/?rev=459&view=rev
Author: wadetregaskis
Date: 2009-01-04 20:57:50 +0000 (Sun, 04 Jan 2009)
Log Message:
-----------
* Removed -[Keychain version] and -[Keychain setVersion:], as they don't make sense. Part of bug #2473561.
* Updated methods using SecKeychainSettings to properly set the struct version before calling SecKeychainCopySettings. Part of bug #2473561.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/Keychain.h
trunk/Frameworks/Keychain/Keychain/Keychain.m
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.h 2009-01-04 20:45:53 UTC (rev 458)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.h 2009-01-04 20:57:50 UTC (rev 459)
@@ -216,20 +216,6 @@
- (BOOL)isWritable;
-/*! @method setVersion:
- @abstract Sets the version of the receiver.
- @discussion You should be careful about setting this value, as it may relate intricately to the keychain file format on disk. See the description for the version method for more details.
- @param version The major version number. */
-
-- (void)setVersion:(uint32_t)version;
-
-/*! @method version
- @abstract Returns the version of the receiver.
- @discussion The version relates primarily to the format of the keychain file on disk, rather than how the receiver acts. At the time of writing, all keychain versions work the same. But MacOS 10.1 used a different format for storing keychains to 10.2. Indeed, 10.3 or another future release may change the format again.
- @result The major version number. */
-
-- (uint32_t)version;
-
/*! @method setLockOnSleep:
@abstract Sets whether or not the receiver will lock itself automatically when the system goes to sleep.
@discussion Some users like to have their keychain lock automatically when their computer is put to sleep. If they leave their computer alone overnight, for example, they might not want just anyone to be able to come along while they're sleeping and use their keychain.
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.m 2009-01-04 20:45:53 UTC (rev 458)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.m 2009-01-04 20:57:50 UTC (rev 459)
@@ -465,43 +465,10 @@
}
}
-- (void)setVersion:(uint32_t)version {
- SecKeychainSettings settings;
-
- _error = SecKeychainCopySettings(_keychain, &settings);
-
- if (noErr == _error) {
- settings.version = version;
-
- _error = SecKeychainSetSettings(_keychain, &settings);
-
- if (CSSM_OK != _error) {
- PSYSLOGND(LOG_ERR, @"Unable to set version for keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainSetSettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
- }
- } else {
- PSYSLOGND(LOG_ERR, @"Unable to set version for keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainCopySettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
- }
-}
-
-- (uint32_t)version {
- SecKeychainSettings settings;
-
- _error = SecKeychainCopySettings(_keychain, &settings);
-
- if (noErr == _error) {
- return settings.version;
- } else {
- PSYSLOGND(LOG_ERR, @"Unable to determine version of keychain %p, error %@.\n", self, OSStatusAsString(_error));
- PDEBUG(@"SecKeychainCopySettings(%p, %p) returned error %@.\n", _keychain, &settings, OSStatusAsString(_error));
-
- return -1;
- }
-}
-
- (void)setLockOnSleep:(BOOL)lockOnSleep {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ .version = SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
@@ -521,7 +488,9 @@
}
- (BOOL)willLockOnSleep {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ .version = SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
@@ -536,7 +505,9 @@
}
- (void)setLockAfterInterval:(BOOL)lockAfterInterval {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ .version = SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
@@ -556,7 +527,9 @@
}
- (BOOL)willLockAfterInterval {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ .version = SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
@@ -571,7 +544,9 @@
}
- (void)setInterval:(uint32_t)interval {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ .version = SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
@@ -591,7 +566,9 @@
}
- (uint32_t)interval {
- SecKeychainSettings settings;
+ SecKeychainSettings settings = {
+ SEC_KEYCHAIN_SETTINGS_VERS1
+ };
_error = SecKeychainCopySettings(_keychain, &settings);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2009-01-04 20:45:58
|
Revision: 458
http://keychain.svn.sourceforge.net/keychain/?rev=458&view=rev
Author: wadetregaskis
Date: 2009-01-04 20:45:53 +0000 (Sun, 04 Jan 2009)
Log Message:
-----------
* Changed project compatibility version to 3.0, rather than 2.4. Kudos to Nathan Kinsinger for pointing this out.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj
Modified: trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj
===================================================================
--- trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj 2008-06-03 07:15:00 UTC (rev 457)
+++ trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj 2009-01-04 20:45:53 UTC (rev 458)
@@ -507,7 +507,7 @@
757A98870CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Protocol Type Constants.strings"; sourceTree = "<group>"; };
757A98890CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Protocol Type Long Names.strings"; sourceTree = "<group>"; };
757A988B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Protocol Type Short Names.strings"; sourceTree = "<group>"; };
- 757A988C0CB98BF300513299 /* Info-Keychain.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "Info-Keychain.plist"; sourceTree = "<group>"; };
+ 757A988C0CB98BF300513299 /* Info-Keychain.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "Info-Keychain.plist"; sourceTree = "<group>"; };
757A988E0CB98BF300513299 /* SKeyPlus.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SKeyPlus.h; sourceTree = "<group>"; };
757A988F0CB98BF300513299 /* SKeyPlus.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SKeyPlus.m; sourceTree = "<group>"; };
757A98910CB98BF300513299 /* CompilerIndependence.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CompilerIndependence.h; sourceTree = "<group>"; };
@@ -1231,7 +1231,7 @@
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 7528103408569F6900FEFBDC /* Build configuration list for PBXProject "Keychain (Xcode 3.0)" */;
- compatibilityVersion = "Xcode 2.4";
+ compatibilityVersion = "Xcode 3.0";
hasScannedForEncodings = 1;
mainGroup = 0867D691FE84028FC02AAC07 /* Keychain */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2008-06-03 07:14:54
|
Revision: 457
http://keychain.svn.sourceforge.net/keychain/?rev=457&view=rev
Author: wadetregaskis
Date: 2008-06-03 00:15:00 -0700 (Tue, 03 Jun 2008)
Log Message:
-----------
* Remove svn:eof-style property, and recommit the various files with hopefully correct data this time.
Modified Paths:
--------------
trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/keyedobjects.nib
trunk/Applications/Security Manager/English.lproj/MainMenu.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Certificate.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Identity.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Key Pair.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Key.nib/objects.nib
Property Changed:
----------------
trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/data.dependency
trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/info.nib
trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/keyedobjects.nib
trunk/Applications/Security Manager/English.lproj/MainMenu.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/MainMenu.nib/info.nib
trunk/Applications/Security Manager/English.lproj/MainMenu.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Certificate.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/New Certificate.nib/info.nib
trunk/Applications/Security Manager/English.lproj/New Certificate.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Identity.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/New Identity.nib/info.nib
trunk/Applications/Security Manager/English.lproj/New Identity.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Key Pair.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/New Key Pair.nib/info.nib
trunk/Applications/Security Manager/English.lproj/New Key Pair.nib/objects.nib
trunk/Applications/Security Manager/English.lproj/New Key.nib/classes.nib
trunk/Applications/Security Manager/English.lproj/New Key.nib/info.nib
trunk/Applications/Security Manager/English.lproj/New Key.nib/objects.nib
Property changes on: trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/classes.nib
___________________________________________________________________
Name: svn:eol-style
- native
Property changes on: trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/data.dependency
___________________________________________________________________
Name: svn:eol-style
- native
Property changes on: trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/info.nib
___________________________________________________________________
Name: svn:eol-style
- native
Modified: trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/keyedobjects.nib
===================================================================
--- trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/keyedobjects.nib 2008-03-29 21:37:17 UTC (rev 456)
+++ trunk/Applications/Security Manager/English.lproj/Address Book Browser.nib/keyedobjects.nib 2008-06-03 07:15:00 UTC (rev 457)
@@ -1,7 +1,7 @@
bplist00\xD4
-Y$archiverX$versionT$topX$objects_NSKeyedArchiver |
|
From: <wad...@us...> - 2008-03-29 21:37:10
|
Revision: 456
http://keychain.svn.sourceforge.net/keychain/?rev=456&view=rev
Author: wadetregaskis
Date: 2008-03-29 14:37:17 -0700 (Sat, 29 Mar 2008)
Log Message:
-----------
* Final fix for Subversion's retardedness. 64-bit and Intel patch now fully applied.
Property Changed:
----------------
trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/
Property changes on: trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj
___________________________________________________________________
Name: svn:ignore
+ *.pbxuser
*.mode*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2008-03-29 21:36:06
|
Revision: 455
http://keychain.svn.sourceforge.net/keychain/?rev=455&view=rev
Author: wadetregaskis
Date: 2008-03-29 14:36:06 -0700 (Sat, 29 Mar 2008)
Log Message:
-----------
* Fix up more of Subversion's mistakes.
Added Paths:
-----------
trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/
trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj
Added: trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj
===================================================================
--- trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj (rev 0)
+++ trunk/Frameworks/Keychain/Keychain (Xcode 3.0).xcodeproj/project.pbxproj 2008-03-29 21:36:06 UTC (rev 455)
@@ -0,0 +1,2800 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 44;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 75A0764A0943BA09008B9D9E /* World */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 75A076580943BA3D008B9D9E /* Build configuration list for PBXAggregateTarget "World" */;
+ buildPhases = (
+ );
+ dependencies = (
+ 75A0764C0943BA13008B9D9E /* PBXTargetDependency */,
+ 75A0764E0943BA16008B9D9E /* PBXTargetDependency */,
+ 75A076500943BA18008B9D9E /* PBXTargetDependency */,
+ 75A076520943BA1A008B9D9E /* PBXTargetDependency */,
+ 75A076540943BA1C008B9D9E /* PBXTargetDependency */,
+ 75A076560943BA1D008B9D9E /* PBXTargetDependency */,
+ 755CFABD0A1F672D008C69A9 /* PBXTargetDependency */,
+ 755DE3320A20A2B9002EAC2B /* PBXTargetDependency */,
+ 755DE3340A20A2B9002EAC2B /* PBXTargetDependency */,
+ 75C6E9300A3BE210009201FB /* PBXTargetDependency */,
+ 7506C0400A3DB5EA000DB6BD /* PBXTargetDependency */,
+ );
+ name = World;
+ productName = World;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 7506C0380A3DB5A8000DB6BD /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7506C0520A3DB606000DB6BD /* PolicyProber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7506C0510A3DB606000DB6BD /* PolicyProber.m */; };
+ 751166810CA6012400A619CF /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+ 75331C320D9EE27A00588D3C /* KeychainSearchInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 75331C310D9EE27A00588D3C /* KeychainSearchInternal.h */; };
+ 7540B3ED0999D1C000469F46 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7540B3FE0999D1D600469F46 /* SKeyPlusTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7540B3FD0999D1D600469F46 /* SKeyPlusTester.m */; };
+ 7554346E0D037157003D0C29 /* External Item Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 755434660D037157003D0C29 /* External Item Type Names.strings */; };
+ 7554346F0D037157003D0C29 /* External Item Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 755434680D037157003D0C29 /* External Item Type Constants.strings */; };
+ 755434700D037157003D0C29 /* External Format Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7554346A0D037157003D0C29 /* External Format Names.strings */; };
+ 755434710D037157003D0C29 /* External Format Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7554346C0D037157003D0C29 /* External Format Constants.strings */; };
+ 7556131A0A2090B5003428C2 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 755613250A209100003428C2 /* CryptographicTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 755613240A209100003428C2 /* CryptographicTester.m */; };
+ 755613260A20910C003428C2 /* CertificateGenerationTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7594D49C0A20467E0090E497 /* CertificateGenerationTester.m */; };
+ 757A97E80CB98BCD00513299 /* CSSMACLEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D00CB98BCD00513299 /* CSSMACLEntry.h */; };
+ 757A97E90CB98BCD00513299 /* CSSMACLEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97D10CB98BCD00513299 /* CSSMACLEntry.m */; };
+ 757A97EA0CB98BCD00513299 /* CSSMControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D20CB98BCD00513299 /* CSSMControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97EB0CB98BCD00513299 /* CSSMControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97D30CB98BCD00513299 /* CSSMControl.m */; };
+ 757A97EC0CB98BCD00513299 /* CSSMControlInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D40CB98BCD00513299 /* CSSMControlInternal.h */; };
+ 757A97F10CB98BCD00513299 /* CSSMDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D90CB98BCD00513299 /* CSSMDefaults.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F20CB98BCD00513299 /* CSSMDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DA0CB98BCD00513299 /* CSSMDefaults.m */; };
+ 757A97F30CB98BCD00513299 /* CSSMInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DB0CB98BCD00513299 /* CSSMInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F40CB98BCD00513299 /* CSSMInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DC0CB98BCD00513299 /* CSSMInfo.m */; };
+ 757A97F50CB98BCD00513299 /* CSSMManagedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DD0CB98BCD00513299 /* CSSMManagedModule.h */; };
+ 757A97F60CB98BCD00513299 /* CSSMManagedModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DE0CB98BCD00513299 /* CSSMManagedModule.m */; };
+ 757A97F70CB98BCD00513299 /* CSSMModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DF0CB98BCD00513299 /* CSSMModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F80CB98BCD00513299 /* CSSMModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E00CB98BCD00513299 /* CSSMModule.m */; };
+ 757A97F90CB98BCD00513299 /* CSSMOpenDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E10CB98BCD00513299 /* CSSMOpenDataStore.h */; settings = {ATTRIBUTES = (); }; };
+ 757A97FA0CB98BCD00513299 /* CSSMOpenDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E20CB98BCD00513299 /* CSSMOpenDataStore.m */; };
+ 757A97FB0CB98BCD00513299 /* CSSMTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E30CB98BCD00513299 /* CSSMTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FC0CB98BCD00513299 /* CSSMUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E40CB98BCD00513299 /* CSSMUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FD0CB98BCD00513299 /* CSSMUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E50CB98BCD00513299 /* CSSMUtils.m */; };
+ 757A97FE0CB98BCD00513299 /* MDS.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E60CB98BCD00513299 /* MDS.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FF0CB98BCD00513299 /* MDS.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E70CB98BCD00513299 /* MDS.m */; };
+ 757A98A40CB98BF300513299 /* ABPersonAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98010CB98BF200513299 /* ABPersonAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98A50CB98BF300513299 /* ABPersonAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98020CB98BF200513299 /* ABPersonAdditions.m */; };
+ 757A98A60CB98BF300513299 /* Certificate.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98030CB98BF200513299 /* Certificate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98A70CB98BF300513299 /* Certificate.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98040CB98BF200513299 /* Certificate.m */; };
+ 757A98AA0CB98BF300513299 /* CertificateExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98070CB98BF200513299 /* CertificateExtensions.h */; settings = {ATTRIBUTES = (); }; };
+ 757A98AB0CB98BF300513299 /* CertificateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98080CB98BF200513299 /* CertificateExtensions.m */; };
+ 757A98AC0CB98BF300513299 /* CertificateGeneration.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98090CB98BF200513299 /* CertificateGeneration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98AD0CB98BF300513299 /* CertificateGeneration.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980A0CB98BF200513299 /* CertificateGeneration.m */; };
+ 757A98AE0CB98BF300513299 /* Policy.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A980B0CB98BF200513299 /* Policy.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98AF0CB98BF300513299 /* Policy.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980C0CB98BF200513299 /* Policy.m */; };
+ 757A98B00CB98BF300513299 /* Trust.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A980D0CB98BF300513299 /* Trust.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B10CB98BF300513299 /* Trust.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980E0CB98BF300513299 /* Trust.m */; };
+ 757A98B20CB98BF300513299 /* FileUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98100CB98BF300513299 /* FileUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B30CB98BF300513299 /* FileUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98110CB98BF300513299 /* FileUtilities.m */; };
+ 757A98B40CB98BF300513299 /* Key.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98120CB98BF300513299 /* Key.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B50CB98BF300513299 /* Key.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98130CB98BF300513299 /* Key.m */; };
+ 757A98B60CB98BF300513299 /* KeychainUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98140CB98BF300513299 /* KeychainUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B70CB98BF300513299 /* KeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98150CB98BF300513299 /* KeychainUtils.m */; };
+ 757A98B80CB98BF300513299 /* MutableKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98160CB98BF300513299 /* MutableKey.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B90CB98BF300513299 /* MutableKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98170CB98BF300513299 /* MutableKey.m */; };
+ 757A98BA0CB98BF300513299 /* NSDataAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98180CB98BF300513299 /* NSDataAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BB0CB98BF300513299 /* NSDataAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98190CB98BF300513299 /* NSDataAdditions.m */; };
+ 757A98BC0CB98BF300513299 /* ChainedOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A981B0CB98BF300513299 /* ChainedOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BD0CB98BF300513299 /* ChainedOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A981C0CB98BF300513299 /* ChainedOutputStream.m */; };
+ 757A98BE0CB98BF300513299 /* DigestOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A981D0CB98BF300513299 /* DigestOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BF0CB98BF300513299 /* DigestOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A981E0CB98BF300513299 /* DigestOutputStream.m */; };
+ 757A98C00CB98BF300513299 /* Hashcash.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98200CB98BF300513299 /* Hashcash.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C10CB98BF300513299 /* Hashcash.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98210CB98BF300513299 /* Hashcash.m */; };
+ 757A98C20CB98BF300513299 /* Access.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98230CB98BF300513299 /* Access.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C30CB98BF300513299 /* Access.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98240CB98BF300513299 /* Access.m */; };
+ 757A98C40CB98BF300513299 /* AccessControlList.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98250CB98BF300513299 /* AccessControlList.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C50CB98BF300513299 /* AccessControlList.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98260CB98BF300513299 /* AccessControlList.m */; };
+ 757A98C60CB98BF300513299 /* Identity.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98270CB98BF300513299 /* Identity.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C70CB98BF300513299 /* Identity.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98280CB98BF300513299 /* Identity.m */; };
+ 757A98C80CB98BF300513299 /* Keychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98290CB98BF300513299 /* Keychain.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C90CB98BF300513299 /* Keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982A0CB98BF300513299 /* Keychain.m */; };
+ 757A98CA0CB98BF300513299 /* KeychainItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982B0CB98BF300513299 /* KeychainItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CB0CB98BF300513299 /* KeychainItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982C0CB98BF300513299 /* KeychainItem.m */; };
+ 757A98CC0CB98BF300513299 /* KeychainSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982D0CB98BF300513299 /* KeychainSearch.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CD0CB98BF300513299 /* KeychainSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982E0CB98BF300513299 /* KeychainSearch.m */; };
+ 757A98CE0CB98BF300513299 /* TrustedApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982F0CB98BF300513299 /* TrustedApplication.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CF0CB98BF300513299 /* TrustedApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98300CB98BF300513299 /* TrustedApplication.m */; };
+ 757A98D00CB98BF300513299 /* Algorithm Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98320CB98BF300513299 /* Algorithm Constants.strings */; };
+ 757A98D10CB98BF300513299 /* Algorithm Mode Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98340CB98BF300513299 /* Algorithm Mode Constants.strings */; };
+ 757A98D20CB98BF300513299 /* Algorithm Mode Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98360CB98BF300513299 /* Algorithm Mode Names.strings */; };
+ 757A98D30CB98BF300513299 /* Algorithm Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98380CB98BF300513299 /* Algorithm Names.strings */; };
+ 757A98D40CB98BF300513299 /* Authentication Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983A0CB98BF300513299 /* Authentication Type Constants.strings */; };
+ 757A98D50CB98BF300513299 /* Authentication Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983C0CB98BF300513299 /* Authentication Type Names.strings */; };
+ 757A98D60CB98BF300513299 /* BER Code Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983E0CB98BF300513299 /* BER Code Constants.strings */; };
+ 757A98D70CB98BF300513299 /* BER Code Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98400CB98BF300513299 /* BER Code Names.strings */; };
+ 757A98D80CB98BF300513299 /* Certificate Encoding Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98420CB98BF300513299 /* Certificate Encoding Constants.strings */; };
+ 757A98D90CB98BF300513299 /* Certificate Encoding Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98440CB98BF300513299 /* Certificate Encoding Names.strings */; };
+ 757A98DA0CB98BF300513299 /* Certificate Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98460CB98BF300513299 /* Certificate Type Constants.strings */; };
+ 757A98DB0CB98BF300513299 /* Certificate Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98480CB98BF300513299 /* Certificate Type Names.strings */; };
+ 757A98DC0CB98BF300513299 /* CRL Encoding Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984A0CB98BF300513299 /* CRL Encoding Constants.strings */; };
+ 757A98DD0CB98BF300513299 /* CRL Encoding Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984C0CB98BF300513299 /* CRL Encoding Names.strings */; };
+ 757A98DE0CB98BF300513299 /* CRL Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984E0CB98BF300513299 /* CRL Type Constants.strings */; };
+ 757A98DF0CB98BF300513299 /* CRL Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98500CB98BF300513299 /* CRL Type Names.strings */; };
+ 757A98E00CB98BF300513299 /* CSSM Error Base Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98520CB98BF300513299 /* CSSM Error Base Names.strings */; };
+ 757A98E10CB98BF300513299 /* CSSM Error Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98540CB98BF300513299 /* CSSM Error Constants.strings */; };
+ 757A98E20CB98BF300513299 /* CSSM Error Core Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98560CB98BF300513299 /* CSSM Error Core Names.strings */; };
+ 757A98E30CB98BF300513299 /* CSSM Error Descriptions.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98580CB98BF300513299 /* CSSM Error Descriptions.strings */; };
+ 757A98E40CB98BF300513299 /* CSSM Error Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985A0CB98BF300513299 /* CSSM Error Names.strings */; };
+ 757A98E50CB98BF300513299 /* Extension Format Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985C0CB98BF300513299 /* Extension Format Constants.strings */; };
+ 757A98E60CB98BF300513299 /* Extension Format Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985E0CB98BF300513299 /* Extension Format Names.strings */; };
+ 757A98E70CB98BF300513299 /* GUID Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98600CB98BF300513299 /* GUID Names.strings */; };
+ 757A98E80CB98BF300513299 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98620CB98BF300513299 /* InfoPlist.strings */; };
+ 757A98E90CB98BF300513299 /* Key Attribute Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98640CB98BF300513299 /* Key Attribute Constants.strings */; };
+ 757A98EA0CB98BF300513299 /* Key Attribute Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98660CB98BF300513299 /* Key Attribute Names.strings */; };
+ 757A98EB0CB98BF300513299 /* Key Class Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98680CB98BF300513299 /* Key Class Constants.strings */; };
+ 757A98EC0CB98BF300513299 /* Key Class Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986A0CB98BF300513299 /* Key Class Names.strings */; };
+ 757A98ED0CB98BF300513299 /* Key Usage Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986C0CB98BF300513299 /* Key Usage Constants.strings */; };
+ 757A98EE0CB98BF300513299 /* Key Usage Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986E0CB98BF300513299 /* Key Usage Names.strings */; };
+ 757A98EF0CB98BF300513299 /* Keyblob Formats.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98700CB98BF300513299 /* Keyblob Formats.strings */; };
+ 757A98F00CB98BF300513299 /* Keyblob Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98720CB98BF300513299 /* Keyblob Type Constants.strings */; };
+ 757A98F10CB98BF300513299 /* Keyblob Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98740CB98BF300513299 /* Keyblob Type Names.strings */; };
+ 757A98F20CB98BF300513299 /* Keychain Attribute Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98760CB98BF300513299 /* Keychain Attribute Type Constants.strings */; };
+ 757A98F30CB98BF300513299 /* Keychain Attribute Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98780CB98BF300513299 /* Keychain Attribute Type Names.strings */; };
+ 757A98F40CB98BF300513299 /* KeychainItem Class Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987A0CB98BF300513299 /* KeychainItem Class Constants.strings */; };
+ 757A98F50CB98BF300513299 /* KeychainItem Class Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987C0CB98BF300513299 /* KeychainItem Class Names.strings */; };
+ 757A98F60CB98BF300513299 /* Misc Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987E0CB98BF300513299 /* Misc Names.strings */; };
+ 757A98F70CB98BF300513299 /* OID Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98800CB98BF300513299 /* OID Names.strings */; };
+ 757A98F80CB98BF300513299 /* OSStatus Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98820CB98BF300513299 /* OSStatus Constants.strings */; };
+ 757A98F90CB98BF300513299 /* OSStatus Descriptions.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98840CB98BF300513299 /* OSStatus Descriptions.strings */; };
+ 757A98FA0CB98BF300513299 /* Protocol Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98860CB98BF300513299 /* Protocol Type Constants.strings */; };
+ 757A98FB0CB98BF300513299 /* Protocol Type Long Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98880CB98BF300513299 /* Protocol Type Long Names.strings */; };
+ 757A98FC0CB98BF300513299 /* Protocol Type Short Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A988A0CB98BF300513299 /* Protocol Type Short Names.strings */; };
+ 757A98FE0CB98BF300513299 /* SKeyPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A988E0CB98BF300513299 /* SKeyPlus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98FF0CB98BF300513299 /* SKeyPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A988F0CB98BF300513299 /* SKeyPlus.m */; };
+ 757A99000CB98BF300513299 /* CompilerIndependence.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98910CB98BF300513299 /* CompilerIndependence.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99010CB98BF300513299 /* LocalisationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98920CB98BF300513299 /* LocalisationUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99020CB98BF300513299 /* LocalisationUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98930CB98BF300513299 /* LocalisationUtils.m */; };
+ 757A99030CB98BF300513299 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98940CB98BF300513299 /* Logging.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99040CB98BF300513299 /* Logging.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98950CB98BF300513299 /* Logging.m */; };
+ 757A99050CB98BF300513299 /* MultiThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98960CB98BF300513299 /* MultiThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99060CB98BF300513299 /* MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98970CB98BF300513299 /* MultiThreading.m */; };
+ 757A99070CB98BF300513299 /* MultiThreadingInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98980CB98BF300513299 /* MultiThreadingInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99080CB98BF300513299 /* NSCachedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98990CB98BF300513299 /* NSCachedObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99090CB98BF300513299 /* NSCachedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989A0CB98BF300513299 /* NSCachedObject.m */; };
+ 757A990A0CB98BF300513299 /* NSCalendarDateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989B0CB98BF300513299 /* NSCalendarDateAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990B0CB98BF300513299 /* NSCalendarDateAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989C0CB98BF300513299 /* NSCalendarDateAdditions.m */; };
+ 757A990C0CB98BF300513299 /* SecurityUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989D0CB98BF300513299 /* SecurityUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990D0CB98BF300513299 /* SecurityUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989E0CB98BF300513299 /* SecurityUtils.m */; };
+ 757A990E0CB98BF300513299 /* UtilitySupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989F0CB98BF300513299 /* UtilitySupport.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990F0CB98BF300513299 /* UtilitySupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98A00CB98BF300513299 /* UtilitySupport.m */; };
+ 757A99100CB98BF300513299 /* x509.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98A20CB98BF300513299 /* x509.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99110CB98BF300513299 /* x509.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98A30CB98BF300513299 /* x509.m */; };
+ 7588AC710CA3916D00466BEF /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7588AC8B0CA391B500466BEF /* KeychainTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7588AC8A0CA391B500466BEF /* KeychainTester.m */; };
+ 7588AC8C0CA391BC00466BEF /* KeychainTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7588AC8A0CA391B500466BEF /* KeychainTester.m */; };
+ 7588AEE90CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEA0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEB0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEC0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEED0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEE0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEF0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF00CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF10CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF20CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF30CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588B0080CA3A24000466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0090CA3A24600466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00A0CA3A24900466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00B0CA3A24C00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00C0CA3A25100466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00D0CA3A25600466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00E0CA3A25A00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00F0CA3A25F00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0100CA3A26100466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0110CA3A26400466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0120CA3A26800466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7594D48C0A2045E00090E497 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A074F809438F8E008B9D9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 75A074F909438F8E008B9D9E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+ 75A074FA09438F8E008B9D9E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58080CA03EB75D701B6B625 /* CoreFoundation.framework */; };
+ 75A074FB09438F8E008B9D9E /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75BAD75E0480E99400DA8EF2 /* AddressBook.framework */; };
+ 75A0750509438F8E008B9D9E /* CSSMUtilsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 75EE821C0837443E00D8CF7B /* CSSMUtilsTester.m */; };
+ 75A0751009438F8E008B9D9E /* NSCalendarDateAdditionsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 751EAB570839B75500690BA7 /* NSCalendarDateAdditionsTester.m */; };
+ 75A0751B09438F8F008B9D9E /* OutputStreamsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 753F8AB80841F08F0060298F /* OutputStreamsTester.m */; };
+ 75A0752609438F8F008B9D9E /* StringsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7563708D08444F4F00F9E7D7 /* StringsTester.m */; };
+ 75A0753209438F8F008B9D9E /* MDSProber.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D1B95E08A8E74200D77A20 /* MDSProber.m */; };
+ 75A0753C09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753D09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753E09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753F09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0754009438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75C6E8F20A3BDCD8009201FB /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75C6E9040A3BDD1A009201FB /* KeychainSearchTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 75C6E9030A3BDD1A009201FB /* KeychainSearchTester.m */; };
+ 75D25AA60CC1643600C8B443 /* Authorization Tag Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA20CC1643600C8B443 /* Authorization Tag Constants.strings */; };
+ 75D25AA70CC1643600C8B443 /* Authorization Tag Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA40CC1643600C8B443 /* Authorization Tag Names.strings */; };
+ 75D914A30D333062002926F8 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 7506C03F0A3DB5EA000DB6BD /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7506C0340A3DB5A8000DB6BD;
+ remoteInfo = PolicyProber;
+ };
+ 754E37390A553CC700005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37440A553CCD00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37460A553CD000005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37480A553CD400005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374A0A553CD700005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374C0A553CDA00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374E0A553CDE00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37500A553CE100005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37520A553CE300005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37540A553CE600005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 755CFABC0A1F672D008C69A9 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7540B3E90999D1C000469F46;
+ remoteInfo = SKeyPlusTester;
+ };
+ 755DE3310A20A2B9002EAC2B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7594D4880A2045E00090E497;
+ remoteInfo = CertificateGenerationTester;
+ };
+ 755DE3330A20A2B9002EAC2B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 755613160A2090B5003428C2;
+ remoteInfo = CryptographyTester;
+ };
+ 7588AC6D0CA3916D00466BEF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 75A0764B0943BA13008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 75A0764D0943BA16008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0750309438F8E008B9D9E;
+ remoteInfo = CSSMUtilsTester;
+ };
+ 75A0764F0943BA18008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0750E09438F8E008B9D9E;
+ remoteInfo = NSCalendarDateAdditionsTester;
+ };
+ 75A076510943BA1A008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0751909438F8F008B9D9E;
+ remoteInfo = OutputStreamsTester;
+ };
+ 75A076530943BA1C008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0752409438F8F008B9D9E;
+ remoteInfo = StringsTester;
+ };
+ 75A076550943BA1D008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0753009438F8F008B9D9E;
+ remoteInfo = MDSProber;
+ };
+ 75C6E92F0A3BE210009201FB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75C6E8EE0A3BDCD8009201FB;
+ remoteInfo = KeychainSearchTester;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 7506C03D0A3DB5A8000DB6BD /* PolicyProber */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PolicyProber; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7506C0510A3DB606000DB6BD /* PolicyProber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PolicyProber.m; path = Testers/PolicyProber.m; sourceTree = "<group>"; };
+ 751EAB2C0839B2B300690BA7 /* TestingCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestingCommon.h; path = Testers/TestingCommon.h; sourceTree = "<group>"; };
+ 751EAB570839B75500690BA7 /* NSCalendarDateAdditionsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSCalendarDateAdditionsTester.m; path = Testers/NSCalendarDateAdditionsTester.m; sourceTree = "<group>"; };
+ 75331C310D9EE27A00588D3C /* KeychainSearchInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeychainSearchInternal.h; sourceTree = "<group>"; };
+ 753F8AB80841F08F0060298F /* OutputStreamsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OutputStreamsTester.m; path = Testers/OutputStreamsTester.m; sourceTree = "<group>"; };
+ 7540B3F20999D1C000469F46 /* SKeyPlusTester */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SKeyPlusTester; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7540B3FD0999D1D600469F46 /* SKeyPlusTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SKeyPlusTester.m; path = Testers/SKeyPlusTester.m; sourceTree = "<group>"; };
+ 755434670D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Item Type Names.strings"; sourceTree = "<group>"; };
+ 755434690D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Item Type Constants.strings"; sourceTree = "<group>"; };
+ 7554346B0D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Format Names.strings"; sourceTree = "<group>"; };
+ 7554346D0D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Format Constants.strings"; sourceTree = "<group>"; };
+ 7556131F0A2090B5003428C2 /* CryptographyTester */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CryptographyTester; sourceTree = BUILT_PRODUCTS_DIR; };
+ 755613240A209100003428C2 /* CryptographicTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CryptographicTester.m; path = Testers/CryptographicTester.m; sourceTree = "<group>"; };
+ 7563708D08444F4F00F9E7D7 /* StringsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StringsTester.m; path = Testers/StringsTester.m; sourceTree = "<group>"; };
+ 757709C20B12D4AA00E926A4 /* FrameworkDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkDebug.xcconfig; sourceTree = "<group>"; };
+ 757709CA0B12DE2000E926A4 /* FrameworkRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkRelease.xcconfig; sourceTree = "<group>"; };
+ 757A97D00CB98BCD00513299 /* CSSMACLEntry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMACLEntry.h; sourceTree = "<group>"; };
+ 757A97D10CB98BCD00513299 /* CSSMACLEntry.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMACLEntry.m; sourceTree = "<group>"; };
+ 757A97D20CB98BCD00513299 /* CSSMControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMControl.h; sourceTree = "<group>"; };
+ 757A97D30CB98BCD00513299 /* CSSMControl.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMControl.m; sourceTree = "<group>"; };
+ 757A97D40CB98BCD00513299 /* CSSMControlInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMControlInternal.h; sourceTree = "<group>"; };
+ 757A97D50CB98BCD00513299 /* CSSMDataStorageModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDataStorageModule.h; sourceTree = "<group>"; };
+ 757A97D60CB98BCD00513299 /* CSSMDataStorageModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDataStorageModule.m; sourceTree = "<group>"; };
+ 757A97D70CB98BCD00513299 /* CSSMDataStore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDataStore.h; sourceTree = "<group>"; };
+ 757A97D80CB98BCD00513299 /* CSSMDataStore.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDataStore.m; sourceTree = "<group>"; };
+ 757A97D90CB98BCD00513299 /* CSSMDefaults.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDefaults.h; sourceTree = "<group>"; };
+ 757A97DA0CB98BCD00513299 /* CSSMDefaults.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDefaults.m; sourceTree = "<group>"; };
+ 757A97DB0CB98BCD00513299 /* CSSMInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMInfo.h; sourceTree = "<group>"; };
+ 757A97DC0CB98BCD00513299 /* CSSMInfo.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMInfo.m; sourceTree = "<group>"; };
+ 757A97DD0CB98BCD00513299 /* CSSMManagedModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMManagedModule.h; sourceTree = "<group>"; };
+ 757A97DE0CB98BCD00513299 /* CSSMManagedModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMManagedModule.m; sourceTree = "<group>"; };
+ 757A97DF0CB98BCD00513299 /* CSSMModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMModule.h; sourceTree = "<group>"; };
+ 757A97E00CB98BCD00513299 /* CSSMModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMModule.m; sourceTree = "<group>"; };
+ 757A97E10CB98BCD00513299 /* CSSMOpenDataStore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMOpenDataStore.h; sourceTree = "<group>"; };
+ 757A97E20CB98BCD00513299 /* CSSMOpenDataStore.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMOpenDataStore.m; sourceTree = "<group>"; };
+ 757A97E30CB98BCD00513299 /* CSSMTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMTypes.h; sourceTree = "<group>"; };
+ 757A97E40CB98BCD00513299 /* CSSMUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMUtils.h; sourceTree = "<group>"; };
+ 757A97E50CB98BCD00513299 /* CSSMUtils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMUtils.m; sourceTree = "<group>"; };
+ 757A97E60CB98BCD00513299 /* MDS.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MDS.h; sourceTree = "<group>"; };
+ 757A97E70CB98BCD00513299 /* MDS.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MDS.m; sourceTree = "<group>"; };
+ 757A98010CB98BF200513299 /* ABPersonAdditions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ABPersonAdditions.h; sourceTree = "<group>"; };
+ 757A98020CB98BF200513299 /* ABPersonAdditions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ABPersonAdditions.m; sourceTree = "<group>"; };
+ 757A98030CB98BF200513299 /* Certificate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Certificate.h; sourceTree = "<group>"; };
+ 757A98040CB98BF200513299 /* Certificate.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Certificate.m; sourceTree = "<group>"; };
+ 757A98050CB98BF200513299 /* CertificateBundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateBundle.h; sourceTree = "<group>"; };
+ 757A98060CB98BF200513299 /* CertificateBundle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateBundle.m; sourceTree = "<group>"; };
+ 757A98070CB98BF200513299 /* CertificateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateExtensions.h; sourceTree = "<group>"; };
+ 757A98080CB98BF200513299 /* CertificateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateExtensions.m; sourceTree = "<group>"; };
+ 757A98090CB98BF200513299 /* CertificateGeneration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateGeneration.h; sourceTree = "<group>"; };
+ 757A980A0CB98BF200513299 /* CertificateGeneration.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateGeneration.m; sourceTree = "<group>"; };
+ 757A980B0CB98BF200513299 /* Policy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Policy.h; sourceTree = "<group>"; };
+ 757A980C0CB98BF200513299 /* Policy.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Policy.m; sourceTree = "<group>"; };
+ 757A980D0CB98BF300513299 /* Trust.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Trust.h; sourceTree = "<group>"; };
+ 757A980E0CB98BF300513299 /* Trust.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Trust.m; sourceTree = "<group>"; };
+ 757A98100CB98BF300513299 /* FileUtilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileUtilities.h; sourceTree = "<group>"; };
+ 757A98110CB98BF300513299 /* FileUtilities.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FileUtilities.m; sourceTree = "<group>"; };
+ 757A98120CB98BF300513299 /* Key.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Key.h; sourceTree = "<group>"; };
+ 757A98130CB98BF300513299 /* Key.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Key.m; sourceTree = "<group>"; };
+ 757A98140CB98BF300513299 /* KeychainUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainUtils.h; sourceTree = "<group>"; };
+ 757A98150CB98BF300513299 /* KeychainUtils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainUtils.m; sourceTree = "<group>"; };
+ 757A98160CB98BF300513299 /* MutableKey.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MutableKey.h; sourceTree = "<group>"; };
+ 757A98170CB98BF300513299 /* MutableKey.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MutableKey.m; sourceTree = "<group>"; };
+ 757A98180CB98BF300513299 /* NSDataAdditions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NSDataAdditions.h; sourceTree = "<group>"; };
+ 757A98190CB98BF300513299 /* NSDataAdditions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = NSDataAdditions.m; sourceTree = "<group>"; };
+ 757A981B0CB98BF300513299 /* ChainedOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ChainedOutputStream.h; sourceTree = "<group>"; };
+ 757A981C0CB98BF300513299 /* ChainedOutputStream.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ChainedOutputStream.m; sourceTree = "<group>"; };
+ 757A981D0CB98BF300513299 /* DigestOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DigestOutputStream.h; sourceTree = "<group>"; };
+ 757A981E0CB98BF300513299 /* DigestOutputStream.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DigestOutputStream.m; sourceTree = "<group>"; };
+ 757A98200CB98BF300513299 /* Hashcash.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Hashcash.h; sourceTree = "<group>"; };
+ 757A98210CB98BF300513299 /* Hashcash.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Hashcash.m; sourceTree = "<group>"; };
+ 757A98230CB98BF300513299 /* Access.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Access.h; sourceTree = "<group>"; };
+ 757A98240CB98BF300513299 /* Access.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Access.m; sourceTree = "<group>"; };
+ 757A98250CB98BF300513299 /* AccessControlList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AccessControlList.h; sourceTree = "<group>"; };
+ 757A98260CB98BF300513299 /* AccessControlList.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AccessControlList.m; sourceTree = "<group>"; };
+ 757A98270CB98BF300513299 /* Identity.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Identity.h; sourceTree = "<group>"; };
+ 757A98280CB98BF300513299 /* Identity.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Identity.m; sourceTree = "<group>"; };
+ 757A98290CB98BF300513299 /* Keychain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Keychain.h; sourceTree = "<group>"; };
+ 757A982A0CB98BF300513299 /* Keychain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Keychain.m; sourceTree = "<group>"; };
+ 757A982B0CB98BF300513299 /* KeychainItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainItem.h; sourceTree = "<group>"; };
+ 757A982C0CB98BF300513299 /* KeychainItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainItem.m; sourceTree = "<group>"; };
+ 757A982D0CB98BF300513299 /* KeychainSearch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainSearch.h; sourceTree = "<group>"; };
+ 757A982E0CB98BF300513299 /* KeychainSearch.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainSearch.m; sourceTree = "<group>"; };
+ 757A982F0CB98BF300513299 /* TrustedApplication.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TrustedApplication.h; sourceTree = "<group>"; };
+ 757A98300CB98BF300513299 /* TrustedApplication.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = TrustedApplication.m; sourceTree = "<group>"; };
+ 757A98330CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Constants.strings"; sourceTree = "<group>"; };
+ 757A98350CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Mode Constants.strings"; sourceTree = "<group>"; };
+ 757A98370CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Mode Names.strings"; sourceTree = "<group>"; };
+ 757A98390CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Names.strings"; sourceTree = "<group>"; };
+ 757A983B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Authentication Type Constants.strings"; sourceTree = "<group>"; };
+ 757A983D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Authentication Type Names.strings"; sourceTree = "<group>"; };
+ 757A983F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/BER Code Constants.strings"; sourceTree = "<group>"; };
+ 757A98410CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/BER Code Names.strings"; sourceTree = "<group>"; };
+ 757A98430CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Encoding Constants.strings"; sourceTree = "<group>"; };
+ 757A98450CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Encoding Names.strings"; sourceTree = "<group>"; };
+ 757A98470CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Type Constants.strings"; sourceTree = "<group>"; };
+ 757A98490CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Type Names.strings"; sourceTree = "<group>"; };
+ 757A984B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Encoding Constants.strings"; sourceTree = "<group>"; };
+ 757A984D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Encoding Names.strings"; sourceTree = "<group>"; };
+ 757A984F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Type Constants.strings"; sourceTree = "<group>"; };
+ 757A98510CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Type Names.strings"; sourceTree = "<group>"; };
+ 757A98530CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Base Names.strings"; sourceTree = "<group>"; };
+ 757A98550CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Constants.strings"; sourceTree = "<group>"; };
+ 757A98570CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Core Names.strings"; sourceTree = "<group>"; };
+ 757A98590CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Descriptions.strings"; sourceTree = "<group>"; };
+ 757A985B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Names.strings"; sourceTree = "<group>"; };
+ 757A985D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Extension Format Constants.strings"; sourceTree = "<group>"; };
+ 757A985F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Extension Format Names.strings"; sourceTree = "<group>"; };
+ 757A98610CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/GUID Names.strings"; sourceTree = "<group>"; };
+ 757A98630CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 757A98650CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Key Attribute Constants.strings"; sourceTree = "<group>"; };
+ 757A98670CB98BF300513299 /* English */ = {isa = PBXFileReference...
[truncated message content] |
|
From: <wad...@us...> - 2008-03-29 21:34:59
|
Revision: 454
http://keychain.svn.sourceforge.net/keychain/?rev=454&view=rev
Author: wadetregaskis
Date: 2008-03-29 14:35:03 -0700 (Sat, 29 Mar 2008)
Log Message:
-----------
* Fix up Subversion's retarded mistake.
Added Paths:
-----------
trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/project.pbxproj
Added: trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/project.pbxproj
===================================================================
--- trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/project.pbxproj (rev 0)
+++ trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/project.pbxproj 2008-03-29 21:35:03 UTC (rev 454)
@@ -0,0 +1,2818 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 75A0764A0943BA09008B9D9E /* World */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 75A076580943BA3D008B9D9E /* Build configuration list for PBXAggregateTarget "World" */;
+ buildPhases = (
+ );
+ dependencies = (
+ 75A0764C0943BA13008B9D9E /* PBXTargetDependency */,
+ 75A0764E0943BA16008B9D9E /* PBXTargetDependency */,
+ 75A076500943BA18008B9D9E /* PBXTargetDependency */,
+ 75A076520943BA1A008B9D9E /* PBXTargetDependency */,
+ 75A076540943BA1C008B9D9E /* PBXTargetDependency */,
+ 75A076560943BA1D008B9D9E /* PBXTargetDependency */,
+ 755CFABD0A1F672D008C69A9 /* PBXTargetDependency */,
+ 755DE3320A20A2B9002EAC2B /* PBXTargetDependency */,
+ 755DE3340A20A2B9002EAC2B /* PBXTargetDependency */,
+ 75C6E9300A3BE210009201FB /* PBXTargetDependency */,
+ 7506C0400A3DB5EA000DB6BD /* PBXTargetDependency */,
+ 7572F7460D9EC202001F66CD /* PBXTargetDependency */,
+ );
+ name = World;
+ productName = World;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 7506C0380A3DB5A8000DB6BD /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7506C0520A3DB606000DB6BD /* PolicyProber.m in Sources */ = {isa = PBXBuildFile; fileRef = 7506C0510A3DB606000DB6BD /* PolicyProber.m */; };
+ 751166810CA6012400A619CF /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+ 7537BBF40D9ECB4C00F6F134 /* KeychainSearchInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7537BBF30D9ECB4C00F6F134 /* KeychainSearchInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 7540B3ED0999D1C000469F46 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7540B3FE0999D1D600469F46 /* SKeyPlusTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7540B3FD0999D1D600469F46 /* SKeyPlusTester.m */; };
+ 7554346E0D037157003D0C29 /* External Item Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 755434660D037157003D0C29 /* External Item Type Names.strings */; };
+ 7554346F0D037157003D0C29 /* External Item Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 755434680D037157003D0C29 /* External Item Type Constants.strings */; };
+ 755434700D037157003D0C29 /* External Format Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7554346A0D037157003D0C29 /* External Format Names.strings */; };
+ 755434710D037157003D0C29 /* External Format Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7554346C0D037157003D0C29 /* External Format Constants.strings */; };
+ 7556131A0A2090B5003428C2 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 755613250A209100003428C2 /* CryptographicTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 755613240A209100003428C2 /* CryptographicTester.m */; };
+ 755613260A20910C003428C2 /* CertificateGenerationTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7594D49C0A20467E0090E497 /* CertificateGenerationTester.m */; };
+ 757A97E80CB98BCD00513299 /* CSSMACLEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D00CB98BCD00513299 /* CSSMACLEntry.h */; };
+ 757A97E90CB98BCD00513299 /* CSSMACLEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97D10CB98BCD00513299 /* CSSMACLEntry.m */; };
+ 757A97EA0CB98BCD00513299 /* CSSMControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D20CB98BCD00513299 /* CSSMControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97EB0CB98BCD00513299 /* CSSMControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97D30CB98BCD00513299 /* CSSMControl.m */; };
+ 757A97EC0CB98BCD00513299 /* CSSMControlInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D40CB98BCD00513299 /* CSSMControlInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A97F10CB98BCD00513299 /* CSSMDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97D90CB98BCD00513299 /* CSSMDefaults.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F20CB98BCD00513299 /* CSSMDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DA0CB98BCD00513299 /* CSSMDefaults.m */; };
+ 757A97F30CB98BCD00513299 /* CSSMInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DB0CB98BCD00513299 /* CSSMInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F40CB98BCD00513299 /* CSSMInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DC0CB98BCD00513299 /* CSSMInfo.m */; };
+ 757A97F50CB98BCD00513299 /* CSSMManagedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DD0CB98BCD00513299 /* CSSMManagedModule.h */; };
+ 757A97F60CB98BCD00513299 /* CSSMManagedModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97DE0CB98BCD00513299 /* CSSMManagedModule.m */; };
+ 757A97F70CB98BCD00513299 /* CSSMModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97DF0CB98BCD00513299 /* CSSMModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97F80CB98BCD00513299 /* CSSMModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E00CB98BCD00513299 /* CSSMModule.m */; };
+ 757A97F90CB98BCD00513299 /* CSSMOpenDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E10CB98BCD00513299 /* CSSMOpenDataStore.h */; settings = {ATTRIBUTES = (); }; };
+ 757A97FA0CB98BCD00513299 /* CSSMOpenDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E20CB98BCD00513299 /* CSSMOpenDataStore.m */; };
+ 757A97FB0CB98BCD00513299 /* CSSMTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E30CB98BCD00513299 /* CSSMTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FC0CB98BCD00513299 /* CSSMUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E40CB98BCD00513299 /* CSSMUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FD0CB98BCD00513299 /* CSSMUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E50CB98BCD00513299 /* CSSMUtils.m */; };
+ 757A97FE0CB98BCD00513299 /* MDS.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A97E60CB98BCD00513299 /* MDS.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A97FF0CB98BCD00513299 /* MDS.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A97E70CB98BCD00513299 /* MDS.m */; };
+ 757A98A40CB98BF300513299 /* ABPersonAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98010CB98BF200513299 /* ABPersonAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98A50CB98BF300513299 /* ABPersonAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98020CB98BF200513299 /* ABPersonAdditions.m */; };
+ 757A98A60CB98BF300513299 /* Certificate.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98030CB98BF200513299 /* Certificate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98A70CB98BF300513299 /* Certificate.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98040CB98BF200513299 /* Certificate.m */; };
+ 757A98AA0CB98BF300513299 /* CertificateExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98070CB98BF200513299 /* CertificateExtensions.h */; settings = {ATTRIBUTES = (); }; };
+ 757A98AB0CB98BF300513299 /* CertificateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98080CB98BF200513299 /* CertificateExtensions.m */; };
+ 757A98AC0CB98BF300513299 /* CertificateGeneration.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98090CB98BF200513299 /* CertificateGeneration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98AD0CB98BF300513299 /* CertificateGeneration.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980A0CB98BF200513299 /* CertificateGeneration.m */; };
+ 757A98AE0CB98BF300513299 /* Policy.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A980B0CB98BF200513299 /* Policy.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98AF0CB98BF300513299 /* Policy.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980C0CB98BF200513299 /* Policy.m */; };
+ 757A98B00CB98BF300513299 /* Trust.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A980D0CB98BF300513299 /* Trust.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B10CB98BF300513299 /* Trust.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A980E0CB98BF300513299 /* Trust.m */; };
+ 757A98B20CB98BF300513299 /* FileUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98100CB98BF300513299 /* FileUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B30CB98BF300513299 /* FileUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98110CB98BF300513299 /* FileUtilities.m */; };
+ 757A98B40CB98BF300513299 /* Key.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98120CB98BF300513299 /* Key.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B50CB98BF300513299 /* Key.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98130CB98BF300513299 /* Key.m */; };
+ 757A98B60CB98BF300513299 /* KeychainUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98140CB98BF300513299 /* KeychainUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B70CB98BF300513299 /* KeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98150CB98BF300513299 /* KeychainUtils.m */; };
+ 757A98B80CB98BF300513299 /* MutableKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98160CB98BF300513299 /* MutableKey.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98B90CB98BF300513299 /* MutableKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98170CB98BF300513299 /* MutableKey.m */; };
+ 757A98BA0CB98BF300513299 /* NSDataAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98180CB98BF300513299 /* NSDataAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BB0CB98BF300513299 /* NSDataAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98190CB98BF300513299 /* NSDataAdditions.m */; };
+ 757A98BC0CB98BF300513299 /* ChainedOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A981B0CB98BF300513299 /* ChainedOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BD0CB98BF300513299 /* ChainedOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A981C0CB98BF300513299 /* ChainedOutputStream.m */; };
+ 757A98BE0CB98BF300513299 /* DigestOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A981D0CB98BF300513299 /* DigestOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98BF0CB98BF300513299 /* DigestOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A981E0CB98BF300513299 /* DigestOutputStream.m */; };
+ 757A98C00CB98BF300513299 /* Hashcash.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98200CB98BF300513299 /* Hashcash.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C10CB98BF300513299 /* Hashcash.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98210CB98BF300513299 /* Hashcash.m */; };
+ 757A98C20CB98BF300513299 /* Access.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98230CB98BF300513299 /* Access.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C30CB98BF300513299 /* Access.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98240CB98BF300513299 /* Access.m */; };
+ 757A98C40CB98BF300513299 /* AccessControlList.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98250CB98BF300513299 /* AccessControlList.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C50CB98BF300513299 /* AccessControlList.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98260CB98BF300513299 /* AccessControlList.m */; };
+ 757A98C60CB98BF300513299 /* Identity.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98270CB98BF300513299 /* Identity.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C70CB98BF300513299 /* Identity.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98280CB98BF300513299 /* Identity.m */; };
+ 757A98C80CB98BF300513299 /* Keychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98290CB98BF300513299 /* Keychain.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98C90CB98BF300513299 /* Keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982A0CB98BF300513299 /* Keychain.m */; };
+ 757A98CA0CB98BF300513299 /* KeychainItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982B0CB98BF300513299 /* KeychainItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CB0CB98BF300513299 /* KeychainItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982C0CB98BF300513299 /* KeychainItem.m */; };
+ 757A98CC0CB98BF300513299 /* KeychainSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982D0CB98BF300513299 /* KeychainSearch.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CD0CB98BF300513299 /* KeychainSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A982E0CB98BF300513299 /* KeychainSearch.m */; };
+ 757A98CE0CB98BF300513299 /* TrustedApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A982F0CB98BF300513299 /* TrustedApplication.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98CF0CB98BF300513299 /* TrustedApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98300CB98BF300513299 /* TrustedApplication.m */; };
+ 757A98D00CB98BF300513299 /* Algorithm Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98320CB98BF300513299 /* Algorithm Constants.strings */; };
+ 757A98D10CB98BF300513299 /* Algorithm Mode Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98340CB98BF300513299 /* Algorithm Mode Constants.strings */; };
+ 757A98D20CB98BF300513299 /* Algorithm Mode Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98360CB98BF300513299 /* Algorithm Mode Names.strings */; };
+ 757A98D30CB98BF300513299 /* Algorithm Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98380CB98BF300513299 /* Algorithm Names.strings */; };
+ 757A98D40CB98BF300513299 /* Authentication Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983A0CB98BF300513299 /* Authentication Type Constants.strings */; };
+ 757A98D50CB98BF300513299 /* Authentication Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983C0CB98BF300513299 /* Authentication Type Names.strings */; };
+ 757A98D60CB98BF300513299 /* BER Code Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A983E0CB98BF300513299 /* BER Code Constants.strings */; };
+ 757A98D70CB98BF300513299 /* BER Code Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98400CB98BF300513299 /* BER Code Names.strings */; };
+ 757A98D80CB98BF300513299 /* Certificate Encoding Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98420CB98BF300513299 /* Certificate Encoding Constants.strings */; };
+ 757A98D90CB98BF300513299 /* Certificate Encoding Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98440CB98BF300513299 /* Certificate Encoding Names.strings */; };
+ 757A98DA0CB98BF300513299 /* Certificate Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98460CB98BF300513299 /* Certificate Type Constants.strings */; };
+ 757A98DB0CB98BF300513299 /* Certificate Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98480CB98BF300513299 /* Certificate Type Names.strings */; };
+ 757A98DC0CB98BF300513299 /* CRL Encoding Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984A0CB98BF300513299 /* CRL Encoding Constants.strings */; };
+ 757A98DD0CB98BF300513299 /* CRL Encoding Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984C0CB98BF300513299 /* CRL Encoding Names.strings */; };
+ 757A98DE0CB98BF300513299 /* CRL Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A984E0CB98BF300513299 /* CRL Type Constants.strings */; };
+ 757A98DF0CB98BF300513299 /* CRL Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98500CB98BF300513299 /* CRL Type Names.strings */; };
+ 757A98E00CB98BF300513299 /* CSSM Error Base Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98520CB98BF300513299 /* CSSM Error Base Names.strings */; };
+ 757A98E10CB98BF300513299 /* CSSM Error Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98540CB98BF300513299 /* CSSM Error Constants.strings */; };
+ 757A98E20CB98BF300513299 /* CSSM Error Core Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98560CB98BF300513299 /* CSSM Error Core Names.strings */; };
+ 757A98E30CB98BF300513299 /* CSSM Error Descriptions.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98580CB98BF300513299 /* CSSM Error Descriptions.strings */; };
+ 757A98E40CB98BF300513299 /* CSSM Error Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985A0CB98BF300513299 /* CSSM Error Names.strings */; };
+ 757A98E50CB98BF300513299 /* Extension Format Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985C0CB98BF300513299 /* Extension Format Constants.strings */; };
+ 757A98E60CB98BF300513299 /* Extension Format Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A985E0CB98BF300513299 /* Extension Format Names.strings */; };
+ 757A98E70CB98BF300513299 /* GUID Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98600CB98BF300513299 /* GUID Names.strings */; };
+ 757A98E80CB98BF300513299 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98620CB98BF300513299 /* InfoPlist.strings */; };
+ 757A98E90CB98BF300513299 /* Key Attribute Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98640CB98BF300513299 /* Key Attribute Constants.strings */; };
+ 757A98EA0CB98BF300513299 /* Key Attribute Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98660CB98BF300513299 /* Key Attribute Names.strings */; };
+ 757A98EB0CB98BF300513299 /* Key Class Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98680CB98BF300513299 /* Key Class Constants.strings */; };
+ 757A98EC0CB98BF300513299 /* Key Class Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986A0CB98BF300513299 /* Key Class Names.strings */; };
+ 757A98ED0CB98BF300513299 /* Key Usage Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986C0CB98BF300513299 /* Key Usage Constants.strings */; };
+ 757A98EE0CB98BF300513299 /* Key Usage Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A986E0CB98BF300513299 /* Key Usage Names.strings */; };
+ 757A98EF0CB98BF300513299 /* Keyblob Formats.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98700CB98BF300513299 /* Keyblob Formats.strings */; };
+ 757A98F00CB98BF300513299 /* Keyblob Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98720CB98BF300513299 /* Keyblob Type Constants.strings */; };
+ 757A98F10CB98BF300513299 /* Keyblob Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98740CB98BF300513299 /* Keyblob Type Names.strings */; };
+ 757A98F20CB98BF300513299 /* Keychain Attribute Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98760CB98BF300513299 /* Keychain Attribute Type Constants.strings */; };
+ 757A98F30CB98BF300513299 /* Keychain Attribute Type Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98780CB98BF300513299 /* Keychain Attribute Type Names.strings */; };
+ 757A98F40CB98BF300513299 /* KeychainItem Class Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987A0CB98BF300513299 /* KeychainItem Class Constants.strings */; };
+ 757A98F50CB98BF300513299 /* KeychainItem Class Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987C0CB98BF300513299 /* KeychainItem Class Names.strings */; };
+ 757A98F60CB98BF300513299 /* Misc Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A987E0CB98BF300513299 /* Misc Names.strings */; };
+ 757A98F70CB98BF300513299 /* OID Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98800CB98BF300513299 /* OID Names.strings */; };
+ 757A98F80CB98BF300513299 /* OSStatus Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98820CB98BF300513299 /* OSStatus Constants.strings */; };
+ 757A98F90CB98BF300513299 /* OSStatus Descriptions.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98840CB98BF300513299 /* OSStatus Descriptions.strings */; };
+ 757A98FA0CB98BF300513299 /* Protocol Type Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98860CB98BF300513299 /* Protocol Type Constants.strings */; };
+ 757A98FB0CB98BF300513299 /* Protocol Type Long Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A98880CB98BF300513299 /* Protocol Type Long Names.strings */; };
+ 757A98FC0CB98BF300513299 /* Protocol Type Short Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757A988A0CB98BF300513299 /* Protocol Type Short Names.strings */; };
+ 757A98FE0CB98BF300513299 /* SKeyPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A988E0CB98BF300513299 /* SKeyPlus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A98FF0CB98BF300513299 /* SKeyPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A988F0CB98BF300513299 /* SKeyPlus.m */; };
+ 757A99000CB98BF300513299 /* CompilerIndependence.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98910CB98BF300513299 /* CompilerIndependence.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99010CB98BF300513299 /* LocalisationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98920CB98BF300513299 /* LocalisationUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99020CB98BF300513299 /* LocalisationUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98930CB98BF300513299 /* LocalisationUtils.m */; };
+ 757A99030CB98BF300513299 /* Logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98940CB98BF300513299 /* Logging.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99040CB98BF300513299 /* Logging.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98950CB98BF300513299 /* Logging.m */; };
+ 757A99050CB98BF300513299 /* MultiThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98960CB98BF300513299 /* MultiThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99060CB98BF300513299 /* MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98970CB98BF300513299 /* MultiThreading.m */; };
+ 757A99070CB98BF300513299 /* MultiThreadingInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98980CB98BF300513299 /* MultiThreadingInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 757A99080CB98BF300513299 /* NSCachedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98990CB98BF300513299 /* NSCachedObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99090CB98BF300513299 /* NSCachedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989A0CB98BF300513299 /* NSCachedObject.m */; };
+ 757A990A0CB98BF300513299 /* NSCalendarDateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989B0CB98BF300513299 /* NSCalendarDateAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990B0CB98BF300513299 /* NSCalendarDateAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989C0CB98BF300513299 /* NSCalendarDateAdditions.m */; };
+ 757A990C0CB98BF300513299 /* SecurityUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989D0CB98BF300513299 /* SecurityUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990D0CB98BF300513299 /* SecurityUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A989E0CB98BF300513299 /* SecurityUtils.m */; };
+ 757A990E0CB98BF300513299 /* UtilitySupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A989F0CB98BF300513299 /* UtilitySupport.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A990F0CB98BF300513299 /* UtilitySupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98A00CB98BF300513299 /* UtilitySupport.m */; };
+ 757A99100CB98BF300513299 /* x509.h in Headers */ = {isa = PBXBuildFile; fileRef = 757A98A20CB98BF300513299 /* x509.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 757A99110CB98BF300513299 /* x509.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A98A30CB98BF300513299 /* x509.m */; };
+ 7588AC710CA3916D00466BEF /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 7588AC8B0CA391B500466BEF /* KeychainTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7588AC8A0CA391B500466BEF /* KeychainTester.m */; };
+ 7588AC8C0CA391BC00466BEF /* KeychainTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7588AC8A0CA391B500466BEF /* KeychainTester.m */; };
+ 7588AEE90CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEA0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEB0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEC0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEED0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEE0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEEF0CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF00CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF10CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF20CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588AEF30CA3A23300466BEF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7588ADD40CA3A23300466BEF /* AppKit.framework */; };
+ 7588B0080CA3A24000466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0090CA3A24600466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00A0CA3A24900466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00B0CA3A24C00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00C0CA3A25100466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00D0CA3A25600466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00E0CA3A25A00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B00F0CA3A25F00466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0100CA3A26100466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0110CA3A26400466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7588B0120CA3A26800466BEF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 7594D48C0A2045E00090E497 /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A074F809438F8E008B9D9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+ 75A074F909438F8E008B9D9E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+ 75A074FA09438F8E008B9D9E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58080CA03EB75D701B6B625 /* CoreFoundation.framework */; };
+ 75A074FB09438F8E008B9D9E /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75BAD75E0480E99400DA8EF2 /* AddressBook.framework */; };
+ 75A0750509438F8E008B9D9E /* CSSMUtilsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 75EE821C0837443E00D8CF7B /* CSSMUtilsTester.m */; };
+ 75A0751009438F8E008B9D9E /* NSCalendarDateAdditionsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 751EAB570839B75500690BA7 /* NSCalendarDateAdditionsTester.m */; };
+ 75A0751B09438F8F008B9D9E /* OutputStreamsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 753F8AB80841F08F0060298F /* OutputStreamsTester.m */; };
+ 75A0752609438F8F008B9D9E /* StringsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 7563708D08444F4F00F9E7D7 /* StringsTester.m */; };
+ 75A0753209438F8F008B9D9E /* MDSProber.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D1B95E08A8E74200D77A20 /* MDSProber.m */; };
+ 75A0753C09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753D09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753E09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0753F09438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75A0754009438F8F008B9D9E /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75C6E8F20A3BDCD8009201FB /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A0750209438F8E008B9D9E /* Keychain.framework */; };
+ 75C6E9040A3BDD1A009201FB /* KeychainSearchTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 75C6E9030A3BDD1A009201FB /* KeychainSearchTester.m */; };
+ 75D25AA60CC1643600C8B443 /* Authorization Tag Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA20CC1643600C8B443 /* Authorization Tag Constants.strings */; };
+ 75D25AA70CC1643600C8B443 /* Authorization Tag Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA40CC1643600C8B443 /* Authorization Tag Names.strings */; };
+ 75D914A30D333062002926F8 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXBuildStyle section */
+ 75E7BFF30D396F1E0078BFE0 /* Development */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ };
+ name = Development;
+ };
+ 75E7BFF40D396F1E0078BFE0 /* Deployment */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ };
+ name = Deployment;
+ };
+/* End PBXBuildStyle section */
+
+/* Begin PBXContainerItemProxy section */
+ 7506C03F0A3DB5EA000DB6BD /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7506C0340A3DB5A8000DB6BD;
+ remoteInfo = PolicyProber;
+ };
+ 754E37390A553CC700005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37440A553CCD00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37460A553CD000005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37480A553CD400005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374A0A553CD700005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374C0A553CDA00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E374E0A553CDE00005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37500A553CE100005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37520A553CE300005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 754E37540A553CE600005844 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 755CFABC0A1F672D008C69A9 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7540B3E90999D1C000469F46;
+ remoteInfo = SKeyPlusTester;
+ };
+ 755DE3310A20A2B9002EAC2B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7594D4880A2045E00090E497;
+ remoteInfo = CertificateGenerationTester;
+ };
+ 755DE3330A20A2B9002EAC2B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 755613160A2090B5003428C2;
+ remoteInfo = CryptographyTester;
+ };
+ 7572F7450D9EC202001F66CD /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 7588AC6B0CA3916D00466BEF;
+ remoteInfo = KeychainTester;
+ };
+ 7588AC6D0CA3916D00466BEF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 75A0764B0943BA13008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0749209438F8E008B9D9E;
+ remoteInfo = Keychain;
+ };
+ 75A0764D0943BA16008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0750309438F8E008B9D9E;
+ remoteInfo = CSSMUtilsTester;
+ };
+ 75A0764F0943BA18008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0750E09438F8E008B9D9E;
+ remoteInfo = NSCalendarDateAdditionsTester;
+ };
+ 75A076510943BA1A008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0751909438F8F008B9D9E;
+ remoteInfo = OutputStreamsTester;
+ };
+ 75A076530943BA1C008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0752409438F8F008B9D9E;
+ remoteInfo = StringsTester;
+ };
+ 75A076550943BA1D008B9D9E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75A0753009438F8F008B9D9E;
+ remoteInfo = MDSProber;
+ };
+ 75C6E92F0A3BE210009201FB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 75C6E8EE0A3BDCD8009201FB;
+ remoteInfo = KeychainSearchTester;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 7506C03D0A3DB5A8000DB6BD /* PolicyProber */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PolicyProber; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7506C0510A3DB606000DB6BD /* PolicyProber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PolicyProber.m; path = Testers/PolicyProber.m; sourceTree = "<group>"; };
+ 751EAB2C0839B2B300690BA7 /* TestingCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestingCommon.h; path = Testers/TestingCommon.h; sourceTree = "<group>"; };
+ 751EAB570839B75500690BA7 /* NSCalendarDateAdditionsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSCalendarDateAdditionsTester.m; path = Testers/NSCalendarDateAdditionsTester.m; sourceTree = "<group>"; };
+ 7537BBF30D9ECB4C00F6F134 /* KeychainSearchInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeychainSearchInternal.h; sourceTree = "<group>"; };
+ 753F8AB80841F08F0060298F /* OutputStreamsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OutputStreamsTester.m; path = Testers/OutputStreamsTester.m; sourceTree = "<group>"; };
+ 7540B3F20999D1C000469F46 /* SKeyPlusTester */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SKeyPlusTester; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7540B3FD0999D1D600469F46 /* SKeyPlusTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SKeyPlusTester.m; path = Testers/SKeyPlusTester.m; sourceTree = "<group>"; };
+ 755434670D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Item Type Names.strings"; sourceTree = "<group>"; };
+ 755434690D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Item Type Constants.strings"; sourceTree = "<group>"; };
+ 7554346B0D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Format Names.strings"; sourceTree = "<group>"; };
+ 7554346D0D037157003D0C29 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/External Format Constants.strings"; sourceTree = "<group>"; };
+ 7556131F0A2090B5003428C2 /* CryptographyTester */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CryptographyTester; sourceTree = BUILT_PRODUCTS_DIR; };
+ 755613240A209100003428C2 /* CryptographicTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CryptographicTester.m; path = Testers/CryptographicTester.m; sourceTree = "<group>"; };
+ 7563708D08444F4F00F9E7D7 /* StringsTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StringsTester.m; path = Testers/StringsTester.m; sourceTree = "<group>"; };
+ 757709C20B12D4AA00E926A4 /* FrameworkDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkDebug.xcconfig; sourceTree = "<group>"; };
+ 757709CA0B12DE2000E926A4 /* FrameworkRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkRelease.xcconfig; sourceTree = "<group>"; };
+ 757A97D00CB98BCD00513299 /* CSSMACLEntry.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMACLEntry.h; sourceTree = "<group>"; };
+ 757A97D10CB98BCD00513299 /* CSSMACLEntry.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMACLEntry.m; sourceTree = "<group>"; };
+ 757A97D20CB98BCD00513299 /* CSSMControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMControl.h; sourceTree = "<group>"; };
+ 757A97D30CB98BCD00513299 /* CSSMControl.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMControl.m; sourceTree = "<group>"; };
+ 757A97D40CB98BCD00513299 /* CSSMControlInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMControlInternal.h; sourceTree = "<group>"; };
+ 757A97D50CB98BCD00513299 /* CSSMDataStorageModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDataStorageModule.h; sourceTree = "<group>"; };
+ 757A97D60CB98BCD00513299 /* CSSMDataStorageModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDataStorageModule.m; sourceTree = "<group>"; };
+ 757A97D70CB98BCD00513299 /* CSSMDataStore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDataStore.h; sourceTree = "<group>"; };
+ 757A97D80CB98BCD00513299 /* CSSMDataStore.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDataStore.m; sourceTree = "<group>"; };
+ 757A97D90CB98BCD00513299 /* CSSMDefaults.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMDefaults.h; sourceTree = "<group>"; };
+ 757A97DA0CB98BCD00513299 /* CSSMDefaults.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMDefaults.m; sourceTree = "<group>"; };
+ 757A97DB0CB98BCD00513299 /* CSSMInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMInfo.h; sourceTree = "<group>"; };
+ 757A97DC0CB98BCD00513299 /* CSSMInfo.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMInfo.m; sourceTree = "<group>"; };
+ 757A97DD0CB98BCD00513299 /* CSSMManagedModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMManagedModule.h; sourceTree = "<group>"; };
+ 757A97DE0CB98BCD00513299 /* CSSMManagedModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMManagedModule.m; sourceTree = "<group>"; };
+ 757A97DF0CB98BCD00513299 /* CSSMModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMModule.h; sourceTree = "<group>"; };
+ 757A97E00CB98BCD00513299 /* CSSMModule.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMModule.m; sourceTree = "<group>"; };
+ 757A97E10CB98BCD00513299 /* CSSMOpenDataStore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMOpenDataStore.h; sourceTree = "<group>"; };
+ 757A97E20CB98BCD00513299 /* CSSMOpenDataStore.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMOpenDataStore.m; sourceTree = "<group>"; };
+ 757A97E30CB98BCD00513299 /* CSSMTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMTypes.h; sourceTree = "<group>"; };
+ 757A97E40CB98BCD00513299 /* CSSMUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CSSMUtils.h; sourceTree = "<group>"; };
+ 757A97E50CB98BCD00513299 /* CSSMUtils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CSSMUtils.m; sourceTree = "<group>"; };
+ 757A97E60CB98BCD00513299 /* MDS.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MDS.h; sourceTree = "<group>"; };
+ 757A97E70CB98BCD00513299 /* MDS.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MDS.m; sourceTree = "<group>"; };
+ 757A98010CB98BF200513299 /* ABPersonAdditions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ABPersonAdditions.h; sourceTree = "<group>"; };
+ 757A98020CB98BF200513299 /* ABPersonAdditions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ABPersonAdditions.m; sourceTree = "<group>"; };
+ 757A98030CB98BF200513299 /* Certificate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Certificate.h; sourceTree = "<group>"; };
+ 757A98040CB98BF200513299 /* Certificate.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Certificate.m; sourceTree = "<group>"; };
+ 757A98050CB98BF200513299 /* CertificateBundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateBundle.h; sourceTree = "<group>"; };
+ 757A98060CB98BF200513299 /* CertificateBundle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateBundle.m; sourceTree = "<group>"; };
+ 757A98070CB98BF200513299 /* CertificateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateExtensions.h; sourceTree = "<group>"; };
+ 757A98080CB98BF200513299 /* CertificateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateExtensions.m; sourceTree = "<group>"; };
+ 757A98090CB98BF200513299 /* CertificateGeneration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CertificateGeneration.h; sourceTree = "<group>"; };
+ 757A980A0CB98BF200513299 /* CertificateGeneration.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CertificateGeneration.m; sourceTree = "<group>"; };
+ 757A980B0CB98BF200513299 /* Policy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Policy.h; sourceTree = "<group>"; };
+ 757A980C0CB98BF200513299 /* Policy.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Policy.m; sourceTree = "<group>"; };
+ 757A980D0CB98BF300513299 /* Trust.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Trust.h; sourceTree = "<group>"; };
+ 757A980E0CB98BF300513299 /* Trust.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Trust.m; sourceTree = "<group>"; };
+ 757A98100CB98BF300513299 /* FileUtilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileUtilities.h; sourceTree = "<group>"; };
+ 757A98110CB98BF300513299 /* FileUtilities.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FileUtilities.m; sourceTree = "<group>"; };
+ 757A98120CB98BF300513299 /* Key.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Key.h; sourceTree = "<group>"; };
+ 757A98130CB98BF300513299 /* Key.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Key.m; sourceTree = "<group>"; };
+ 757A98140CB98BF300513299 /* KeychainUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainUtils.h; sourceTree = "<group>"; };
+ 757A98150CB98BF300513299 /* KeychainUtils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainUtils.m; sourceTree = "<group>"; };
+ 757A98160CB98BF300513299 /* MutableKey.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MutableKey.h; sourceTree = "<group>"; };
+ 757A98170CB98BF300513299 /* MutableKey.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MutableKey.m; sourceTree = "<group>"; };
+ 757A98180CB98BF300513299 /* NSDataAdditions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NSDataAdditions.h; sourceTree = "<group>"; };
+ 757A98190CB98BF300513299 /* NSDataAdditions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = NSDataAdditions.m; sourceTree = "<group>"; };
+ 757A981B0CB98BF300513299 /* ChainedOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ChainedOutputStream.h; sourceTree = "<group>"; };
+ 757A981C0CB98BF300513299 /* ChainedOutputStream.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ChainedOutputStream.m; sourceTree = "<group>"; };
+ 757A981D0CB98BF300513299 /* DigestOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DigestOutputStream.h; sourceTree = "<group>"; };
+ 757A981E0CB98BF300513299 /* DigestOutputStream.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DigestOutputStream.m; sourceTree = "<group>"; };
+ 757A98200CB98BF300513299 /* Hashcash.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Hashcash.h; sourceTree = "<group>"; };
+ 757A98210CB98BF300513299 /* Hashcash.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Hashcash.m; sourceTree = "<group>"; };
+ 757A98230CB98BF300513299 /* Access.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Access.h; sourceTree = "<group>"; };
+ 757A98240CB98BF300513299 /* Access.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Access.m; sourceTree = "<group>"; };
+ 757A98250CB98BF300513299 /* AccessControlList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AccessControlList.h; sourceTree = "<group>"; };
+ 757A98260CB98BF300513299 /* AccessControlList.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AccessControlList.m; sourceTree = "<group>"; };
+ 757A98270CB98BF300513299 /* Identity.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Identity.h; sourceTree = "<group>"; };
+ 757A98280CB98BF300513299 /* Identity.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Identity.m; sourceTree = "<group>"; };
+ 757A98290CB98BF300513299 /* Keychain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Keychain.h; sourceTree = "<group>"; };
+ 757A982A0CB98BF300513299 /* Keychain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Keychain.m; sourceTree = "<group>"; };
+ 757A982B0CB98BF300513299 /* KeychainItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainItem.h; sourceTree = "<group>"; };
+ 757A982C0CB98BF300513299 /* KeychainItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainItem.m; sourceTree = "<group>"; };
+ 757A982D0CB98BF300513299 /* KeychainSearch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KeychainSearch.h; sourceTree = "<group>"; };
+ 757A982E0CB98BF300513299 /* KeychainSearch.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KeychainSearch.m; sourceTree = "<group>"; };
+ 757A982F0CB98BF300513299 /* TrustedApplication.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TrustedApplication.h; sourceTree = "<group>"; };
+ 757A98300CB98BF300513299 /* TrustedApplication.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = TrustedApplication.m; sourceTree = "<group>"; };
+ 757A98330CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Constants.strings"; sourceTree = "<group>"; };
+ 757A98350CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Mode Constants.strings"; sourceTree = "<group>"; };
+ 757A98370CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Mode Names.strings"; sourceTree = "<group>"; };
+ 757A98390CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Algorithm Names.strings"; sourceTree = "<group>"; };
+ 757A983B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Authentication Type Constants.strings"; sourceTree = "<group>"; };
+ 757A983D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Authentication Type Names.strings"; sourceTree = "<group>"; };
+ 757A983F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/BER Code Constants.strings"; sourceTree = "<group>"; };
+ 757A98410CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/BER Code Names.strings"; sourceTree = "<group>"; };
+ 757A98430CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Encoding Constants.strings"; sourceTree = "<group>"; };
+ 757A98450CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Encoding Names.strings"; sourceTree = "<group>"; };
+ 757A98470CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Type Constants.strings"; sourceTree = "<group>"; };
+ 757A98490CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Certificate Type Names.strings"; sourceTree = "<group>"; };
+ 757A984B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Encoding Constants.strings"; sourceTree = "<group>"; };
+ 757A984D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Encoding Names.strings"; sourceTree = "<group>"; };
+ 757A984F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Type Constants.strings"; sourceTree = "<group>"; };
+ 757A98510CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CRL Type Names.strings"; sourceTree = "<group>"; };
+ 757A98530CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Base Names.strings"; sourceTree = "<group>"; };
+ 757A98550CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Constants.strings"; sourceTree = "<group>"; };
+ 757A98570CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Core Names.strings"; sourceTree = "<group>"; };
+ 757A98590CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Descriptions.strings"; sourceTree = "<group>"; };
+ 757A985B0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/CSSM Error Names.strings"; sourceTree = "<group>"; };
+ 757A985D0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Extension Format Constants.strings"; sourceTree = "<group>"; };
+ 757A985F0CB98BF300513299 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = "English.lproj/Extension Format Names.strings"; sou...
[truncated message content] |
|
From: <wad...@us...> - 2008-03-29 21:33:32
|
Revision: 453
http://keychain.svn.sourceforge.net/keychain/?rev=453&view=rev
Author: wadetregaskis
Date: 2008-03-29 14:33:33 -0700 (Sat, 29 Mar 2008)
Log Message:
-----------
* [Patch courtesy of Nick Zitzmann] Updated for 64-bit and fixed a couple of endianness issues, as well as a few other minor things. Now have an Xcode 3.0 project file in addition to the Xcode 2.x.
Modified Paths:
--------------
trunk/Frameworks/Keychain/CDSA/CSSMControl.m
trunk/Frameworks/Keychain/CDSA/CSSMDefaults.h
trunk/Frameworks/Keychain/CDSA/CSSMDefaults.m
trunk/Frameworks/Keychain/CDSA/CSSMManagedModule.m
trunk/Frameworks/Keychain/CDSA/CSSMOpenDataStore.m
trunk/Frameworks/Keychain/CDSA/CSSMUtils.m
trunk/Frameworks/Keychain/CDSA/MDS.m
trunk/Frameworks/Keychain/Certificates/ABPersonAdditions.m
trunk/Frameworks/Keychain/Certificates/Certificate.m
trunk/Frameworks/Keychain/Certificates/CertificateGeneration.m
trunk/Frameworks/Keychain/Certificates/Policy.m
trunk/Frameworks/Keychain/Cryptography/FileUtilities.m
trunk/Frameworks/Keychain/Cryptography/Key.h
trunk/Frameworks/Keychain/Cryptography/Key.m
trunk/Frameworks/Keychain/Cryptography/KeychainUtils.h
trunk/Frameworks/Keychain/Cryptography/KeychainUtils.m
trunk/Frameworks/Keychain/Cryptography/MutableKey.h
trunk/Frameworks/Keychain/Cryptography/MutableKey.m
trunk/Frameworks/Keychain/Cryptography/NSDataAdditions.m
trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.h
trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.m
trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.h
trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.m
trunk/Frameworks/Keychain/Hashcash/Hashcash.m
trunk/Frameworks/Keychain/Keychain/Access.h
trunk/Frameworks/Keychain/Keychain/Access.m
trunk/Frameworks/Keychain/Keychain/AccessControlList.h
trunk/Frameworks/Keychain/Keychain/AccessControlList.m
trunk/Frameworks/Keychain/Keychain/Identity.h
trunk/Frameworks/Keychain/Keychain/Identity.m
trunk/Frameworks/Keychain/Keychain/Keychain.h
trunk/Frameworks/Keychain/Keychain/Keychain.m
trunk/Frameworks/Keychain/Keychain/KeychainItem.h
trunk/Frameworks/Keychain/Keychain/KeychainItem.m
trunk/Frameworks/Keychain/Keychain/KeychainSearch.h
trunk/Frameworks/Keychain/Keychain/KeychainSearch.m
trunk/Frameworks/Keychain/Keychain/KeychainSearchInternal.h
trunk/Frameworks/Keychain/Keychain/TrustedApplication.h
trunk/Frameworks/Keychain/Keychain/TrustedApplication.m
trunk/Frameworks/Keychain/Testers/CSSMUtilsTester.m
trunk/Frameworks/Keychain/Testers/CryptographicTester.m
trunk/Frameworks/Keychain/Testers/KeychainSearchTester.m
trunk/Frameworks/Keychain/Testers/KeychainTester.m
trunk/Frameworks/Keychain/Testers/MDSProber.m
trunk/Frameworks/Keychain/Testers/NSCalendarDateAdditionsTester.m
trunk/Frameworks/Keychain/Testers/OutputStreamsTester.m
trunk/Frameworks/Keychain/Utilities/NSCalendarDateAdditions.h
trunk/Frameworks/Keychain/Utilities/NSCalendarDateAdditions.m
trunk/Frameworks/Keychain/Utilities/SecurityUtils.m
trunk/Frameworks/Keychain/Utilities/UtilitySupport.m
trunk/Frameworks/Keychain/X509/x509.h
trunk/Frameworks/Keychain/X509/x509.m
trunk/Frameworks/Keychain/install
Added Paths:
-----------
trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/
Removed Paths:
-------------
trunk/Frameworks/Keychain/Keychain (Xcode 2.x).xcodeproj/project.pbxproj
trunk/Frameworks/Keychain/Keychain.xcodeproj/
Modified: trunk/Frameworks/Keychain/CDSA/CSSMControl.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMControl.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMControl.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -37,20 +37,25 @@
static BOOL haveDoneInit = NO;
if (!haveDoneInit) {
- int i;
-
- haveDoneInit = YES;
-
- memset(&defaultCredentials, 0, sizeof(CSSM_ACCESS_CREDENTIALS));
-
- srandom(time(0));
- defaultGUID.Data1 = random();
- defaultGUID.Data2 = random();
- defaultGUID.Data3 = random();
-
- for (i = 0; i < 16; i += 4) {
- *((uint32_t*)(&(keychainFrameworkInitVector[i]))) = random();
- }
+ int i;
+
+ haveDoneInit = YES;
+
+ memset(&defaultCredentials, 0, sizeof(CSSM_ACCESS_CREDENTIALS));
+
+#if __DARWIN_UNIX03
+ srandom((unsigned int)time(NULL));
+#else
+ srandom(time(NULL));
+#endif
+
+ defaultGUID.Data1 = (uint32_t)random();
+ defaultGUID.Data2 = (uint32_t)random();
+ defaultGUID.Data3 = (uint32_t)random();
+
+ for (i = 0; i < 16; i += 4) {
+ *((uint32_t*)(&(keychainFrameworkInitVector[i]))) = (uint32_t)random();
+ }
}
}
@@ -102,7 +107,7 @@
PSYSLOGCND(LOG_ERR, "Unable to initialize CSSM because of error #%"PRIu32".\n", (uint32_t)err);
PDEBUGC("CSSM_Init({%"PRIu32", %"PRIu32"}, %"PRIu32", ?, %"PRIu32", %p (%"PRIu32"), %p) returned error #%"PRIu32".\n",
(uint32_t)((NULL == customVersion) ? defaultVersion.Major : customVersion->Major),
- (uint32_t)((NULL == customVersion) ? &defaultVersion : customVersion),
+ (uint32_t)((NULL == customVersion) ? defaultVersion.Minor : customVersion->Minor),
(uint32_t)customScope,
/*GUIDAsString((NULL == customGUID) ? &defaultGUID : customGUID),*/
(uint32_t)customHierarchy,
Modified: trunk/Frameworks/Keychain/CDSA/CSSMDefaults.h
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMDefaults.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMDefaults.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -54,7 +54,7 @@
Note that you should not rely on this being constant, or containing the same data as keychainFrameworkInitVectorData. */
-extern uint8 keychainFrameworkInitVector[16];
+extern uint8_t keychainFrameworkInitVector[16];
/*! @constant keychainFrameworkInitVectorData
@abstract A generic init vector for cryptographic operations.
@@ -68,13 +68,13 @@
@abstract A constant representing version 1 of the proprietary Keychain raw key format (used by the 'key' extension of NSData, and the corresponding 'data' method of Key).
@discussion The proprietary format used by the Keychain framework is not recommended for general purpose use. Nonetheless, it does support versioning in case it needs to be updated or extended in future. You shouldn't ever really need to use this constant, although you may find it useful to compare it with RAW_KEY_VERSION_CURRENT if you are looking for specific version support. */
-extern const uint32 RAW_KEY_VERSION_1;
+extern const uint32_t RAW_KEY_VERSION_1;
/*! @constant KEYHEADER_VERSION_1_SIZE
@abstract The size of a raw key header in the Keychain framework's proprietary format (version 1).
@discussion The proprietary format used by the Keychain framework is not recommended for general purpose use. If you must use it, you may use this constant to determine the expected size of a raw key header (i.e. the key metadata, not including the actual key itself, which varies in length for different key types and strengths). */
-extern const uint32 KEYHEADER_VERSION_1_SIZE;
+extern const uint32_t KEYHEADER_VERSION_1_SIZE;
/*! @function defaultModeForAlgorithm
Modified: trunk/Frameworks/Keychain/CDSA/CSSMDefaults.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMDefaults.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMDefaults.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -22,11 +22,11 @@
/* The init vector really should be unique per cryptographic operation which uses it. It's presence is unfortunate and it is considered obsolete - it will be removed in a future version of the Keychain framework. */
-uint8 keychainFrameworkInitVector[16]; /* = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 }; */
+uint8_t keychainFrameworkInitVector[16]; /* = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 }; */
const CSSM_DATA keychainFrameworkInitVectorData = {16, keychainFrameworkInitVector};
-const uint32 RAW_KEY_VERSION_1 = 1;
-const uint32 KEYHEADER_VERSION_1_SIZE = 76;
+const uint32_t RAW_KEY_VERSION_1 = 1;
+const uint32_t KEYHEADER_VERSION_1_SIZE = 76;
CSSM_ENCRYPT_MODE defaultModeForAlgorithm(CSSM_ALGORITHMS algorithm) {
Modified: trunk/Frameworks/Keychain/CDSA/CSSMManagedModule.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMManagedModule.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMManagedModule.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -33,18 +33,23 @@
return CSSM_OK;
}
-static int CSSMModuleMagicGenericCallbackContextNumber = 0;
+#ifdef __LP64__
+static int64_t CSSMModuleMagicGenericCallbackContextNumber = 0L;
+#else
+static int32_t CSSMModuleMagicGenericCallbackContextNumber = 0;
+#endif
+typedef size_t CSSM_SIZE; // for the 10.4 SDK
-void* genericCSSMMalloc(uint32 size, void *ref __unused) {
+void* genericCSSMMalloc(CSSM_SIZE size, void *ref __unused) {
return malloc(size);
}
-void* genericCSSMRealloc(void *ptr, uint32 newSize, void *ref __unused) {
+void* genericCSSMRealloc(void *ptr, CSSM_SIZE newSize, void *ref __unused) {
return realloc(ptr, newSize);
}
-void* genericCSSMCalloc(uint32 num, uint32 size, void *ref __unused) {
+void* genericCSSMCalloc(uint32 num, CSSM_SIZE size, void *ref __unused) {
return calloc(num, size);
}
@@ -133,7 +138,11 @@
// Unless of course the user provides their own callback & context, and do so for multiple instances. Bad user. We could put in junk to test for that, but I don't think it's worth it... the user should just be careful; it is noted that they cannot do that in the header documentation.
_callback = &CSSMModuleMagicGenericCallback;
+#ifdef __LP64__
+ _callbackContext = (void *)OSAtomicIncrement64(&CSSMModuleMagicGenericCallbackContextNumber);
+#else
_callbackContext = (void*)OSAtomicIncrement32(&CSSMModuleMagicGenericCallbackContextNumber);
+#endif
_version = keychainFrameworkDefaultCSSMVersion();
_memoryFunctions = *[[self class] defaultMemoryFunctions];
Modified: trunk/Frameworks/Keychain/CDSA/CSSMOpenDataStore.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMOpenDataStore.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMOpenDataStore.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -54,7 +54,7 @@
- (NSArray*)ACLEntriesWithTag:(NSString*)tag {
CSSM_STRING theTag;
- uint32_t numberOfEntries;
+ uint32 numberOfEntries;
CSSM_ACL_ENTRY_INFO *result;
CSSM_RETURN err;
@@ -62,7 +62,7 @@
copyNSStringToString(tag, &theTag);
}
- err = CSSM_DL_GetDbAcl(myHandle, (const CSSM_STRING*)((nil != tag) ? &theTag : NULL), (uint32*)&numberOfEntries, &result);
+ err = CSSM_DL_GetDbAcl(myHandle, (const CSSM_STRING*)((nil != tag) ? &theTag : NULL), &numberOfEntries, &result);
if (CSSM_OK == err) {
NSMutableArray *finalResult = [NSMutableArray arrayWithCapacity:numberOfEntries];
Modified: trunk/Frameworks/Keychain/CDSA/CSSMUtils.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/CSSMUtils.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/CSSMUtils.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -21,7 +21,7 @@
NSString* GUIDAsString(const CSSM_GUID *GUID) {
if (NULL != GUID) {
- return [NSString stringWithFormat:@"%08x-%04hx%04hx-%08x%08x", GUID->Data1, GUID->Data2, GUID->Data3, *((uint32_t*)(GUID->Data4)), *((uint32_t*)(GUID->Data4) + 1)];
+ return [NSString stringWithFormat:@"%08x-%04hx%04hx-%02x%02x%02x%02x%02x%02x%02x%02x", NSSwapBigIntToHost(GUID->Data1), NSSwapBigShortToHost(GUID->Data2), NSSwapBigShortToHost(GUID->Data3), GUID->Data4[0], GUID->Data4[1], GUID->Data4[2], GUID->Data4[3], GUID->Data4[4], GUID->Data4[5], GUID->Data4[6], GUID->Data4[7]];
} else {
PDEBUG(@"Invalid parameter - 'GUID' is NULL.\n");
return nil;
@@ -113,15 +113,15 @@
}
NSString* CSSMErrorName(CSSM_RETURN error) {
- return localizedStringWithFallback([NSString stringWithFormat:@"%lu", (unsigned long)error], @"CSSM Error Names");
+ return localizedStringWithFallback([NSString stringWithFormat:@"%u", error], @"CSSM Error Names");
}
NSString* CSSMErrorConstant(CSSM_RETURN error) {
- return localizedStringWithFallback([NSString stringWithFormat:@"%lu", (unsigned long)error], @"CSSM Error Constants");
+ return localizedStringWithFallback([NSString stringWithFormat:@"%u", error], @"CSSM Error Constants");
}
NSString* CSSMErrorDescription(CSSM_RETURN error) {
- return localizedStringWithFallback([NSString stringWithFormat:@"%lu", (unsigned long)error], @"CSSM Error Descriptions");
+ return localizedStringWithFallback([NSString stringWithFormat:@"%u", error], @"CSSM Error Descriptions");
}
NSString* CSSMErrorAsString(CSSM_RETURN error) {
@@ -133,7 +133,7 @@
return [NSString stringWithFormat:@"%@ (%@)", localizedStringWithFallback(errorRep, @"CSSM Errors"), localizedStringWithFallback(errorRep, @"CSSM Error Names")];
}*/
- NSString *codeAsString = [NSString stringWithFormat:@"%lu", (unsigned long)error];
+ NSString *codeAsString = [NSString stringWithFormat:@"%u", error];
NSString *errorConstant = localizedString(codeAsString, @"CSSM Error Constants");
NSString *errorName = localizedString(codeAsString, @"CSSM Error Names");
NSString *errorDescription = localizedString(codeAsString, @"CSSM Error Descriptions");
@@ -206,7 +206,7 @@
CSSM_DATE CSSMDateForCalendarDate(NSCalendarDate *date) {
CSSM_DATE result;
- int temp;
+ NSInteger temp;
if (date) {
NSCalendarDate *dateGMT = [date copy];
@@ -333,7 +333,7 @@
}
if (format) {
- int year;
+ NSInteger year;
result = [NSCalendarDate dateWithString:timeString calendarFormat:format];
@@ -359,10 +359,10 @@
if (!result) {
PDEBUG(@"Unable to read first part of \"%@\" - expecting yyyymmddHHMM.\n", timeString);
} else {
- unsigned int seconds = 0;
- int offsetHours = 0, offsetMinutes = 0;
+ NSUInteger seconds = 0;
+ NSInteger offsetHours = 0, offsetMinutes = 0;
double fractionalSeconds = 0.0;
- unsigned int index = 12;
+ NSUInteger index = 12;
char temp[5], *check, sign;
BOOL haveSeconds = NO, haveFractionalSeconds = NO, haveTimezone = NO, allGood = YES;
@@ -372,7 +372,7 @@
#define READ_NEXT_FIELD(size, strict) \
if ((!strict && (index < time->time.Length)) || RANGE_CHECK(size)) { \
- int actualSize = min(time->time.Length - index, size); \
+ NSInteger actualSize = min(time->time.Length - index, size); \
memcpy(temp, time->time.Data + index, actualSize); \
index += actualSize; \
temp[actualSize] = 0; \
@@ -528,7 +528,7 @@
Where YY is less than 50, the year shall be interpreted as 20YY. */
{
- int year = [dateGMT yearOfCommonEra];
+ NSInteger year = [dateGMT yearOfCommonEra];
if (1950 > year) {
PDEBUG(@"Date %@ cannot be represented in UTC time because the year is too early (must be at least 1950).\n", dateGMT);
@@ -661,8 +661,8 @@
NSString* descriptionOfAuthorizations(NSArray *authorizations) {
NSMutableString *result = [NSMutableString string];
- unsigned int authorizationsCount = [authorizations count];
- unsigned int i;
+ NSUInteger authorizationsCount = [authorizations count];
+ NSUInteger i;
if (0 < authorizationsCount) {
[result appendString:nameOfAuthorization((CSSM_ACL_AUTHORIZATION_TAG)[[authorizations objectAtIndex:0] intValue])];
@@ -683,8 +683,8 @@
NSString* descriptionOfAuthorizationsUsingConstants(NSArray *authorizations) {
NSMutableString *result = [NSMutableString string];
- unsigned int authorizationsCount = [authorizations count];
- unsigned int i;
+ NSUInteger authorizationsCount = [authorizations count];
+ NSUInteger i;
if (0 < authorizationsCount) {
[result appendString:nameOfAuthorizationConstant((CSSM_ACL_AUTHORIZATION_TAG)[[authorizations objectAtIndex:0] intValue])];
@@ -852,7 +852,7 @@
data->Length = 0;
if (theInt < 0x100) {
- data->Data = (uint8*)malloc(1);
+ data->Data = (uint8_t*)malloc(1);
if (NULL != data->Data) {
data->Length = 1;
@@ -860,7 +860,7 @@
data->Data[0] = (unsigned char)(theInt);
}
} else if (theInt < 0x10000) {
- data->Data = (uint8*)malloc(2);
+ data->Data = (uint8_t*)malloc(2);
if (NULL != data->Data) {
data->Length = 2;
@@ -869,7 +869,7 @@
data->Data[1] = (unsigned char)(theInt);
}
} else if (theInt < 0x1000000) {
- data->Data = (uint8*)malloc(3);
+ data->Data = (uint8_t*)malloc(3);
if (NULL != data->Data) {
data->Length = 3;
@@ -879,7 +879,7 @@
data->Data[2] = (unsigned char)(theInt);
}
} else {
- data->Data = (uint8*)malloc(4);
+ data->Data = (uint8_t*)malloc(4);
if (NULL != data->Data) {
data->Length = 4;
@@ -902,7 +902,7 @@
if ((NULL != data) && (NULL != result)) {
if (4 >= data->Length) {
unsigned int dex;
- uint8 *bp = data->Data;
+ uint8_t *bp = data->Data;
*result = 0;
Modified: trunk/Frameworks/Keychain/CDSA/MDS.m
===================================================================
--- trunk/Frameworks/Keychain/CDSA/MDS.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/CDSA/MDS.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -20,6 +20,13 @@
#import "CSSMUtils.h"
#import "CSSMTypes.h"
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
+typedef size_t CSSM_SIZE;
CSSM_RETURN objectifyCSSMAttribute(const CSSM_DB_ATTRIBUTE_DATA *attribute, id *result) {
if ((nil != attribute) && (nil != result)) {
@@ -102,7 +109,7 @@
break;
case CSSM_DB_ATTRIBUTE_FORMAT_MULTI_UINT32:
if ((0 < attribute->Value[j].Length) && (0 == (attribute->Value[j].Length % 4))) {
- unsigned int k, limit = attribute->Value[j].Length / 4;
+ CSSM_SIZE k, limit = attribute->Value[j].Length / 4;
NSMutableArray *moreSubvalues = [NSMutableArray arrayWithCapacity:limit];
for (k = 0; (CSSM_OK == err) && (k < limit); ++k) {
@@ -137,7 +144,7 @@
}
if (CSSM_OK == err) {
- unsigned int count = [attributeValues count];
+ NSUInteger count = [attributeValues count];
if (0 == count) {
*result = nil;
@@ -853,7 +860,7 @@
if (NULL != mdsFunctions.DataGetFirst) {
CSSM_QUERY myQuery;
- unsigned int count = ((nil != attributes) ? [attributes count] : 0);
+ NSUInteger count = ((nil != attributes) ? [attributes count] : 0);
CSSM_DB_RECORD_ATTRIBUTE_DATA rawAttributes;
myQuery.RecordType = recordType;
@@ -866,7 +873,7 @@
rawAttributes.DataRecordType = recordType;
rawAttributes.SemanticInformation = 0;
- rawAttributes.NumberOfAttributes = count;
+ rawAttributes.NumberOfAttributes = (uint32_t)count;
if (0 < count) {
rawAttributes.AttributeData = myMemoryFunctions.malloc_func(sizeof(CSSM_DB_ATTRIBUTE_DATA) * count, myMemoryFunctions.AllocRef);
@@ -1049,7 +1056,7 @@
if ((nil != attributes) && (0 < [attributes count])) {
if (NULL != mdsFunctions.DataGetFirst) {
CSSM_QUERY myQuery;
- unsigned int count = [attributes count];
+ NSUInteger count = [attributes count];
CSSM_DB_RECORD_ATTRIBUTE_DATA rawAttributes;
myQuery.RecordType = recordType;
@@ -1062,7 +1069,7 @@
rawAttributes.DataRecordType = recordType;
rawAttributes.SemanticInformation = 0;
- rawAttributes.NumberOfAttributes = count;
+ rawAttributes.NumberOfAttributes = (uint32_t)count;
rawAttributes.AttributeData = myMemoryFunctions.malloc_func(sizeof(CSSM_DB_ATTRIBUTE_DATA) * count, myMemoryFunctions.AllocRef);
if (NULL != rawAttributes.AttributeData) {
Modified: trunk/Frameworks/Keychain/Certificates/ABPersonAdditions.m
===================================================================
--- trunk/Frameworks/Keychain/Certificates/ABPersonAdditions.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Certificates/ABPersonAdditions.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -16,6 +16,12 @@
#import <Keychain/NSDataAdditions.h>
#import <Keychain/KeychainSearch.h>
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
/*! @const kABCertificateProperty
@discussion An address book type identifying a property as being a certificate of some sort. The certificate is included as the data, in raw form. */
@@ -60,7 +66,7 @@
- (NSArray*)primaryCertificates {
id certList;
- int primaryCert;
+ NSInteger primaryCert;
certList = [self valueForProperty:kABCertificateRefProperty];
@@ -96,7 +102,7 @@
- (NSArray*)certificates {
NSMutableArray *certs = [NSMutableArray arrayWithCapacity:5];
id certList, theCert;
- int i;
+ NSInteger i;
certList = [self valueForProperty:kABCertificateRefProperty];
@@ -153,7 +159,7 @@
id certList;
ABMutableMultiValue *valueList;
char *bytes;
- int byteLength;
+ NSInteger byteLength;
NSData *certData;
int i;
Modified: trunk/Frameworks/Keychain/Certificates/Certificate.m
===================================================================
--- trunk/Frameworks/Keychain/Certificates/Certificate.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Certificates/Certificate.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -126,8 +126,8 @@
if (tag) {
//CSSM_FIELD_PTR fields;
CSSM_DATA *rawResult;
- //UInt32 numberOfFields;
- UInt32 numberOfResults;
+ //uint32_t numberOfFields;
+ uint32 numberOfResults;
CSSM_DATA certData;
CSSM_CL_HANDLE CLhandle;
CSSM_HANDLE furtherResultsHandle;
@@ -324,7 +324,7 @@
- (NSString*)description {
CSSM_DATA certificateData;
- UInt32 numberOfFields, i;
+ uint32 numberOfFields, i;
CSSM_FIELD_PTR fields;
NSMutableString *result = [NSMutableString stringWithCapacity:4000];
@@ -354,7 +354,7 @@
[result appendString:[[[NSString alloc] initWithData:NSDataFromData(&fields[i].FieldValue) encoding:NSMacOSRomanStringEncoding] autorelease]];
[result appendString:@"\n\n"];
} else if (OIDsAreEqual(&fields[i].FieldOid, &CSSMOID_X509V1Version)) {
- //[result appendString:[NSString stringWithFormat:@"%@: %u\n\n", NSLocalizedStringFromTableInBundle(@"CSSMOID_X509V1Version", @"OID Names", [NSBundle bundleWithIdentifier:KEYCHAIN_BUNDLE_IDENTIFIER], nil), *((UInt32*)fields[i].FieldValue.Data) + 1]];
+ //[result appendString:[NSString stringWithFormat:@"%@: %u\n\n", NSLocalizedStringFromTableInBundle(@"CSSMOID_X509V1Version", @"OID Names", [NSBundle bundleWithIdentifier:KEYCHAIN_BUNDLE_IDENTIFIER], nil), *((uint32_t*)fields[i].FieldValue.Data) + 1]];
uint32_t temp;
if (DERToInt(&(fields[i].FieldValue), &temp)) {
Modified: trunk/Frameworks/Keychain/Certificates/CertificateGeneration.m
===================================================================
--- trunk/Frameworks/Keychain/Certificates/CertificateGeneration.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Certificates/CertificateGeneration.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -31,7 +31,7 @@
NSEnumerator *extensionEnumerator;
Extension *current;
CSSM_X509_EXTENSION *currentRaw;
- uint32 index = 0, numberOfFields = 5; // always requires at least 5 user-supplied fields
+ uint32_t index = 0, numberOfFields = 5; // always requires at least 5 user-supplied fields
Key *pubKey = publicKey;
resetCSSMData(&result); // Make sure the result is empty, as we convert this to an NSData and return it no matter what happens.
@@ -75,31 +75,31 @@
}
fields[index].FieldOid = CSSMOID_X509V1IssuerNameCStruct;
- fields[index].FieldValue.Data = (uint8*)[issuer nameListRef];
+ fields[index].FieldValue.Data = (uint8_t*)[issuer nameListRef];
fields[index++].FieldValue.Length = sizeof(CSSM_X509_NAME);
fields[index].FieldOid = CSSMOID_X509V1SubjectNameCStruct;
- fields[index].FieldValue.Data = (uint8*)[subject nameListRef];
+ fields[index].FieldValue.Data = (uint8_t*)[subject nameListRef];
fields[index++].FieldValue.Length = sizeof(CSSM_X509_NAME);
if (from) {
fields[index].FieldOid = CSSMOID_X509V1ValidityNotBefore;
- fields[index].FieldValue.Data = (uint8*)from;
+ fields[index].FieldValue.Data = (uint8_t*)from;
fields[index++].FieldValue.Length = sizeof(CSSM_X509_TIME);
}
if (to) {
fields[index].FieldOid = CSSMOID_X509V1ValidityNotAfter;
- fields[index].FieldValue.Data = (uint8*)to;
+ fields[index].FieldValue.Data = (uint8_t*)to;
fields[index++].FieldValue.Length = sizeof(CSSM_X509_TIME);
}
fields[index].FieldOid = CSSMOID_CSSMKeyStruct;
- fields[index].FieldValue.Data = (uint8*)[pubKey CSSMKey];
+ fields[index].FieldValue.Data = (uint8_t*)[pubKey CSSMKey];
fields[index++].FieldValue.Length = sizeof(CSSM_KEY);
fields[index].FieldOid = CSSMOID_X509V1SignatureAlgorithmTBS;
- fields[index].FieldValue.Data = (uint8*)[signingAlgorithm algorithmIdentifierRef];
+ fields[index].FieldValue.Data = (uint8_t*)[signingAlgorithm algorithmIdentifierRef];
fields[index++].FieldValue.Length = sizeof(CSSM_X509_ALGORITHM_IDENTIFIER);
if (extensions) {
@@ -115,7 +115,7 @@
fields[index].FieldOid = CSSMOID_X509V3CertificateExtensionCStruct;
}
- fields[index].FieldValue.Data = (uint8*)currentRaw;
+ fields[index].FieldValue.Data = (uint8_t*)currentRaw;
fields[index++].FieldValue.Length = sizeof(CSSM_X509_EXTENSION);
}
}
Modified: trunk/Frameworks/Keychain/Certificates/Policy.m
===================================================================
--- trunk/Frameworks/Keychain/Certificates/Policy.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Certificates/Policy.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -122,7 +122,7 @@
if (0 == err) {
[result addObject:[Policy policyWithPolicyRef:policyRef]];
- } else if (errSecItemNotFound != err) {
+ } else if (errSecPolicyNotFound != err) {
PSYSLOGND(LOG_ERR, @"Unable to retrieve results of policy search (for certificates of type %@, policies of type %@), error %@.\n", nameOfCertificateType(certificateType), nameOfOID(policyType), err, OSStatusAsString(err));
PDEBUG(@"SecPolicySearchCopyNext(%p, %p) returned error %@.\n", searchRef, policyRef, OSStatusAsString(err));
result = nil;
Modified: trunk/Frameworks/Keychain/Cryptography/FileUtilities.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/FileUtilities.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/FileUtilities.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -34,8 +34,8 @@
CSSM_DATA result, original;
NSData *finalResult = nil;
int theFile;
- const unsigned long BUFFER_SIZE = 262144;
- unsigned long bufferSize;
+ const size_t BUFFER_SIZE = 262144;
+ size_t bufferSize;
struct stat fileStats;
if (nil == CSPModule) {
@@ -44,23 +44,23 @@
if ((err = CSSM_CSP_CreateDigestContext([CSPModule handle], algorithm, &ccHandle)) == CSSM_OK) {
if ((err = CSSM_DigestDataInit(ccHandle)) == CSSM_OK) {
- theFile = open([path UTF8String], O_RDONLY, 0);
+ theFile = open([path fileSystemRepresentation], O_RDONLY, 0);
if (theFile >= 0) {
if (0 == fstat(theFile, &fileStats)) {
- if (fileStats.st_size < BUFFER_SIZE) {
- bufferSize = fileStats.st_size;
- } else if ((fileStats.st_size / 2) < BUFFER_SIZE) {
- bufferSize = fileStats.st_size / 2;
- } else if ((fileStats.st_size / 3) < BUFFER_SIZE) {
- bufferSize = fileStats.st_size / 3;
+ if ((size_t)fileStats.st_size < BUFFER_SIZE) {
+ bufferSize = (size_t)fileStats.st_size;
+ } else if (((size_t)fileStats.st_size / 2) < BUFFER_SIZE) {
+ bufferSize = (size_t)fileStats.st_size / 2;
+ } else if (((size_t)fileStats.st_size / 3) < BUFFER_SIZE) {
+ bufferSize = (size_t)fileStats.st_size / 3;
} else {
bufferSize = BUFFER_SIZE; // 1/4 mibibyte at a time
}
original.Data = malloc(bufferSize);
- while ((original.Length = read(theFile, original.Data, bufferSize)) > 0) {
+ while ((original.Length = (uint32_t)read(theFile, original.Data, bufferSize)) > 0) {
if ((err = CSSM_DigestDataUpdate(ccHandle, &original, 1)) != CSSM_OK) {
PSYSLOGND(LOG_ERR, @"Unable to generate digest because of error %@.\n", CSSMErrorAsString(err));
PDEBUG(@"CSSM_DigestDataUpdate(%"PRIccHandle", %p, 1) returned error %@.\n", ccHandle, &original, CSSMErrorAsString(err));
Modified: trunk/Frameworks/Keychain/Cryptography/Key.h
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Key.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Key.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -70,7 +70,7 @@
@discussion Be wary with this - this framework tries to preserve the version value for keys, but many other libraries do not (e.g. Apple's own Security framework). In fact, many real world applications provide no indication of such information to start with. Plus, this version number only applies to keys generated by the CDSA, not from other libraries. So, in summary, be wary of using this for anything important, as in a significant number of cases it may not be valid.
Generally the fallback is to the version of the CDSA under which this framework was compiled (2.0 at the time of writing). This fallback behaviour, at least, is fairly consistant across libraries (e.g. Apple's Security framework, again).
- @result The returned value is really just a uint32 describing the major version only. */
+ @result The returned value is really just a uint32_t describing the major version only. */
/*! @method init
@abstract Reject initialiser.
@@ -128,14 +128,14 @@
/*! @method attributes
@abstract Returns a mask representing the attributes of the receiver.
@discussion See <a href="file:///System/Library/Frameworks/Security.framework/Headers/cssmtype.h>cssmtype.h</a> for masks.
- @result The mask, which at time of writing is just a uint32. */
+ @result The mask, which at time of writing is just a uint32_t. */
- (CSSM_KEYATTR_FLAGS)attributes;
/*! @method usage
@abstract Returns a mask representing the valid uses for the receiver.
@discussion See <a href="file:///System/Library/Frameworks/Security.framework/Headers/cssmtype.h>cssmtype.h</a> for masks.
- @result The mask, which at time of writing is just a uint32. */
+ @result The mask, which at time of writing is just a uint32_t. */
- (CSSM_KEYUSE)usage;
Modified: trunk/Frameworks/Keychain/Cryptography/Key.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Key.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Key.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -23,6 +23,8 @@
#import "Utilities/UtilitySupport.h"
#import "Utilities/Logging.h"
+// For pre-10.5 SDKs:
+typedef size_t CSSM_SIZE;
@implementation Key
@@ -189,9 +191,11 @@
if ((_error = CSSM_CSP_CreateSymmetricContext([_CSPModule handle], CSSM_ALGID_NONE, CSSM_ALGMODE_WRAP, NULL, NULL, NULL, CSSM_PADDING_NONE, NULL, &ccHandle)) == CSSM_OK) {
if (description) {
+ const char *descriptionCStr = [description UTF8String];
+
descPtr = &desc;
- desc.Length = [description cStringLength];
- desc.Data = (uint8_t*)[description cString];
+ desc.Length = strlen(descriptionCStr);
+ desc.Data = (uint8_t *)descriptionCStr;
} else {
descPtr = NULL;
}
@@ -279,9 +283,11 @@
}
if (description) {
+ const char *descriptionCStr = [description UTF8String];
+
descPtr = &desc;
- desc.Length = [description cStringLength];
- desc.Data = (uint8_t*)[description cString];
+ desc.Length = strlen(descriptionCStr);
+ desc.Data = (uint8_t *)descriptionCStr;
} else {
descPtr = NULL;
}
@@ -443,7 +449,7 @@
- (NSData*)data {
char *result;
NSData *finalResult = nil;
- int dataLength;
+ CSSM_SIZE dataLength;
if ((_CSSMKey->KeyHeader.BlobType != CSSM_KEYBLOB_RAW) && (_CSSMKey->KeyHeader.BlobType != CSSM_KEYBLOB_WRAPPED)) {
PDEBUG(@"Called on an internal (non-raw) key instance; cannot [automatically] extract raw key data.\n");
Modified: trunk/Frameworks/Keychain/Cryptography/KeychainUtils.h
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/KeychainUtils.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/KeychainUtils.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -21,6 +21,12 @@
#import <Keychain/CSSMDefaults.h>
#import <Keychain/CSSMModule.h>
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
/*! @function generateRandomData
@abstract Generates an arbitrary amount of random data using a given algorithm & seed.
@@ -32,7 +38,7 @@
@param CSPModule The CSP to use to generate the random data. Pass nil to use the current default CSP.
@result Returns 'lengthInBytes' bytes of generated data, or NULL if an error occurs. */
-char* generateRandomData(uint32 lengthInBytes, CSSM_ALGORITHMS algorithm, const char *seed, unsigned int seedLength, CSSMModule *CSPModule);
+char* generateRandomData(uint32_t lengthInBytes, CSSM_ALGORITHMS algorithm, const char *seed, NSUInteger seedLength, CSSMModule *CSPModule);
/*! @function generateRandomNSData
@abstract Generates an arbitrary amount of random data using a given algorithm & seed.
@@ -43,7 +49,7 @@
@param CSPModule The CSP to use to generate the random data. Pass nil to use the current default CSP.
@result Returns the generated data, or nil if an error occurs. */
-NSData* generateRandomNSData(uint32 lengthInBytes, CSSM_ALGORITHMS algorithm, NSData *seed, CSSMModule *CSPModule);
+NSData* generateRandomNSData(uint32_t lengthInBytes, CSSM_ALGORITHMS algorithm, NSData *seed, CSSMModule *CSPModule);
/*! @function generateGenericRandomData
@abstract Generates a given number of bytes of random data, using a default algorithm and no seed.
Modified: trunk/Frameworks/Keychain/Cryptography/KeychainUtils.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/KeychainUtils.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/KeychainUtils.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -21,7 +21,7 @@
#import "Utilities/Logging.h"
-char* generateRandomData(uint32 lengthInBytes, CSSM_ALGORITHMS algorithm, const char *seed, unsigned int seedLength, CSSMModule *CSPModule) {
+char* generateRandomData(uint32_t lengthInBytes, CSSM_ALGORITHMS algorithm, const char *seed, NSUInteger seedLength, CSSMModule *CSPModule) {
CSSM_CC_HANDLE ccHandle;
static CSSM_CRYPTO_DATA rawSeed;
static CSSM_CRYPTO_DATA_PTR rawSeedPtr;
@@ -65,7 +65,7 @@
return finalResult;
}
-NSData* generateRandomNSData(uint32 lengthInBytes, CSSM_ALGORITHMS algorithm, NSData *seed, CSSMModule *CSPModule) {
+NSData* generateRandomNSData(uint32_t lengthInBytes, CSSM_ALGORITHMS algorithm, NSData *seed, CSSMModule *CSPModule) {
char *temp = generateRandomData(lengthInBytes, algorithm, (seed ? [seed bytes] : NULL), (seed ? [seed length] : 0), CSPModule);
if (temp) {
Modified: trunk/Frameworks/Keychain/Cryptography/MutableKey.h
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/MutableKey.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/MutableKey.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -20,7 +20,7 @@
BOOL _freeWhenDone;
}
-+ (MutableKey*)generateKey:(CSSM_ALGORITHMS)algorithm size:(uint32)keySizeInBits validFrom:(NSCalendarDate*)validFrom validTo:(NSCalendarDate*)validTo usage:(uint32)keyUsage mutable:(BOOL)keyIsMutable extractable:(BOOL)keyIsExtractable sensitive:(BOOL)keyIsSensitive label:(NSString*)label module:(CSSMModule*)CSPModule;
++ (MutableKey*)generateKey:(CSSM_ALGORITHMS)algorithm size:(uint32_t)keySizeInBits validFrom:(NSCalendarDate*)validFrom validTo:(NSCalendarDate*)validTo usage:(uint32_t)keyUsage mutable:(BOOL)keyIsMutable extractable:(BOOL)keyIsExtractable sensitive:(BOOL)keyIsSensitive label:(NSString*)label module:(CSSMModule*)CSPModule;
+ (MutableKey*)keyWithKeyRef:(SecKeyRef)ke module:(CSSMModule*)CSPModule;
+ (MutableKey*)keyWithCSSMKey:(CSSM_KEY*)ke module:(CSSMModule*)CSPModule;
@@ -58,4 +58,4 @@
@end
-CSSM_RETURN generateKeyPair(CSSM_ALGORITHMS algorithm, uint32 keySizeInBits, NSCalendarDate *validFrom, NSCalendarDate *validTo, uint32 publicKeyUsage, uint32 privateKeyUsage, NSString *publicKeyLabel, NSString *privateKeyLabel, CSSMModule *CSPModule, MutableKey **publicKey, MutableKey **privateKey);
+CSSM_RETURN generateKeyPair(CSSM_ALGORITHMS algorithm, uint32_t keySizeInBits, NSCalendarDate *validFrom, NSCalendarDate *validTo, uint32_t publicKeyUsage, uint32_t privateKeyUsage, NSString *publicKeyLabel, NSString *privateKeyLabel, CSSMModule *CSPModule, MutableKey **publicKey, MutableKey **privateKey);
Modified: trunk/Frameworks/Keychain/Cryptography/MutableKey.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/MutableKey.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/MutableKey.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -24,7 +24,7 @@
@implementation MutableKey
-+ (MutableKey*)generateKey:(CSSM_ALGORITHMS)algorithm size:(uint32)keySizeInBits validFrom:(NSCalendarDate*)validFrom validTo:(NSCalendarDate*)validTo usage:(uint32)keyUsage mutable:(BOOL)keyIsMutable extractable:(BOOL)keyIsExtractable sensitive:(BOOL)keyIsSensitive label:(NSString*)label module:(CSSMModule*)CSPModule {
++ (MutableKey*)generateKey:(CSSM_ALGORITHMS)algorithm size:(uint32_t)keySizeInBits validFrom:(NSCalendarDate*)validFrom validTo:(NSCalendarDate*)validTo usage:(uint32_t)keyUsage mutable:(BOOL)keyIsMutable extractable:(BOOL)keyIsExtractable sensitive:(BOOL)keyIsSensitive label:(NSString*)label module:(CSSMModule*)CSPModule {
CSSM_KEY *keyResult;
CSSM_CC_HANDLE cryptoContext;
CSSM_DATA *keyLabel;
@@ -192,7 +192,7 @@
@end
-CSSM_RETURN generateKeyPair(CSSM_ALGORITHMS algorithm, uint32 keySizeInBits, NSCalendarDate *validFrom, NSCalendarDate *validTo, uint32 publicKeyUsage, uint32 privateKeyUsage, NSString *publicKeyLabel, NSString *privateKeyLabel, CSSMModule *CSPModule, MutableKey **publicKey, MutableKey **privateKey) {
+CSSM_RETURN generateKeyPair(CSSM_ALGORITHMS algorithm, uint32_t keySizeInBits, NSCalendarDate *validFrom, NSCalendarDate *validTo, uint32_t publicKeyUsage, uint32_t privateKeyUsage, NSString *publicKeyLabel, NSString *privateKeyLabel, CSSMModule *CSPModule, MutableKey **publicKey, MutableKey **privateKey) {
if ((nil == validFrom) || (nil == validTo) || (nil == publicKeyLabel)) {
PSYSLOGND(LOG_ERR, @"Missing parameter(s) to generateKeyPair().\n");
PDEBUG(@"Invalid parameter(s) - validFrom = %p, validTo = %p, publicKeyLabel = %p.\n", validFrom, validTo, publicKeyLabel);
Modified: trunk/Frameworks/Keychain/Cryptography/NSDataAdditions.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/NSDataAdditions.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/NSDataAdditions.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -22,13 +22,20 @@
#import "Utilities/UtilitySupport.h"
#import "Utilities/Logging.h"
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
+typedef size_t CSSM_SIZE;
@implementation NSData (KeychainFramework)
- (NSData*)encryptedDataUsingKey:(Key*)key mode:(CSSM_ENCRYPT_MODE)mode padding:(CSSM_PADDING)padding {
CSSM_CC_HANDLE ccHandle;
CSSM_DATA result = {0, NULL}, original;
- uint32 outputLength;
+ CSSM_SIZE outputLength;
CSSM_RETURN err;
NSData *finalResult = nil;
CSSMModule *CSPModule = [key CSPModule];
@@ -109,7 +116,7 @@
- (NSData*)decryptedDataUsingKey:(Key*)key mode:(CSSM_ENCRYPT_MODE)mode padding:(CSSM_PADDING)padding {
CSSM_CC_HANDLE ccHandle;
CSSM_DATA result = {0, NULL}, original;
- uint32 outputLength;
+ CSSM_SIZE outputLength;
CSSM_RETURN err;
NSData *finalResult = nil;
CSSMModule *CSPModule = [key CSPModule];
@@ -418,7 +425,7 @@
- (MutableKey*)keyForModule:(CSSMModule*)CSPModule {
CSSM_KEY *result;
const char *bytes = [self bytes];
- uint32 version, myLength = [self length];
+ NSUInteger version = 0, myLength = [self length];
MutableKey *finalResult = nil;
if (myLength < 4) {
Modified: trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.h
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -18,6 +18,12 @@
@abstract Defines the ChainedOutputStream class and key-value codings.
@discussion See the documentation for each individual element of this header for more information. */
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
/*! @class ChainedOutputStream
@abstract An NSOutputStream subclass which can be chained to another NSOutputStream.
@@ -167,7 +173,7 @@
@discussion Works the same as NSOutputStream's version.
@result Returns a ChainedOutputStream (possibly the receiver) suitably initialised, or nil if an error occurs. */
-- (id)initToBuffer:(uint8_t*)buffer capacity:(unsigned int)capacity;
+- (id)initToBuffer:(uint8_t*)buffer capacity:(NSUInteger)capacity;
/*! @method initToFileAtPath:append:
@abstract Initialises the receiver to write received data to a file.
@@ -195,7 +201,7 @@
@param len The maximum length of valid data in 'buffer'. At most this many bytes will be written.
@result Returns the number of bytes written, which will always be less than or equal to 'len'. If the stream is full it will return 0. If an error occurs, -1 will be returned, and you will be able to obtain more information using the receivers streamError method. */
-- (int)write:(const uint8_t*)buffer maxLength:(unsigned int)len;
+- (NSInteger)write:(const uint8_t*)buffer maxLength:(NSUInteger)len;
/*! @method hasSpaceAvailable
@abstract Returns whether or not the receiver has room for additional data.
Modified: trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Streams/ChainedOutputStream.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -143,7 +143,7 @@
return self;
}
-- (id)initToBuffer:(uint8_t*)buffer capacity:(unsigned int)capacity {
+- (id)initToBuffer:(uint8_t*)buffer capacity:(NSUInteger)capacity {
if (self = [super init]) {
stream = [[NSOutputStream outputStreamToBuffer:buffer capacity:capacity] retain];
@@ -198,8 +198,8 @@
return self;
}
-- (int)write:(const uint8_t*)buffer maxLength:(unsigned int)len {
- int result;
+- (NSInteger)write:(const uint8_t*)buffer maxLength:(NSUInteger)len {
+ NSInteger result;
if (stream) {
result = [stream write:buffer maxLength:len];
Modified: trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.h
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -134,7 +134,7 @@
@param len The maximum length of valid data in 'buffer'. At most this many bytes will be written.
@result Returns the number of bytes written, which will always be less than or equal to 'len'. If the stream is full it will return 0. If an error occurs, -1 will be returned, and you will be able to obtain more information using the receivers streamError method. */
-- (int)write:(const uint8_t*)buffer maxLength:(unsigned int)len;
+- (NSInteger)write:(const uint8_t*)buffer maxLength:(NSUInteger)len;
/*! @method hasSpaceAvailable
@abstract Returns whether or not the receiver has room for additional data.
Modified: trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.m
===================================================================
--- trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Cryptography/Streams/DigestOutputStream.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -149,12 +149,12 @@
return self;
}
-- (int)write:(const uint8_t*)buffer maxLength:(unsigned int)len {
+- (NSInteger)write:(const uint8_t*)buffer maxLength:(NSUInteger)len {
if (CSSM_INVALID_HANDLE == ccHandle) {
PDEBUG(@"Attempted to write to stream before opening it.\n");
return -1;
} else {
- int result = [super write:buffer maxLength:len];
+ NSInteger result = [super write:buffer maxLength:len];
if (0 < result) {
CSSM_DATA data = {result, (uint8_t*)buffer};
Modified: trunk/Frameworks/Keychain/Hashcash/Hashcash.m
===================================================================
--- trunk/Frameworks/Keychain/Hashcash/Hashcash.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Hashcash/Hashcash.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -134,7 +134,7 @@
if ([scanner scanUpToString:@":" intoString:&dateString] && dateString) {
if ([dateString rangeOfCharacterFromSet:[[[self class] stampDateCharacterSet] invertedSet]].location == NSNotFound) {
- unsigned int theLength = strlen([dateString UTF8String]);
+ size_t theLength = strlen([dateString UTF8String]);
if ((theLength > 0) && (theLength <= strlen([kDefaultHashcashStringFormat UTF8String])) && ((theLength % 2) == 0)) {
_date = [[NSCalendarDate alloc] initWithString:dateString calendarFormat:[kDefaultHashcashStringFormat substringToIndex:theLength]];
@@ -457,7 +457,7 @@
BOOL findSuffixRecursively(CSSM_DATA buffers[3], unsigned int currentDepth, unsigned int bits, CSSM_CC_HANDLE handle) {
CSSM_RETURN err;
- unsigned int i;
+ size_t i;
assert(0 < buffers[1].Length);
@@ -581,14 +581,14 @@
if ((nil != scratch) && (CSSM_OK == (err = CSSM_CSP_CreateDigestContext([_CSPModule handle], CSSM_ALGID_SHA1, &ccHandle)))) {
char hashBuf[20];
- buffers[0].Data = (uint8*)[scratch UTF8String];
+ buffers[0].Data = (uint8_t*)[scratch UTF8String];
buffers[0].Length = strlen((char*)(buffers[0].Data));
buffers[1].Length = 0;
buffers[1].Data = NULL;
buffers[2].Length = 20;
- buffers[2].Data = (uint8*)&hashBuf;
+ buffers[2].Data = (uint8_t*)&hashBuf;
while (!found && (buffers[1].Length <= kHashcashSuffixLengthLimit)) {
++(buffers[1].Length);
@@ -646,7 +646,7 @@
#ifndef USE_BIT_COUNTING
if (digest) {
const uint8_t *data = [digest bytes];
- int length = [digest length];
+ NSInteger length = [digest length];
int bitsRemaining = _bits;
int index = 0;
Modified: trunk/Frameworks/Keychain/Keychain/Access.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Access.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/Access.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -24,7 +24,7 @@
@interface Access : NSCachedObject {
SecAccessRef _access;
- int _error;
+ OSStatus _error;
}
// Q) Why isn't there a mechanism to retrieve the name after creation?
@@ -188,7 +188,7 @@
Please note that this error code is local to the receiver only, and not any sort of shared global value.
@result The last error that occured, or zero if the last operation was successful. */
-- (int)lastError;
+- (OSStatus)lastError;
/*! @method accessRef
@abstract Returns the SecAccessRef the receiver is based on.
Modified: trunk/Frameworks/Keychain/Keychain/Access.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Access.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/Access.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -214,7 +214,7 @@
return [self accessControlListsForAction:CSSM_ACL_AUTHORIZATION_DERIVE];
}
-- (int)lastError {
+- (OSStatus)lastError {
return _error;
}
Modified: trunk/Frameworks/Keychain/Keychain/AccessControlList.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/AccessControlList.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/AccessControlList.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -33,7 +33,7 @@
@interface AccessControlList : NSCachedObject {
SecACLRef _ACL;
- int _error;
+ OSStatus _error;
}
/*! @method accessControlListNamed:fromAccess:forApplications:requiringPassphrase:
Modified: trunk/Frameworks/Keychain/Keychain/AccessControlList.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/AccessControlList.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/AccessControlList.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -21,6 +21,12 @@
#import <Security/Security.h>
+// For pre-10.5 SDKs:
+#ifndef NSINTEGER_DEFINED
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#define NSINTEGER_DEFINED
+#endif
@interface AccessControlList (Internal)
@@ -476,7 +482,7 @@
}
- (BOOL)setAuthorizations:(NSArray*)authorizations {
- unsigned int authorizationsCount = [authorizations count];
+ NSUInteger authorizationsCount = [authorizations count];
CSSM_ACL_AUTHORIZATION_TAG *auths = ((0 < authorizationsCount) ? malloc(sizeof(CSSM_ACL_AUTHORIZATION_TAG) * authorizationsCount) : NULL);
uint32_t i;
@@ -484,7 +490,7 @@
auths[i] = [[authorizations objectAtIndex:i] intValue];
}
- _error = SecACLSetAuthorizations(_ACL, auths, authorizationsCount);
+ _error = SecACLSetAuthorizations(_ACL, auths, (uint32_t)authorizationsCount);
if (NULL != auths) {
free(auths);
@@ -499,7 +505,7 @@
}
- (BOOL)setAuthorizesAction:(CSSM_ACL_AUTHORIZATION_TAG)action to:(BOOL)value {
- UInt32 i, capacity = 10, count, newCount = 0;
+ uint32 i, capacity = 10, count, newCount = 0;
CSSM_ACL_AUTHORIZATION_TAG *currentAuths = NULL, *newAuths = NULL;
BOOL alreadySet = NO;
@@ -615,7 +621,7 @@
}
- (NSArray*)authorizations {
- UInt32 i, capacity = 10, count;
+ uint32 i, capacity = 10, count;
CSSM_ACL_AUTHORIZATION_TAG *auths = NULL;
NSMutableArray *result = nil;
@@ -642,7 +648,7 @@
}
- (BOOL)authorizesAction:(CSSM_ACL_AUTHORIZATION_TAG)action {
- UInt32 i, capacity = 10, count;
+ uint32 i, capacity = 10, count;
CSSM_ACL_AUTHORIZATION_TAG *auths = NULL;
BOOL result = NO;
Modified: trunk/Frameworks/Keychain/Keychain/Identity.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Identity.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/Identity.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -25,7 +25,7 @@
@interface Identity : NSCachedObject {
SecIdentityRef _identity;
- int _error;
+ OSStatus _error;
}
/*! @method identityWithIdentityRef:
@@ -91,7 +91,7 @@
Please note that this error code is local to the receiver only, and not any sort of shared global value.
@result The last error that occured, or zero if the last operation was successful. */
-- (int)lastError;
+- (OSStatus)lastError;
/*! @method identityRef
@abstract Returns a SecIdentityRef representing the receiver.
Modified: trunk/Frameworks/Keychain/Keychain/Identity.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Identity.m 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/Identity.m 2008-03-29 21:33:33 UTC (rev 453)
@@ -132,7 +132,7 @@
return [NSString stringWithFormat:@"Certificate: %@\nPrivate key: %@", [[self certificate] description], [[self privateKey] description]];
}
-- (int)lastError {
+- (OSStatus)lastError {
return _error;
}
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.h 2008-03-29 19:22:15 UTC (rev 452)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.h 2008-03-29 21:33:33 UTC (rev 453)
@@ -70,14 +70,14 @@
@interface Keychain : NSCachedObject {
SecKeychainRef _keychain;
- int _error;
+ OSStatus _error;
}
/*! @method keychainManagerVersion
@abstract Returns the major version number of the active keychain manager.
@discussion This may or may not be linked to the version number of a keychain. */
-+ (UInt32)keychainManagerVersion;
++ (uint32_t)keychainManagerVersion;
/*! @method setUserInteractionAllowed:
@abstract Sets whether or not any user interaction should occur when using keychains.
@@ -221,14 +221,14 @@
@discussion You should be careful about setting this value, as it may relate intricately to the keychain file format on disk. See the description for the version method for more details.
@param version The major version number. */
-- (void)setVersion:(UInt32)version;
+- (void)setVersion:(uint32_t)version;
/*! @method version
@abstract Returns the version of the receiver.
@discussion The version relates primarily to the format of the keychain file on disk, rather than how the receiver acts. At the time of writing, all keychain versions work the same. But MacOS 10.1 used a different format for storing keychains to 10.2. Indeed, 10.3 or another future release may change the format again.
@result The major version number. */
-- (UInt32)version;
+- (uint32_t)version;
/*! @method setLockOnSleep:
@abstract Sets whether or not the receiver will lock itself automatically when the system goes to sleep.
@@ -263,14 +263,14 @@
@discussion This is an idle timeout - if the receiver is unused for the specified interval of time, it locks itself. Note that since keychains are system-wide, other applications may use the receiver without your knowledge. Also not that this interval does not need to be 'reset' every time you use the receiver - the receiver keeps track of time and usage itself.
@param interval The number of seconds of idle time after which the receiver should lock itself. This may be 0, in which case the receiver will lock itself immediately after any operation. Since this setting is system-wide, you should be wary about setting this value to 0, or any other brief interval. */
-- (void)setInterval:(UInt32)interval;
+- (void)setInterval:(uint32_t)interval;
/*! @method interval
@abstract Returns the time in seconds after which a keychain automatically locks.
@discussion This is an idle timeout - if the receiver is unused for this interval of time, it locks itself. Note that since keychains are system-wide, other applications may use the receiver without your knowledge.
@result The time interval in seconds. This may be a non-zero number even if the receiver is not set to use it. */
-- (UInt32)interval;
+- (uint32_t)interval;
/*! @method lock
@abstract Locks the receiver.
@@ -408,7 +408,7 @@
@param authType The authentication type to be used. See <a href="file:///System/Library/Frameworks/Security.framework/Headers/SecKeychain.h>SecKeychain.h</a> for predefined types. You should use kSecAuthenticationTypeDefault if you have no preference or knowledge of the type to be used. Like the protocol parameter, this a 4-byte code, which may be user defined.
@result If a match is found, it is returned. Otherwise, or in case of an error, nil is returned. */
-- (NSString*)passwordForInternetServer:(NSString*)server forAccount:(NSString*)account port:(UInt...
[truncated message content] |
|
From: <wad...@us...> - 2008-03-29 19:22:09
|
Revision: 452
http://keychain.svn.sourceforge.net/keychain/?rev=452&view=rev
Author: wadetregaskis
Date: 2008-03-29 12:22:15 -0700 (Sat, 29 Mar 2008)
Log Message:
-----------
* Added tests that the private key works before generating the identity and after. These currently fail, as the identity generation code is broken.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Testers/CertificateGenerationTester.m
Modified: trunk/Frameworks/Keychain/Testers/CertificateGenerationTester.m
===================================================================
--- trunk/Frameworks/Keychain/Testers/CertificateGenerationTester.m 2008-01-12 23:07:25 UTC (rev 451)
+++ trunk/Frameworks/Keychain/Testers/CertificateGenerationTester.m 2008-03-29 19:22:15 UTC (rev 452)
@@ -16,6 +16,7 @@
#import <Keychain/CSSMDefaults.h>
#import <Keychain/Keychain.h>
#import <Keychain/KeychainUtils.h>
+#import <Keychain/NSDataAdditions.h>
#import "TestingCommon.h"
@@ -89,6 +90,9 @@
//TEST_NOTE("\t\tResult: %s", [[finalCertificate description] UTF8String]);
+ NSData *signature = [[@"Hi there" dataUsingEncoding:NSUTF8StringEncoding] signatureUsingKey:privKey];
+ TEST(nil != signature,"\tIdentity's private key works");
+
END_TEST();
START_TEST("Can add new identity to default keychain");
@@ -100,7 +104,12 @@
if (nil != curIdentity) {
//TEST_NOTE("\t\tIdentity: %s", [[curIdentity description] UTF8String]);
}
+
+ NSData *signature = [[@"Hi there" dataUsingEncoding:NSUTF8StringEncoding] signatureUsingKey:[curIdentity privateKey]];
+ TEST(nil != signature,"\tIdentity's private key works");
+ TEST_NOTE("\t\tSignature: %s", [[signature description] UTF8String]);
+
END_TEST();
/*Test("listing all identities in the default keychain", (identities = [theKeychain identities]) != nil);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2008-01-12 23:07:21
|
Revision: 451
http://keychain.svn.sourceforge.net/keychain/?rev=451&view=rev
Author: wadetregaskis
Date: 2008-01-12 15:07:25 -0800 (Sat, 12 Jan 2008)
Log Message:
-----------
* Removed redundant calls to -[Key CSSMKey].
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/Keychain.m
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.m 2008-01-08 04:16:45 UTC (rev 450)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.m 2008-01-12 23:07:25 UTC (rev 451)
@@ -750,7 +750,8 @@
if (noErr == _error) {
SecKeychainAttributeList attributeList;
SecKeychainAttribute attribute[8];
-
+ const CSSM_KEY *rawKey = [key CSSMKey];
+
attributeList.count = 8;
attributeList.attr = attribute;
@@ -797,7 +798,7 @@
recType = CSSM_DL_DB_RECORD_ALL_KEYS;
}
- keyHeader = &([key CSSMKey]->KeyHeader);
+ keyHeader = &(rawKey->KeyHeader);
recTypeData.Data = (uint8*)&recType;
cspIdData.Data = (uint8*)&keyHeader->CspId;
@@ -809,7 +810,7 @@
printNameData.Data = (uint8*)[name cString];
printNameData.Length = [name cStringLength];
- keySize = [key CSSMKey]->KeyData.Length * 8;
+ keySize = rawKey->KeyData.Length * 8;
keySizeData.Data = (uint8*)&keySize;
attr->Info.AttributeNameFormat = CSSM_DB_ATTRIBUTE_NAME_AS_STRING;
@@ -1049,7 +1050,7 @@
recordAttrs.NumberOfAttributes = attributeCount;
recordAttrs.AttributeData = attrs;
- _error = CSSM_DL_DataInsert(DLDBHandle, recType, &recordAttrs, &([key CSSMKey]->KeyData), &recordPtr);
+ _error = CSSM_DL_DataInsert(DLDBHandle, recType, &recordAttrs, &(rawKey->KeyData), &recordPtr);
if (CSSM_OK == _error) {
//const CSSM_DB_UNIQUE_RECORD *currentUniqueID;
@@ -1090,7 +1091,7 @@
}
} else {
PSYSLOGND(LOG_ERR, @"Unable to insert key into keychain, error %@.\n", CSSMErrorAsString(_error));
- PDEBUG(@"CSSM_DL_DataInsert(%"PRIdldbHandle", %"PRIu32", %p, %p, %p) returned error %@.\n", DLDBHandle, recType, &recordAttrs, &([key CSSMKey]->KeyData), &recordPtr, CSSMErrorAsString(_error));
+ PDEBUG(@"CSSM_DL_DataInsert(%"PRIdldbHandle", %"PRIu32", %p, %p, %p) returned error %@.\n", DLDBHandle, recType, &recordAttrs, &(rawKey->KeyData), &recordPtr, CSSMErrorAsString(_error));
}
} else {
PSYSLOGND(LOG_ERR, @"Unable to get DLDB handle in order to add key, error %@.\n", CSSMErrorAsString(_error));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2008-01-08 04:17:19
|
Revision: 450
http://keychain.svn.sourceforge.net/keychain/?rev=450&view=rev
Author: wadetregaskis
Date: 2008-01-07 20:16:45 -0800 (Mon, 07 Jan 2008)
Log Message:
-----------
* Added Security.framework to PolicyProber target, so that it will build.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj
Modified: trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj
===================================================================
--- trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj 2007-12-13 07:22:44 UTC (rev 449)
+++ trunk/Frameworks/Keychain/Keychain.xcodeproj/project.pbxproj 2008-01-08 04:16:45 UTC (rev 450)
@@ -214,6 +214,7 @@
75C6E9040A3BDD1A009201FB /* KeychainSearchTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 75C6E9030A3BDD1A009201FB /* KeychainSearchTester.m */; };
75D25AA60CC1643600C8B443 /* Authorization Tag Constants.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA20CC1643600C8B443 /* Authorization Tag Constants.strings */; };
75D25AA70CC1643600C8B443 /* Authorization Tag Names.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75D25AA40CC1643600C8B443 /* Authorization Tag Names.strings */; };
+ 75D914A30D333062002926F8 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F566C81003E0D92B015C51F3 /* Security.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -556,6 +557,7 @@
7506C0380A3DB5A8000DB6BD /* Keychain.framework in Frameworks */,
7588AEF20CA3A23300466BEF /* AppKit.framework in Frameworks */,
7588B0120CA3A26800466BEF /* Foundation.framework in Frameworks */,
+ 75D914A30D333062002926F8 /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-13 07:22:40
|
Revision: 449
http://keychain.svn.sourceforge.net/keychain/?rev=449&view=rev
Author: wadetregaskis
Date: 2007-12-12 23:22:44 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
* Adding 'keychain' command-line utility. Currently can only list ACLs for all items in a given keychain, but will be fleshed out over time.
Added Paths:
-----------
trunk/Applications/keychain/
trunk/Applications/keychain/keychain.1
trunk/Applications/keychain/keychain.m
trunk/Applications/keychain/keychain.xcodeproj/
trunk/Applications/keychain/keychain.xcodeproj/project.pbxproj
trunk/Applications/keychain/keychain_Prefix.pch
Added: trunk/Applications/keychain/keychain.1
===================================================================
--- trunk/Applications/keychain/keychain.1 (rev 0)
+++ trunk/Applications/keychain/keychain.1 2007-12-13 07:22:44 UTC (rev 449)
@@ -0,0 +1,79 @@
+.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
+.\"See Also:
+.\"man mdoc.samples for a complete listing of options
+.\"man mdoc for the short list of editing options
+.\"/usr/share/misc/mdoc.template
+.Dd 11/12/07 \" DATE
+.Dt keychain 1 \" Program name and manual section number
+.Os Darwin
+.Sh NAME \" Section Header - required - don't modify
+.Nm keychain,
+.\" The following lines are read in generating the apropos(man -k) database. Use only key
+.\" words here as the database is built based on the words here and in the .ND line.
+.Nm Other_name_for_same_program(),
+.Nm Yet another name for the same program.
+.\" Use .Nm macro to designate other names for the documented program.
+.Nd This line parsed for whatis database.
+.Sh SYNOPSIS \" Section Header - required - don't modify
+.Nm
+.Op Fl abcd \" [-abcd]
+.Op Fl a Ar path \" [-a path]
+.Op Ar file \" [file]
+.Op Ar \" [file ...]
+.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
+arg2 ... \" Arguments
+.Sh DESCRIPTION \" Section Header - required - don't modify
+Use the .Nm macro to refer to your program throughout the man page like such:
+.Nm
+Underlining is accomplished with the .Ar macro like this:
+.Ar underlined text .
+.Pp \" Inserts a space
+A list of items with descriptions:
+.Bl -tag -width -indent \" Begins a tagged list
+.It item a \" Each item preceded by .It macro
+Description of item a
+.It item b
+Description of item b
+.El \" Ends the list
+.Pp
+A list of flags and their descriptions:
+.Bl -tag -width -indent \" Differs from above in tag removed
+.It Fl a \"-a flag as a list item
+Description of -a flag
+.It Fl b
+Description of -b flag
+.El \" Ends the list
+.Pp
+.\" .Sh ENVIRONMENT \" May not be needed
+.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
+.\" .It Ev ENV_VAR_1
+.\" Description of ENV_VAR_1
+.\" .It Ev ENV_VAR_2
+.\" Description of ENV_VAR_2
+.\" .El
+.Sh FILES \" File used or created by the topic of the man page
+.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
+.It Pa /usr/share/file_name
+FILE_1 description
+.It Pa /Users/joeuser/Library/really_long_file_name
+FILE_2 description
+.El \" Ends the list
+.\" .Sh DIAGNOSTICS \" May not be needed
+.\" .Bl -diag
+.\" .It Diagnostic Tag
+.\" Diagnostic informtion here.
+.\" .It Diagnostic Tag
+.\" Diagnostic informtion here.
+.\" .El
+.Sh SEE ALSO
+.\" List links in ascending order by section, alphabetically within a section.
+.\" Please do not reference files that do not exist without filing a bug report
+.Xr a 1 ,
+.Xr b 1 ,
+.Xr c 1 ,
+.Xr a 2 ,
+.Xr b 2 ,
+.Xr a 3 ,
+.Xr b 3
+.\" .Sh BUGS \" Document known, unremedied bugs
+.\" .Sh HISTORY \" Document history if command behaves in a unique manner
\ No newline at end of file
Added: trunk/Applications/keychain/keychain.m
===================================================================
--- trunk/Applications/keychain/keychain.m (rev 0)
+++ trunk/Applications/keychain/keychain.m 2007-12-13 07:22:44 UTC (rev 449)
@@ -0,0 +1,154 @@
+#import <Foundation/Foundation.h>
+#import <Keychain/Keychain.h>
+#import <Keychain/KeychainItem.h>
+#import <Keychain/Access.h>
+#import <Keychain/AccessControlList.h>
+#import <Keychain/TrustedApplication.h>
+#import <Keychain/KeychainSearch.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <errno.h>
+
+
+
+
+int main (int argc, char * const argv[]) {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ Keychain *keychain = nil;
+ int ch;
+ BOOL listACLs = NO;
+
+ static struct option longopts[] = {
+ { "list-acls", no_argument, NULL, 'a' },
+ { NULL, 0, NULL, 0 }
+ };
+
+ while (-1 != (ch = getopt_long(argc, argv, "a", longopts, NULL))) {
+ switch (ch) {
+ case 'a': // --list-acls
+ listACLs = YES; break;
+ case 0:
+ break;
+ default:
+ printUsage();
+ return EINVAL;
+ }
+
+ argc -= optind;
+ argv += optind;
+ }
+
+ if (argc > 1) {
+ NSString *keychainPath = [NSString stringWithUTF8String:argv[1]];
+
+ keychain = [Keychain keychainAtPath:keychainPath];
+
+ if (nil == keychain) {
+ fprintf(stderr, "Unable to open keychain file \"%s\".\n", argv[1]);
+ return EIO;
+ }
+
+ ++argc;
+ --argv;
+ }
+
+ if (argc > 1) {
+ // TODO: support selection of a particular keychain item.
+ }
+
+ if (nil == keychain) {
+ keychain = [Keychain defaultKeychain];
+
+ if (nil == keychain) {
+ fprintf(stderr, "Could not find default keychain.\n");
+ return ENOENT;
+ }
+ }
+
+ printf("Keychain: %s\n", [[keychain path] UTF8String]);
+
+ if (listACLs) {
+ // Start with the keychain itself.
+ Access *keychainAccess = [keychain access];
+
+ printf("Access: %s\n", ((nil != keychainAccess) ? [[keychainAccess description] UTF8String] : "(none)"));
+
+ NSArray *keychainItems = [[KeychainSearch keychainSearchWithKeychains:[NSArray arrayWithObject:keychain]] anySearchResults];
+
+ if (nil == keychainItems) {
+ fprintf(stderr, "Unable to access contents of keychain.\n");
+ return EPERM;
+ }
+
+ unsigned long numberOfKeychainItems = [keychainItems count];
+
+ // Now iterate over the items and show the Access/ACLs for them.
+ printf("\nContents (%ld item%s):\n",
+ numberOfKeychainItems,
+ ((1 == numberOfKeychainItems) ? "" : "s"));
+
+ NSEnumerator *keychainItemsEnumerator = [keychainItems objectEnumerator];
+ KeychainItem *currentKeychainItem;
+ Access *currentAccess;
+ NSArray *ACLs;
+ NSEnumerator *ACLsEnumerator;
+ AccessControlList *currentACL;
+ unsigned int ACLIndex;
+ NSArray *trustedApplications;
+ NSEnumerator *trustedApplicationsEnumerator;
+ TrustedApplication *currentApplication;
+
+ while (currentKeychainItem = [keychainItemsEnumerator nextObject]) {
+ printf("%s:", [[currentKeychainItem description] UTF8String]);
+
+ currentAccess = [currentKeychainItem access];
+
+ if (nil != currentAccess) {
+ printf("\n");
+
+ ACLs = [currentAccess accessControlLists];
+
+ if (0 < [ACLs count]) {
+ ACLsEnumerator = [ACLs objectEnumerator];
+
+ ACLIndex = 0;
+
+ while (currentACL = [ACLsEnumerator nextObject]) {
+ printf("\t%u: %s%s\n\t\tAuthorises: %s\n\t\tApplications:",
+ ACLIndex,
+ [[currentACL name] UTF8String],
+ ([currentACL requiresPassphrase] ? " (requires user authorisation)" : ""),
+ [descriptionOfAuthorizations([currentACL authorizations]) UTF8String]);
+
+ trustedApplications = [currentACL applications];
+
+ if (0 < [trustedApplications count]) {
+ trustedApplicationsEnumerator = [trustedApplications objectEnumerator];
+
+ printf("\n");
+
+ while (currentApplication = [trustedApplicationsEnumerator nextObject]) {
+ printf("\t\t\t%s\n", [[currentApplication path] UTF8String]);
+ }
+ } else {
+ printf(" (any)\n");
+ }
+
+ ++ACLIndex;
+ }
+ } else {
+ printf("\t(empty)\n");
+ }
+ } else {
+ printf(" (none)\n");
+ }
+ }
+ }
+
+ [pool release];
+
+ return 0;
+}
Added: trunk/Applications/keychain/keychain.xcodeproj/project.pbxproj
===================================================================
--- trunk/Applications/keychain/keychain.xcodeproj/project.pbxproj (rev 0)
+++ trunk/Applications/keychain/keychain.xcodeproj/project.pbxproj 2007-12-13 07:22:44 UTC (rev 449)
@@ -0,0 +1,247 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 75628A5D0D0FBC480038880C /* Keychain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75628A5C0D0FBC480038880C /* Keychain.framework */; };
+ 8DD76F9A0486AA7600D96B5E /* keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* keychain.m */; settings = {ATTRIBUTES = (); }; };
+ 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
+ 8DD76F9F0486AA7600D96B5E /* keychain.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859EA3029092ED04C91782 /* keychain.1 */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXBuildStyle section */
+ 014CEA4F0018CE4811CA2923 /* Debug */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ };
+ name = Debug;
+ };
+ 014CEA500018CE4811CA2923 /* Release */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ };
+ name = Release;
+ };
+/* End PBXBuildStyle section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ 8DD76F9F0486AA7600D96B5E /* keychain.1 in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 08FB7796FE84155DC02AAC07 /* keychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = keychain.m; sourceTree = "<group>"; };
+ 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 32A70AAB03705E1F00C91783 /* keychain_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keychain_Prefix.pch; sourceTree = "<group>"; };
+ 75628A5C0D0FBC480038880C /* Keychain.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Keychain.framework; path = /Library/Frameworks/Keychain.framework; sourceTree = "<absolute>"; };
+ 8DD76FA10486AA7600D96B5E /* keychain */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = keychain; sourceTree = BUILT_PRODUCTS_DIR; };
+ C6859EA3029092ED04C91782 /* keychain.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = keychain.1; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,
+ 75628A5D0D0FBC480038880C /* Keychain.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 08FB7794FE84155DC02AAC07 /* keychain */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB7795FE84155DC02AAC07 /* Source */,
+ C6859EA2029092E104C91782 /* Documentation */,
+ 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
+ 1AB674ADFE9D54B511CA2CBB /* Products */,
+ );
+ name = keychain;
+ sourceTree = "<group>";
+ };
+ 08FB7795FE84155DC02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 32A70AAB03705E1F00C91783 /* keychain_Prefix.pch */,
+ 08FB7796FE84155DC02AAC07 /* keychain.m */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 75628A5C0D0FBC480038880C /* Keychain.framework */,
+ 08FB779EFE84155DC02AAC07 /* Foundation.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 1AB674ADFE9D54B511CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8DD76FA10486AA7600D96B5E /* keychain */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ C6859EA2029092E104C91782 /* Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ C6859EA3029092ED04C91782 /* keychain.1 */,
+ );
+ name = Documentation;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 8DD76F960486AA7600D96B5E /* keychain */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "keychain" */;
+ buildPhases = (
+ 8DD76F990486AA7600D96B5E /* Sources */,
+ 8DD76F9B0486AA7600D96B5E /* Frameworks */,
+ 8DD76F9E0486AA7600D96B5E /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ buildSettings = {
+ };
+ dependencies = (
+ );
+ name = keychain;
+ productInstallPath = "$(HOME)/bin";
+ productName = keychain;
+ productReference = 8DD76FA10486AA7600D96B5E /* keychain */;
+ productType = "com.apple.product-type.tool";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 08FB7793FE84155DC02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "keychain" */;
+ buildSettings = {
+ };
+ buildStyles = (
+ 014CEA4F0018CE4811CA2923 /* Debug */,
+ 014CEA500018CE4811CA2923 /* Release */,
+ );
+ hasScannedForEncodings = 1;
+ mainGroup = 08FB7794FE84155DC02AAC07 /* keychain */;
+ projectDirPath = "";
+ targets = (
+ 8DD76F960486AA7600D96B5E /* keychain */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8DD76F990486AA7600D96B5E /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8DD76F9A0486AA7600D96B5E /* keychain.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1DEB927508733DD40010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = keychain_Prefix.pch;
+ INSTALL_PATH = "$(HOME)/bin";
+ PRODUCT_NAME = keychain;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ 1DEB927608733DD40010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = keychain_Prefix.pch;
+ INSTALL_PATH = "$(HOME)/bin";
+ PRODUCT_NAME = keychain;
+ };
+ name = Release;
+ };
+ 1DEB927908733DD40010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ FRAMEWORK_SEARCH_PATHS = (
+ "${FRAMEWORK_SEARCH_PATHS}",
+ /Library/Frameworks/,
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+ };
+ name = Debug;
+ };
+ 1DEB927A08733DD40010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "keychain" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB927508733DD40010E9CD /* Debug */,
+ 1DEB927608733DD40010E9CD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "keychain" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB927908733DD40010E9CD /* Debug */,
+ 1DEB927A08733DD40010E9CD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
Added: trunk/Applications/keychain/keychain_Prefix.pch
===================================================================
--- trunk/Applications/keychain/keychain_Prefix.pch (rev 0)
+++ trunk/Applications/keychain/keychain_Prefix.pch 2007-12-13 07:22:44 UTC (rev 449)
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'keychain' target in the 'keychain' project.
+//
+
+#ifdef __OBJC__
+ #import <Foundation/Foundation.h>
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-13 07:21:58
|
Revision: 448
http://keychain.svn.sourceforge.net/keychain/?rev=448&view=rev
Author: wadetregaskis
Date: 2007-12-12 23:22:02 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
* Updated for the change in method names from type/creator to typeAsString/creatorAsString.
Modified Paths:
--------------
trunk/Applications/Keychain Demo/demoController.m
Modified: trunk/Applications/Keychain Demo/demoController.m
===================================================================
--- trunk/Applications/Keychain Demo/demoController.m 2007-12-13 07:20:22 UTC (rev 447)
+++ trunk/Applications/Keychain Demo/demoController.m 2007-12-13 07:22:02 UTC (rev 448)
@@ -242,9 +242,9 @@
} else if ([identifier isEqualToString:@"Comment"]) {
return [current comment];
} else if ([identifier isEqualToString:@"Creator"]) {
- return [current creator];
+ return [current creatorAsString];
} else if ([identifier isEqualToString:@"Type"]) {
- return [current type];
+ return [current typeAsString];
} else if ([identifier isEqualToString:@"Label"]) {
return [current label];
} else if ([identifier isEqualToString:@"Visible"]) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-13 07:20:23
|
Revision: 447
http://keychain.svn.sourceforge.net/keychain/?rev=447&view=rev
Author: wadetregaskis
Date: 2007-12-12 23:20:22 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
* Added -[AccessControlList addApplication:], -[AccessControlList removeApplication:], -[AccessControlList removeApplicationIfPresent:] & -[AccessControlList allowsAnyApplication].
* Added internal methods +[AccessControlList _trustedApplicationFromObject:] & +[AccessControlList _removeApplication:explicitOnly].
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/AccessControlList.h
trunk/Frameworks/Keychain/Keychain/AccessControlList.m
Modified: trunk/Frameworks/Keychain/Keychain/AccessControlList.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/AccessControlList.h 2007-12-13 07:17:36 UTC (rev 446)
+++ trunk/Frameworks/Keychain/Keychain/AccessControlList.h 2007-12-13 07:20:22 UTC (rev 447)
@@ -23,8 +23,14 @@
/*! @class AccessControlList
@abstract Defines a set of authorizations for a set of applications
- @discussion An AccessControlList contains a list of authorizations, of various pre-defined types, and a list of TrustedApplication's to which these authorizations apply. AccessControlList's are usually grouped together, as appropriate, under an Access instance. */
+ @discussion An AccessControlList contains a list of authorizations, of various pre-defined types, and a list of TrustedApplication's to which these authorizations apply. AccessControlList's are usually grouped together, as appropriate, under an Access instance.
+
+ <b>Typical ACLs</b>
+
+ Typically each password in a keychain has three ACLs in its Access initially. One provides encrypt authorisation to any and all applications. A second provides permission to change the ACL, but specifies no applications by default. A third allows for decryption, key derivation, clear & wrapped export, MAC generation and signing. In a nutshell this provides read access to the keychain item's content.
+ The explanation for this is a little odd but fairly straightforward - every password in a keychain is composed of two parts - one is the actual data itself, encrypted, and the other is the key for that data. The Security framework, and the Keychain framework (typically), represent this pair of items as a single item, a KeychainItem. But the access permissions are with respect to the key. So, having encryption permission means you can encrypt data and thus modify the content. Conversely, having decrypt permission means you can access the password. Strictly speaking decrypt permission is all you need to do this. However, it is wise to follow the convention and also add the additional permissions when creating or modifying "read access" ACLs. */
+
@interface AccessControlList : NSCachedObject {
SecACLRef _ACL;
int _error;
@@ -79,25 +85,43 @@
/*! @method setApplications:
@abstract Sets the list of trusted applications the receiver governs. If "applications" is nil, all applications will be trusted. If it is an empty array, no applications will be trusted.
- @param applications An NSArray containing any mix of TrustedApplications, SecTrustedApplicationRefs or NSStrings (specifying a path to an application).
+ @param applications An NSArray containing any mix of TrustedApplications, SecTrustedApplicationRefs or NSStrings (specifying a path to an application). May be nil, in which case any and all applications may use the receiver's permissions.
@result Returns YES if the list was successfully set, NO otherwise. You can retrieve an error code using lastError. */
- (BOOL)setApplications:(NSArray*)applications;
-///*! @method addApplication:
-// @abstract Adds the given application to the list of trusted applications the receiver governs.
-// @param application An instance of a TrustedApplications, a SecTrustedApplicationRef or an NSString (specifying a path to an application). Should not be nil.
-// @result Returns YES if the application was successfully added, NO otherwise (including if 'application' is nil). You can retrieve an error code using lastError. */
-//
-//- (BOOL)addApplication:(id)application;
+/*! @method addApplication:
+ @abstract Adds the given application to the list of trusted applications the receiver governs.
+ @discussion If the receiver applies to all applications (i.e. its applications list is not nil but empty) then this has no effect, as the given application already has access, implicitly. Otherwise, the given application is added to the list. This may require user authorisation, via a modal dialog or similar. If the user refuses access NO will be returned.
+ @param application An instance of a TrustedApplications, a SecTrustedApplicationRef or an NSString (specifying a path to an application). Should not be nil.
+ @result Returns YES if the application was successfully added, NO otherwise (including if 'application' is nil). You can retrieve an error code using lastError. */
-///*! @method removeApplication:
-// @abstract Removes the given application from the list of trusted applications the receiver governs. If the given application is not in the receiver's list, nothing is changed and this method returns YES.
-// @param application An instance of a TrustedApplications, a SecTrustedApplicationRef or an NSString (specifying a path to an application). Should not be nil.
-// @result Returns YES if the application was successfully removed (or wasn't a member of the receiver to begin with), NO otherwise. If the receiver is set to trust any application (i.e. its application list is nil), this method returns NO (XXX: and what's lastError set to?). You can retrieve an error code using lastError. */
-//
-//- (BOOL)removeApplication:(id)application;
+- (BOOL)addApplication:(id)application;
+/*! @method removeApplication:
+ @abstract Removes the given application from the list of trusted applications the receiver governs.
+ @discussion The behaviour of this method is a little complex, so read the following carefully:
+
+ 1) If the receiver's application list is nil - meaning all applications are allowed by default - this method adds an empty list. <i>This means that not only is the given application no longer able to access the item, but no applications are</i>.
+ 2) If the receiver's application list is not nil, the given application is removed (if present).
+
+ Often you don't actually intend the behaviour of point 1, above. In that case, use @link removeApplicationIfPresent: removeApplicationIfPresent:@/link, which will only perform point 2, if anything.
+ @param application An instance of a TrustedApplications, a SecTrustedApplicationRef or an NSString (specifying a path to an application). Should not be nil.
+ @result Returns YES if the given application is no longer given implicit or explicit access to the item, NO otherwise. You can retrieve an error code using lastError. */
+
+- (BOOL)removeApplication:(id)application;
+
+/*! @method removeApplicationIfPresent:
+ @abstract Removes the given application, if present, from the list of trusted applications the receiver governs.
+ @discussion 1) If the receiver's application list is not nil, the given application is removed from the list, if present, and YES is returned.
+ 2) If the receiver's application list is nil - meaning all applications are allowed by default - then <i>this method does nothing</i>, but returns YES.
+
+ i.e. this method does not remove implicit access, only explicit. If your intention is to completely remove access by the given application (potentially at the expense of all other applications), use @link removeApplication: removeApplication:@/link.
+ @param application An instance of a TrustedApplications, a SecTrustedApplicationRef or an NSString (specifying a path to an application). Should not be nil.
+ @result Returns YES if the given application is no longer given explicit access to the item, NO otherwise. You can retrieve an error code using lastError. */
+
+- (BOOL)removeApplicationIfPresent:(id)application;
+
/*! @method setName:
@abstract Sets the name of the receiver to the value given.
@param name The new name to be given to the receiver. May be an empty string, but should not be nil.
@@ -107,7 +131,7 @@
/*! @method setRequiresPassphrase:
@abstract Sets whether or not the receiver requires the user's authorization to be used.
- @discussion If this is set to YES, the user must provided their authorization (by entering their keychain password) in order to the receiver's authorizations to be applied.
+ @discussion If this is set to YES, the user must provided their authorization (by entering their keychain password) in order to the receiver's authorizations to be applied. This applies even if your application is in the ACL.
@param reqPass Whether or not the user's authorization is required.
@result Returns YES if the setting was applied successfully, NO otherwise. You can retrieve an error code using lastError. */
@@ -115,11 +139,18 @@
/*! @method applications
@abstract Returns the list of trusted applications the receiver governs.
- @discussion The returned list is not mutable. If you wish to change it, you can use either the addApplication:/removeApplication: methods, or create a mutable copy, change it as desired, and then apply it using setApplications:.
- @result An NSArray containing 0 or more TrustedApplication's. If empty, no applications are trusted. If nil is returned, check if an error occurred using @link lastError lastError@/link - if it did not, the receiver applies to any and all applications. */ // TODO: this API sucks; using nil as a return with two possible meanings. Need to find a better way - return NSNull instead of nil for the trusts all applications case?
+ @discussion The returned list is not mutable. If you wish to change it, you can use either the @link addApplication: addApplication:@/link/@link removeApplication: removeApplication:@/link methods, or create a mutable copy, change it as desired, and then apply it using @link setApplications: setApplications:@/link.
+ @result An NSArray containing 0 or more TrustedApplication's. If empty (but not nil), no applications are trusted. If nil is returned, check if an error occurred using @link lastError lastError@/link - if it did not, the receiver applies to any and all applications. You may also wish to use the convenience method @link allowsAnyApplication allowsAnyApplication@/link. */
- (NSArray*)applications;
+/*! @method allowsAnyApplication
+ @abstract Returns whether or not any and all applications may use the receiver's permissions.
+ @discussion This is a convenience method over @link applications applications@/link.
+ @result Returns YES if the receiver allows any application to use its permissions, NO otherwise. */
+
+- (BOOL)allowsAnyApplication;
+
/*! @method name
@abstract Returns the name of the receiver.
@discussion An AccessControlList's name is not inherantly a unique identifier of that particular instance. Be aware of this, and avoid making such dangerous assumptions.
Modified: trunk/Frameworks/Keychain/Keychain/AccessControlList.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/AccessControlList.m 2007-12-13 07:17:36 UTC (rev 446)
+++ trunk/Frameworks/Keychain/Keychain/AccessControlList.m 2007-12-13 07:20:22 UTC (rev 447)
@@ -19,9 +19,12 @@
#import <Keychain/TrustedApplication.h>
+#import <Security/Security.h>
+
@interface AccessControlList (Internal)
++ (TrustedApplication*)_trustedApplicationFromObject:(id)object;
+ (NSArray*)_arrayOfSecTrustedApplicationRefsFromArray:(NSArray*)trustedApplications;
+ (NSArray*)_arrayOfTrustedApplicationsFromArray:(NSArray*)trustedApplications;
@@ -116,6 +119,19 @@
return nil;
}
++ (TrustedApplication*)_trustedApplicationFromObject:(id)object {
+ if ([object isKindOfClass:[TrustedApplication class]]) {
+ return (TrustedApplication*)object;
+ } else if ([object isKindOfClass:[NSString class]]) {
+ return [TrustedApplication trustedApplicationWithPath:object];
+ } else if (CFGetTypeID(object) == SecTrustedApplicationGetTypeID()) {
+ return [TrustedApplication trustedApplicationWithTrustedApplicationRef:(SecTrustedApplicationRef)object];
+ } else {
+ PDEBUG(@"Don't know how to convert object of class %@ (0x%x) to TrustedApplication.\n", [object className], object);
+ return nil;
+ }
+}
+
+ (NSArray*)_arrayOfSecTrustedApplicationRefsFromArray:(NSArray*)trustedApplications {
NSMutableArray *result = nil;
@@ -224,75 +240,92 @@
return (noErr == _error);
}
-//- (BOOL)addApplication:(id)application {
-// NSArray *currentApplications = [self applications];
-// OSStatus err = [self lastError];
-//
-// if (noErr == err) {
-// if (nil == currentApplications) {
-// // We already trust everything; just return YES.
-// return YES;
-// } else {
-// /* // XXX: Do we need to check if the given app is already in the list? Hopefully the Security framework will handle this gracefully for us.
-//
-// TrustedApplication *newApp = nil;
-//
-// if ([application isKindOfClass:[TrustedApplication class]]) {
-// newApp = application;
-// } else if ([application isKindOfClass:[NSString class]]) {
-// newApp = [TrustedApplication trustedApplicationWithPath:application];
-// } else if (CFGetTypeID(application) == SecTrustedApplicationGetTypeID()) {
-// newApp = [TrustedApplication trustedApplicationWithTrustedApplicationRef:(SecTrustedApplicationRef)application];
-// } else {
-// PSYSLOG(LOG_ERROR, @"Unknown class of object (%p) given as the 'application' - has class %@.", application, [application className]);
-// }
-//
-// if (nil != newApp) { */
-//
-// return [self setApplications:[currentApplications arrayByAddingObject:application]];
-// }
-// } else {
-// return NO;
-// }
-//}
+- (BOOL)addApplication:(id)application {
+ if (nil != application) {
+ NSArray *currentApplications = [self applications];
+ OSStatus err = [self lastError];
+
+ if (noErr == err) {
+ if (nil == currentApplications) {
+ // We already trust everything; just return YES.
+ return YES;
+ } else {
+ TrustedApplication *newApp = [[self class] _trustedApplicationFromObject:application];
+
+ if (nil != newApp) {
+ if ([currentApplications containsObject:newApp]) {
+ return YES;
+ } else {
+ return [self setApplications:[currentApplications arrayByAddingObject:newApp]];
+ }
+ } else {
+ _error = errSecInvalidItemRef;
+ return NO;
+ }
+ }
+ } else {
+ return NO;
+ }
+ } else {
+ PDEBUG(@"'application' is nil.\n");
+ _error = errSecInvalidItemRef;
+ return NO;
+ }
+}
-//- (BOOL)removeApplication:(id)application {
-// if (
-// NSArray *currentApplications = [self applications];
-// OSStatus err = [self lastError];
-//
-// if (noErr = err) {
-// if (nil == currentApplications) {
-// // We currently trust everything implicitly. Since we can't just magically construct a list of every application ever in existence less the one given, we fail here.
-// _error = errSecACLNotSimple;
-// return NO;
-// } else {
-// TrustedApplication *targetApp = nil;
-//
-// if ([application isKindOfClass:[TrustedApplication class]]) {
-// targetApp = application;
-// } else if ([application isKindOfClass:[NSString class]]) {
-// targetApp = [TrustedApplication trustedApplicationWithPath:application];
-// } else if (CFGetTypeID(application) == SecTrustedApplicationGetTypeID()) {
-// targetApp = [TrustedApplication trustedApplicationWithTrustedApplicationRef:(SecTrustedApplicationRef)application];
-// }
-//
-// if (nil != targetApp) {
-// NSMutableArray *newApplications = [currentApplications mutableCopy];
-//
-// [currentApplications removeObject:targetApp];
-//
-// return [self setApplications:[newApplications autorelease]];
-// } else {
-// PSYSLOG(LOG_ERROR, @"Unable to convert given application (%p, class %@) to a TrustedApplication.", application, [application className]);
-// return NO;
-// }
-// }
-// } else {
-// return NO;
-// }
-//}
+- (BOOL)_removeApplication:(id)application explicitOnly:(BOOL)explicitOnly {
+ if (nil != application) {
+ NSArray *currentApplications = [self applications];
+ OSStatus err = [self lastError];
+
+ if (noErr == err) {
+ if (nil == currentApplications) {
+ // We trust all applications implicitly...
+
+ if (explicitOnly) {
+ // ...and this method is only expected to remove *explicit* access, not the implicit access the missing list implies. So, we do nothing and pretend we were successful.
+ return YES;
+ } else {
+ // ...but we're being told to remove even implicit access such as this. So, we have to disallow access by *all* applications... brutal, but hey, we document this behaviour, so I can only pray whoever's calling us knows what they're doing.
+ return [self setApplications:[NSArray array]];
+ }
+ } else {
+ TrustedApplication *targetApp = [[self class] _trustedApplicationFromObject:application];
+
+ if (nil != targetApp) {
+ if ([currentApplications containsObject:targetApp]) {
+ NSMutableArray *newApplications = [currentApplications mutableCopy];
+
+ [newApplications removeObject:targetApp];
+
+ return [self setApplications:[newApplications autorelease]];
+ } else {
+ // The given app's not in our application list anyway.
+ return YES;
+ }
+ } else {
+ _error = errSecInvalidItemRef;
+ return NO;
+ }
+ }
+ } else {
+ return NO;
+ }
+ } else {
+ PDEBUG(@"'application' is nil.\n");
+ _error = errSecInvalidItemRef;
+ return NO;
+ }
+}
+- (BOOL)removeApplication:(id)application {
+ return [self _removeApplication:application explicitOnly:NO];
+}
+
+- (BOOL)removeApplicationIfPresent:(id)application {
+ return [self _removeApplication:application explicitOnly:YES];
+}
+
- (BOOL)setName:(NSString*)name {
CFArrayRef appList = NULL;
CFStringRef desc = NULL;
@@ -388,6 +421,10 @@
return result;
}
+- (BOOL)allowsAnyApplication {
+ return ((nil != [self applications]) && (noErr == [self lastError]));
+}
+
- (NSString*)name {
CFArrayRef appList = NULL;
CFStringRef desc = NULL;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-13 07:17:31
|
Revision: 446
http://keychain.svn.sourceforge.net/keychain/?rev=446&view=rev
Author: wadetregaskis
Date: 2007-12-12 23:17:36 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
* Added isEqual: and hash methods; it should be possible to logically compare two TrustedApplications for equality now.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/TrustedApplication.m
Modified: trunk/Frameworks/Keychain/Keychain/TrustedApplication.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/TrustedApplication.m 2007-12-12 08:01:14 UTC (rev 445)
+++ trunk/Frameworks/Keychain/Keychain/TrustedApplication.m 2007-12-13 07:17:36 UTC (rev 446)
@@ -109,6 +109,18 @@
return _trustedApplication;
}
+- (BOOL)isEqual:(id)object {
+ if ([object isKindOfClass:[TrustedApplication class]]) {
+ return ((self == object) || CFEqual([self trustedApplicationRef], [(TrustedApplication*)object trustedApplicationRef]));
+ } else {
+ return NO;
+ }
+}
+
+- (unsigned int)hash {
+ return CFHash([self trustedApplicationRef]);
+}
+
- (void)dealloc {
if (_trustedApplication) {
CFRelease(_trustedApplication);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-12 08:01:19
|
Revision: 445
http://keychain.svn.sourceforge.net/keychain/?rev=445&view=rev
Author: wadetregaskis
Date: 2007-12-12 00:01:14 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
* Added values for the CSSM_ACL_AUTHORIZATION_CHANGE_ACL and CSSM_ACL_AUTHORIZATION_CHANGE_OWNER authorisations, which are Apple-defined.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Constants.strings
trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Names.strings
Modified: trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Constants.strings
===================================================================
--- trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Constants.strings 2007-12-09 23:50:26 UTC (rev 444)
+++ trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Constants.strings 2007-12-12 08:01:14 UTC (rev 445)
@@ -27,3 +27,7 @@
19 = "CSSM_ACL_AUTHORIZATION_DB_INSERT";
20 = "CSSM_ACL_AUTHORIZATION_DB_MODIFY";
17 = "CSSM_ACL_AUTHORIZATION_DB_DELETE";
+
+/* Apple-defined ACL authorization tags, from cssmapple.h in the Security framework. */
+65536 = "CSSM_ACL_AUTHORIZATION_CHANGE_ACL";
+65537 = "CSSM_ACL_AUTHORIZATION_CHANGE_OWNER";
Modified: trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Names.strings
===================================================================
--- trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Names.strings 2007-12-09 23:50:26 UTC (rev 444)
+++ trunk/Frameworks/Keychain/Resources/English.lproj/Authorization Tag Names.strings 2007-12-12 08:01:14 UTC (rev 445)
@@ -27,3 +27,7 @@
19 = "Database entry insertion";
20 = "Database entry modification";
17 = "Database entry deletion";
+
+/* Apple-defined ACL authorization tags, from cssmapple.h in the Security framework. */
+65536 = "Changing Access";
+65537 = "Changing Owner";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-09 23:50:23
|
Revision: 444
http://keychain.svn.sourceforge.net/keychain/?rev=444&view=rev
Author: wadetregaskis
Date: 2007-12-09 15:50:26 -0800 (Sun, 09 Dec 2007)
Log Message:
-----------
* Commented out -[KeychainItem createDuplicate] until it's determined whether it works or not, and fixed as necessary.
* Completed the documentation for KeychainItem.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/KeychainItem.h
Modified: trunk/Frameworks/Keychain/Keychain/KeychainItem.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/KeychainItem.h 2007-12-09 23:49:52 UTC (rev 443)
+++ trunk/Frameworks/Keychain/Keychain/KeychainItem.h 2007-12-09 23:50:26 UTC (rev 444)
@@ -327,7 +327,7 @@
This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
- The default value, for new KeychainItems, is the creator code of the main bundle (i.e. your application). This may be 0.
+ The default value, for keychain items created by this framework, is the creator code of the main bundle (i.e. your application). This may be 0. The default value for items created by other frameworks or means is typically 0, but is not explicitly defined.
@param creator The creator of the receiver, which may be 0 (meaning essentially 'no creator'). */
- (void)setCreator:(FourCharCode)creator;
@@ -389,7 +389,7 @@
/*! @method setPasswordIsValid:
@abstract Sets whether or not the receiver's data is valid.
- @discussion You may wish to add an entry to a keychain which is not actually valid, as a way of saying that you do not want to remember the real data for that item. For example, if your application has the option to add passwords to the keychain when you first enter them, if the user decides not to do so you could add a placeholder item (with an empty password) and mark it invalid. Then when your application, in future, searches for the password it will find the invalid item and know that it must prompt the user, and shouldn't try to store the password.
+ @discussion You may wish to add an entry to a keychain which is not actually valid, as a way of saying that you do not want to remember the real data for that item. For example, if your application has the option to add passwords to the keychain when you first enter them, if the user decides not to do so you could add a placeholder item marked as invalid. Then when your application, in future, searches for the password it will find the invalid item and know that it must prompt the user, and shouldn't try to store the password.
While you could use this to require the user to always enter a password, without the option of saving it, keep in mind that they ultimately could just choose to toggle this flag themselves, manually, if so inclined. As such, don't rely on this exclusively for setting policy. You may also want to make the receiver invisible (@link setIsVisible: setIsVisible:@/link), if it is invalid, to discourage user manipulation.
@@ -417,7 +417,7 @@
/*! @method setAccount:
@abstract Sets the account of the receiver.
- @discussion The account is the login name or similar of a password. It is not encrypted when stored in the keychain. Only password KeychainItems have this attribute; not certificates.
+ @discussion The account is the login name or similar of a password. It is not encrypted when stored in the keychain.
This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass). It is a uniquing attribute for all three types.
@@ -488,7 +488,9 @@
/*! @method setPath:
@abstract Sets the path of the reciever.
- @discussion This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
+ @discussion e.g. the path of "http://www.example.com/cgi/query.c" is "/cgi/query.c".
+
+ This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
@param path The path. Should not be nil (but may be an empty string). */
@@ -542,7 +544,7 @@
@abstract Sets the certificate encoding of the receiver.
@discussion This attribute applies only to certificates (kSecCertificateItemClass, @link isCertificate isCertificate@/link).
- // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual certificate data, automatically?
+ // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual certificate data, automatically?
@param certEncoding The certificate encoding. */
- (void)setCertificateEncoding:(CSSM_CERT_ENCODING)certEncoding;
@@ -551,7 +553,7 @@
@abstract Sets the CRL type of the receiver.
@discussion This attribute applies only to CRLs (Certificate Revocation Lists). (TODO: how does one identify a KeychainItem as such?)
- // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual CRL data, automatically?
+ // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual CRL data, automatically?
@param type The CRL type. */
- (void)setCRLType:(CSSM_CRL_TYPE)type;
@@ -560,7 +562,7 @@
@abstract Sets the CRL encoding of the receiver.
@discussion This attribute applies only to CRLs (Certificate Revocation Lists). (TODO: how does one identify a KeychainItem as such?)
- // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual CRL data, automatically?
+ // TODO: should this be settable? Shouldn't we ensure this is in sync with the actual CRL data, automatically?
@param encoding The CRL encoding. */
- (void)setCRLEncoding:(CSSM_CRL_ENCODING)encoding;
@@ -572,56 +574,410 @@
- (void)setAlias:(NSString*)alias;
+/*! @method creationDate
+ @abstract Returns the creation date of the receiver.
+ @discussion The creation date is the time at which the receiver was added to the keychain. If an item is moved between two keychains, the new copy will have its creation date set to the present (this is contrary to typical creation date behaviour, such as in the file system, and may change in future).
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ You can modify this attribute using @link setCreationDate: setCreationDate:@/link.
+ @result Returns the creation date (time at which the receiver was added to the keychain), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSCalendarDate*)creationDate;
+
+/*! @method modificationDate
+ @abstract Returns the time of the most recent modification to the receiver.
+ @discussion The modification date is automatically updated to the present date and time whenever the receivers data (e.g. password) or attributes are modified.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ At present it cannot be set explicitly using this framework, although it is possible to do so - you should not rely on the modification date to be truthful.
+ @result Returns the time of the most recent modification to the receiver, or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSCalendarDate*)modificationDate;
+
+/*! @method typeDescription
+ @abstract Returns the human-readable description of the receiver's type.
+ @discussion KeychainItem's can (and 'generic' or custom types <i>should</i>) have a type description associated with them, which concisely summarises their type and purpose. Examples include "Proteus Service Password", or "Web Forms Password", etc.
+
+ Note that this is distinct from the item's label (@link setLabel: setLabel:@/link/@link label label@/link) and comment (@link setComment: setComment:@/link/@link comment comment@/link); it describes the <i>type</i> of item the receiver is, not the receiver specifically.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is an empty string.
+
+ You can modify this attribute using @link setTypeDescription: setTypeDescription:@/link.
+ @result Returns the description of the receiver's type (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)typeDescription;
+
+/*! @method comment
+ @abstract Returns a human-readable comment for the receiver.
+ @discussion The comment can be anything; it is intended to be end-user readable, in a similar manner to file comments in the Finder. This attribute should be considered user-editable.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is an empty string.
+
+ You can modify this attribute using @link setComment: setComment:@/link.
+ @result Returns the comment for the receiver (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)comment;
+
+/*! @method creator
+ @abstract Returns the creator code of the receiver.
+ @discussion The creator code is the Classic MacOS document creator code, identifying which application created (or otherwise presently "owns") a given item.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for keychain items created by this framework, is the creator code of the main bundle (i.e. your application). This may be 0. The default value for items created by other frameworks or means is typically 0, but is not explicitly defined.
+
+ You can modify this attribute using @link setCreator: setCreator:@/link. You may also wish to retrieve this value as a string, using @link creatorAsString creatorAsString@/link.
+ @result Returns the creator code of the receiver, or 0 if one is not set or an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (FourCharCode)creator;
+
+/*! @method creatorAsString
+ @abstract Returns the creator code of the receiver.
+ @discussion This is a convenience method which converts the result of @link creator creator@/link into an NSString. Since creator codes are ultimately just 32-bit integers, this is not guaranteed to result in a human-readable string (although by convention most creator codes use ASCII alphanumerics only, making them human-readable for convenience).
+
+ You can modify this attribute using @link setCreatorFromString: setCreatorFromString:@/link.
+ @result Returns the receiver's creator code converted to an NSString, or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)creatorAsString;
+
+/*! @method type
+ @abstract
+ @discussion The type code is the Classic MacOS document type code, identifying the document type of a given item. This is very distinct from the @link kind kind@/link of a KeychainItem; the 'type' does not describe the type of KeychainItem, but rather the document type with which it is associated. This is largely just a hang-over from Classic MacOS, and is neither commonly used nor recommended for future use.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is 0.
+
+ You can modify this attribute using @link setType: setType:@/link. You may also wish to retrieve this value as a string, using @link typeAsString typeAsString@/link.
+ @result Returns the type of the receiver, which may be 0 (meaning essentially 'no type') if no value is set, or an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (FourCharCode)type;
+
+/*! @method typeAsString
+ @abstract Returns the type code of the receiver.
+ @discussion This is a convenience method which converts the result of @link type type@/link into an NSString. Since type codes are ultimately just 32-bit integers, this is not guaranteed to result in a human-readable string (although by convention most type codes use ASCII alphanumerics only, making them human-readable for convenience).
+
+ You can modify this attribute using @link setTypeFromString: setTypeFromString:@/link.
+ @result Returns the receiver's type code converted to an NSString, or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)typeAsString;
+
+/*! @method label
+ @abstract Returns the human-readable label of the receiver.
+ @discussion The label is a human-readable, brief description of the receiver. This attribute should be considered user-editable.
+
+ The default value, for new KeychainItems, varies; it is automatically generated based on the receiver's contents to be some suitable default.
+
+ You may modify this attribute using @link setLabel: setLabel:@/link.
+ @result Returns the label for the receiver (which may be an empty string), or nil if an error occurs. */
+
- (NSString*)label;
+
+/*! @method isVisible
+ @abstract Returns whether the receiver is visible or not.
+ @discussion 'Visibility' applies to the end-user only, and is something that the end-developer should account for in their application; it has no bearing on how the Keychain framework works with KeychainItems. You might desire for an item to be invisible if it is internal to your application and not something the user needs to be aware of.
+
+ Note that in 10.4 I believe Keychain Access ignores this attribute and displays all items regardless. TODO: verify this.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is YES.
+
+ You may modify this attribute using @link setIsVisible: setIsVisible:@/link.
+ @result Returns whether or not the receiver should be visible to the end-user, or NO if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (BOOL)isVisible;
+
+/*! @method passwordIsValid
+ @abstract Returns whether the receiver's content (e.g. password) is valid.
+ @discussion You may wish to add an entry to a keychain which is not actually valid, as a way of saying that you do not want to remember the real data for that item. For example, if your application has the option to add passwords to the keychain when you first enter them, if the user decides not to do so you could add a placeholder item marked as invalid. Then when your application, in future, searches for the password it will find the invalid item and know that it must prompt the user, and shouldn't try to store the password.
+
+ While you could use this to require the user to always enter a password, without the option of saving it, keep in mind that they ultimately could just choose to toggle this flag themselves, manually, if so inclined. As such, don't rely on this exclusively for setting policy. You may also want to make the receiver invisible (@link setIsVisible: setIsVisible:@/link), if it is invalid, to discourage user manipulation.
+
+ Note that as an end-developer you are responsible for handling validity appropriately; the setting of this attribute does not influence how the Keychain framework operates.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is YES.
+
+ You may modify this attribute using @link setPasswordIsValid: setPasswordIsValid:@/link.
+ @result Returns whether or not the receiver's content (@link data data@/link) is valid, or NO if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (BOOL)passwordIsValid;
+
+/*! @method hasCustomIcon
+ @abstract Returns whether or not the receiver has a custom icon associated with it.
+ @discussion Custom icons are a hang-over from the Classic MacOS Keychain Manager. In a nutshell, if this attribute is set to YES, then a custom icon should be displayed (if available) by searching for the document icon corresponding to the receiver's @link creator creator@/link and @link type type@/link codes.
+
+ This attribute is more or less deprecated, and not recommended for future use.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass).
+
+ The default value, for new KeychainItems, is NO.
+
+ You may modify this attribute using @link setHasCustomIcon: setHasCustomIcon:@/link.
+ @result Returns whether or not the receiver has a custom icon, or NO if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (BOOL)hasCustomIcon;
+
+/*! @method account
+ @abstract Returns the account of the receiver.
+ @discussion The account is the login name or similar of a password. It is not encrypted when stored in the keychain.
+
+ This attribute applies only to password items (kSecInternetPasswordItemClass, kSecAppleSharePasswordItemClass and kSecGenericPasswordItemClass). It is a uniquing attribute for all three types.
+
+ The default value for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setAccount: setAccount:@/link.
+ @result Returns the account for the receiver (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)account;
+
+/*! @method service
+ @abstract Returns the 'service' of the receiver.
+ @discussion i.e. the type of thing it is a password for. e.g. ".Mac".
+
+ This attribute applies only to Generic passwords (kSecGenericPasswordItemClass), where it is a uniquing attribute.
+
+ The default value for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setService: setService:@/link.
+ @result Returns the service for the receiver (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)service;
+
+/*! @method userDefinedAttribute
+ @abstract Returns the user-defined attribute of the receiver.
+ @discussion This attribute is only available on generic password (kSecGenericPasswordItemClass) KeychainItems, and is simply a blob of arbitrary data. It is up to the end-developer to define what this attribute is, and the structure of it. In the interest of compatibility and openness the use of this attribute is discouraged. If you do use it, it's recommended you publish a description of its purpose and structure so that others may interoperate.
+
+ The default value, for new KeychainItems, is an empty NSData.
+
+ You may modify this attribute using @link setUserDefinedAttribute: setUserDefinedAttribute:@/link.
+ @result Returns the attribute value (which may be an empty NSData), or nil if an error occurs. */
+
- (NSData*)userDefinedAttribute;
+
+/*! @method securityDomain
+ @abstract Returns the security domain of the receiver.
+ @discussion The security domain (also know as a realm) is a way of identifying a subsection of a website which uses the same login. For example, on www.example.com there may be a "PHPmyAdmin" domain and a "User" domain. Where you have knowledge of the domain of a password, it is wise to reference the domain in preference to a particular path, as the user should not be prompted multiple times for the same login, for the same domain.
+
+ This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setSecurityDomain: setSecurityDomain:@/link.
+ @result Returns the security domain for the receiver (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)securityDomain;
+
+/*! @method server
+ @abstract Returns the server of the receiver.
+ @discussion The server is just the domain name or IP address of the server, e.g. "www.google.com" or "192.168.0.1".
+
+ This attribute applies only to AppleShare passwords (kSecAppleSharePasswordItemClass, @link isAppleShareItem isAppleShareItem@/link) and Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link). It is a uniquing attribute for Internet passwords.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setServer: setServer:@/link.
+ @result Returns the server (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)server;
+
+/*! @method authenticationType
+ @abstract Returns the authentication type of the receiver.
+ @discussion It is possible to have two otherwise-identical passwords with different authentication types. e.g. one for HTTP basic and one for HTTP digest. If the authentication type is irrelevant, use kSecAuthenticationTypeDefault.
+
+ This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
+
+ You may modify this attribute using @link setAuthenticationType: setAuthenticationType:@/link.
+ @result Returns the authentication type of the receiver. */
+
- (SecAuthenticationType)authenticationType;
+
+/*! @method port
+ @abstract Returns the port of the receiver.
+ @discussion This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is 0.
+
+ You may modify this attribute using @link setPort: setPort:@/link.
+ @param port The port (which may be 0 if unspecified), or 0 if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (uint32_t)port;
+
+/*! @method path
+ @abstract Returns the path of the receiver.
+ @discussion e.g. the path of "http://www.example.com/cgi/query.c" is "/cgi/query.c".
+
+ This attribute applies only to Internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link), where is is a uniquing attribute.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setPath: setPath:@/link.
+ @result Returns the path (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)path;
+
+/*! @method appleShareVolume
+ @abstract Returns the AppleShare volume name of the receiver.
+ @discussion This attribute applies only to AppleShare passwords (kSecAppleSharePasswordItemClass, @link isAppleShareItem isAppleShareItem@/link), where it is a uniquing attribute.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setAppleShareVolume: setAppleShareVolume:@/link.
+ @result Returns the volume name (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)appleShareVolume;
+
+/*! @method appleShareAddress
+ @abstract Returns the AppleShare address of the receiver.
+ @discussion This attribute applies only to AppleShare passwords (kSecAppleSharePasswordItemClass, @link isAppleShareItem isAppleShareItem@/link), where it is a uniquing attribute.
+
+ The default for new KeychainItems, if not otherwise defined at creation time, is an empty string.
+
+ You may modify this attribute using @link setAppleShareAddress: setAppleShareAddress:@/link.
+ @result Returns the address (which may be an empty string), or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSString*)appleShareAddress;
+
+/*! @method appleShareSignature
+ @abstract Returns the AppleShare signature of the receiver.
+ @discussion This attribute applies only to AppleShare passwords (kSecAppleSharePasswordItemClass, @link isAppleShareItem isAppleShareItem@/link), where it is a uniquing attribute.
+
+ You may modify this attribute using @link setAppleShareSignature: setAppleShareSignature:@/link.
+ @result Returns the signature, or NULL if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (SecAFPServerSignature*)appleShareSignature;
+
+/*! @method appleShareSignatureData
+ @abstract Returns the AppleShare signature of the receiver as an NSData.
+ @discussion This is a convenience method which wraps the result from @link appleShareSignature appleShareSignature@/link in an NSData.
+ @result Returns the AppleShare signature of the receiver, or nil if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (NSData*)appleShareSignatureData;
+
+/*! @method protocol
+ @abstract Returns the protocol of the receiver.
+ @discussion This attribute applies only for internet passwords (kSecInternetPasswordItemClass, @link isInternetItem isInternetItem@/link) and AppleShare passwords (kSecAppleSharePasswordItemClass, @link isAppleShareItem isAppleShareItem@/link). For Internet passwords it is a uniquing attribute.
+
+ There is no "default" or "generic" protocol. If you cannot find a value the applies for your use, make up your own.
+
+ You may modify this attribute using @link setProtocol: setProtocol:@/link.
+ @result Returns the protocol, or 0 if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (SecProtocolType)protocol;
+
+/*! @method certificateType
+ @abstract Returns the certificate type of the receiver.
+ @discussion This attribute applies only to certificates (kSecCertificateItemClass, @link isCertificate isCertificate@/link), where it is a uniquing attribute.
+
+ You may modify this attribute using @link setCertificateType: setCertificateType:@/link.
+ @result Returns the certificate type, or 0 if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (CSSM_CERT_TYPE)certificateType;
+
+/*! @method certificateEncoding
+ @abstract Returns the certificate encoding of the receiver.
+ @discussion This attribute applies only to certificates (kSecCertificateItemClass, @link isCertificate isCertificate@/link).
+
+ You may modify this attribute using @link setCertificateEncoding: setCertificateEncoding:@/link.
+ @result Returns the certificate encoding, or 0 if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (CSSM_CERT_ENCODING)certificateEncoding;
+
+/*! @method CRLType
+ @abstract Returns the CRL type of the receiver.
+ @discussion This attribute applies only to CRLs (Certificate Revocation Lists). (TODO: how does one identify a KeychainItem as such?)
+
+ You may modify this attribute using @link setCRLType: setCRLType:@/link.
+ @result Returns the CRL type, or 0 if an error occurs (e.g. this attribute does not apply to the receiver). */
+
- (CSSM_CRL_TYPE)CRLType;
+
+/*! @method CRLEncoding
+ @abstract Returns the CRL encoding of the receiver.
+ @discussion This attribute applies only to CRLs (Certificate Revocation Lists). (TODO: how does one identify a KeychainItem as such?)
+
+ You may modify this attribute using @link setCRLEncoding: setCRLEncoding:@/link.
+ @result Returns the CRL encoding. */
+
- (CSSM_CRL_ENCODING)CRLEncoding;
+
+/*! @method alias
+ @abstract Returns the alias of the receiver.
+ @discussion The alias is typically used for certificates as a convenient way of identifying the key attribute of the item, e.g. the email address the certificate applies to (which may in turn be useful for looking up related AddressBook entries, for example).
+
+ You may modify this attribute using @link setAlias: setAlias:@/link.
+ @result Returns the alias (which may be an empty string), or nil if an error occurs. */
+
- (NSString*)alias;
+/*! @method setAccess:
+ @abstract Sets the Access of the receiver.
+ @discussion The Access associated with a KeychainItem controls how the item may be accessed by applications. See the documentation for @link Access Access@/link for more information.
+ @param acc The Access to set. Should not be nil. */
+
- (void)setAccess:(Access*)acc;
+
+/*! @method access
+ @abstract Returns the Access of the receiver.
+ @discussion The Access associated with a KeychainItem controls how the item may be accessed by applications. See the documentation for @link Access Access@/link for more information.
+
+ While you typically modify the existing Access, if available, you may replace the receiver's access entirely using @link setAccess: setAccess:@/link.
+ @result Returns the receiver's access, or nil if an error occurs. */
+
- (Access*)access;
+/*! @method keychain
+ @abstract Returns the Keychain in which the receiver resides.
+ @discussion In most circumstances all KeychainItems are contained within a Keychain, although this is not guaranteed.
+ @result Returns the receiver's Keychain, if any, or nil if an error occurs. */
+
- (Keychain*)keychain;
-- (KeychainItem*)createDuplicate;
+//- (KeychainItem*)createDuplicate; // Not exposed yet because I'm pretty sure it doesn't work.
+/*! @method certificate
+ @abstract Returns the Certificate for the receiver, if possible.
+ @discussion If the receiver is a certificate, you may get an actual Certificate instance (that allows you to fully access and use the certificate) using this method.
+
+ This only applies to certificate (@link isCertificate isCertificate@/link) items, naturally.
+ @result Returns the Certificate for the receiver, or nil if an error occurs (e.g. the receiver is not a certificate). */
+
- (Certificate*)certificate;
+/*! @method deleteCompletely
+ @abstract Deletes the receiver from its keychain.
+ @discussion The lifetime of a KeychainItem instance isn't linked to the actual record in the keychain, naturaly - the KeychainItem may be deallocated and go away without affecting the item it represents. So if you actually want to delete an item, use this method.
+
+ Once you have invoked this method, the receiver is no longer valid and cannot be used (all methods will fail). */
+
- (void)deleteCompletely;
/*! @method lastError
@abstract Returns the last error that occured for the receiver.
- @discussion The set of error codes encompasses those returned by Sec* functions - refer to the Security framework documentation for a list - and the CDSA error codes. At present there are no other error codes defined for Access instances.
+ @discussion The set of error codes encompasses those returned by Sec* functions - refer to the Security framework documentation for a list - and the CDSA error codes.
Please note that this error code is local to the receiver only, and not any sort of shared global value.
@result The last error that occured, or zero if the last operation was successful. */
- (OSStatus)lastError;
+
+/*! @method keychainItemRef
+ @abstract Returns the receiver's underlying SecKeychainItemRef.
+ @discussion Each KeychainItem wraps a SecKeychainItemRef, which is the Security-framework representation of keychain items. You may use this method to retrieve this low-level reference.
+
+ The SecKeychainItemRef returned will be retained for at least the lifetime of the receiver, but you should of course CFRetain (and, later, CFRelease) it if you wish to keep the reference around.
+
+ While there aren't typically any issues with this reference being used directly alongside the use of the receiver, you should be aware that there is a potential for conflict.
+ @result Returns the receiver's SecKeychainItemRef. */
+
- (SecKeychainItemRef)keychainItemRef;
@end
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-09 23:49:46
|
Revision: 443
http://keychain.svn.sourceforge.net/keychain/?rev=443&view=rev
Author: wadetregaskis
Date: 2007-12-09 15:49:52 -0800 (Sun, 09 Dec 2007)
Log Message:
-----------
* Added TODO to -[KeychainItem createDuplicate] noting that it appears to be completely bogus as-is.
* Changed -[KeychainItem certificate] to not try casting the SecKeychainItemRef to a SecCertificateRef unless the receiver is actually a certificate.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/KeychainItem.m
Modified: trunk/Frameworks/Keychain/Keychain/KeychainItem.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/KeychainItem.m 2007-12-09 22:11:06 UTC (rev 442)
+++ trunk/Frameworks/Keychain/Keychain/KeychainItem.m 2007-12-09 23:49:52 UTC (rev 443)
@@ -1092,6 +1092,7 @@
SecKeychainRef keychain = (SecKeychainRef)[[self keychain] keychainRef];
SecAccessRef access = [[self access] accessRef];
+ // TODO: verify this will ever actually work; we surely can't just create a complete duplicate of an item within the same keychain... I'm pretty sure SecKeychainItemCreateCopy is intended for copying items *between* keychains.
_error = SecKeychainItemCreateCopy(_keychainItem, keychain, access, &result);
if (noErr != _error) {
@@ -1108,7 +1109,11 @@
}
- (Certificate*)certificate {
- return [Certificate certificateWithCertificateRef:(SecCertificateRef)_keychainItem];
+ if ([self isCertificate]) {
+ return [Certificate certificateWithCertificateRef:(SecCertificateRef)_keychainItem];
+ } else {
+ return nil;
+ }
}
- (NSString*)description {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-09 22:11:03
|
Revision: 442
http://keychain.svn.sourceforge.net/keychain/?rev=442&view=rev
Author: wadetregaskis
Date: 2007-12-09 14:11:06 -0800 (Sun, 09 Dec 2007)
Log Message:
-----------
* Tweaked invalid password test... decided for the moment not to have -[KeychainItem data] return nil for invalid passwords.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Testers/KeychainTester.m
Modified: trunk/Frameworks/Keychain/Testers/KeychainTester.m
===================================================================
--- trunk/Frameworks/Keychain/Testers/KeychainTester.m 2007-12-09 22:02:58 UTC (rev 441)
+++ trunk/Frameworks/Keychain/Testers/KeychainTester.m 2007-12-09 22:11:06 UTC (rev 442)
@@ -207,7 +207,7 @@
TEST(nil != currentItem, "Can create SSH keychain item without password");
if (nil != currentItem) {
- TEST_ISNIL([currentItem dataAsString], "\tPassword is (correctly) not available");
+ TEST_ISEQUAL([currentItem dataAsString], @"", "\tPassword is correct");
TEST_ISEQUAL([currentItem account], @"root", "\tAccount is correct");
TEST_ISEQUAL([currentItem securityDomain], @"", "\tSecurity domain is correct (none)");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-09 22:02:54
|
Revision: 441
http://keychain.svn.sourceforge.net/keychain/?rev=441&view=rev
Author: wadetregaskis
Date: 2007-12-09 14:02:58 -0800 (Sun, 09 Dec 2007)
Log Message:
-----------
* Added test for adding an invalid (nil == password) SSH KeychainItem.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Testers/KeychainTester.m
Modified: trunk/Frameworks/Keychain/Testers/KeychainTester.m
===================================================================
--- trunk/Frameworks/Keychain/Testers/KeychainTester.m 2007-12-09 22:01:24 UTC (rev 440)
+++ trunk/Frameworks/Keychain/Testers/KeychainTester.m 2007-12-09 22:02:58 UTC (rev 441)
@@ -203,7 +203,53 @@
TEST_ISEQUAL([currentItem dataAsString], @"overwritten", "\tOriginal item's password reflects the change");
}
+ originalItem = currentItem = [testKeychain addInternetPassword:nil onServer:@"www.widget.com" forAccount:@"root" port:22 path:nil inSecurityDomain:nil protocol:kSecProtocolTypeSSH auth:kSecAuthenticationTypeDefault replaceExisting:NO];
+ TEST(nil != currentItem, "Can create SSH keychain item without password");
+ if (nil != currentItem) {
+ TEST_ISNIL([currentItem dataAsString], "\tPassword is (correctly) not available");
+
+ TEST_ISEQUAL([currentItem account], @"root", "\tAccount is correct");
+ TEST_ISEQUAL([currentItem securityDomain], @"", "\tSecurity domain is correct (none)");
+ TEST_ISEQUAL([currentItem server], @"www.widget.com", "\tServer is correct");
+ TEST_INTSEQUAL_F([currentItem authenticationType], kSecAuthenticationTypeDefault, nameOfAuthenticationTypeConstant, "\tAuthentication type is correct");
+ TEST_INTSEQUAL([currentItem port], 22, "\tPort is correct");
+ TEST_ISEQUAL([currentItem path], @"", "\tPath is correct");
+ TEST_INTSEQUAL_F([currentItem protocol], kSecProtocolTypeSSH, nameOfProtocolConstant, "\tProtocol is correct");
+
+ TEST(![currentItem passwordIsValid], "\tPassword is noted as invalid");
+ TEST(![currentItem isVisible], "\tPassword is invisible");
+ TEST(![currentItem hasCustomIcon], "\tDoesn't have custom icon");
+
+ NSDate *creationDate = [currentItem creationDate];
+ TEST_COMPARE_DATES_WITHOUT_SUBSECONDS(creationDate, >=, testStart, "\tCreation date is the same time as or after this test started");
+ TEST_COMPARE_DATES_WITHOUT_SUBSECONDS(creationDate, <=, [NSDate date], "\tCreation date is the same time as or earlier than right now");
+
+ NSDate *modificationDate = [currentItem creationDate];
+ TEST_COMPARE_DATES_WITHOUT_SUBSECONDS(modificationDate, >=, testStart, "\tModification date is the same time as or after this test started");
+ TEST_COMPARE_DATES_WITHOUT_SUBSECONDS(modificationDate, <=, [NSDate date], "\tModification date is the same time as or earlier than right now");
+
+ TEST_ISEQUAL([currentItem typeDescription], @"", "\tHas no type description");
+ TEST_ISEQUAL([currentItem comment], @"", "\tHas no comment");
+ TEST_INTSEQUAL([currentItem creator], 0, "\tHas no creator (FourCharCode version)");
+ TEST_ISEQUAL([currentItem creatorAsString], @"", "\tHas no creator (string version)");
+ TEST_INTSEQUAL([currentItem type], 0, "\tHas no type (FourCharCode version)");
+ TEST_ISEQUAL([currentItem typeAsString], @"", "\tHas no type (string version)");
+ //TEST_ISEQUAL([currentItem label], @"", "\tHas no label"); // A label is set by default ("localhost", in this example, at present), which is valid.. but I don't want to test against it explicitly, because really any default is valid.
+ TEST_ISEQUAL([currentItem alias], @"", "\tHas no alias");
+
+ TEST_ISNIL([currentItem service], "\tDoesn't have a service (not applicable to interest passwords)");
+ TEST_ISNIL([currentItem userDefinedAttribute], "\tDoesn't have user-defined attribute (not applicable to internet passwords)");
+ TEST_ISNIL([currentItem appleShareVolume], "\tDoesn't have AppleShare volume (not applicable to internet passwords)");
+ TEST_ISNIL([currentItem appleShareAddress], "\tDoesn't have AppleShare address (not applicable to internet passwords)");
+ TEST_ISNIL([currentItem appleShareSignatureData], "\tDoesn't have AppleShare signature (not applicable to internet passwords)");
+ TEST_INTSEQUAL_F([currentItem certificateType], CSSM_CERT_UNKNOWN, nameOfCertificateTypeConstant, "\tDoesn't have a certificate type (not applicable to internet passwords)");
+ TEST_INTSEQUAL_F([currentItem certificateEncoding], CSSM_CERT_ENCODING_UNKNOWN, nameOfCertificateEncodingConstant, "\tDoesn't have a certificate encoding (not applicable to internet passwords)");
+ TEST_INTSEQUAL_F([currentItem CRLType], CSSM_CRL_TYPE_UNKNOWN, nameOfCRLTypeConstant, "\tDoesn't have a CRL type (not applicable to internet passwords)");
+ TEST_INTSEQUAL_F([currentItem CRLEncoding], CSSM_CRL_ENCODING_UNKNOWN, nameOfCRLEncodingConstant, "\tDoesn't have a CRL encoding (not applicable to internet passwords)");
+ }
+
+
#pragma mark -- Chinese Internet password
NSString *chinesePassword = [NSString stringWithUTF8String:"我姓王"];
@@ -353,7 +399,7 @@
[currentItem setIsVisible:NO];
TEST(![currentItem isVisible], "\tCan change visibility");
- [currentItem setIsValid:NO];
+ [currentItem setPasswordIsValid:NO];
TEST(![currentItem passwordIsValid], "\tCan change password validity");
[currentItem setHasCustomIcon:YES];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <wad...@us...> - 2007-12-09 22:01:19
|
Revision: 440
http://keychain.svn.sourceforge.net/keychain/?rev=440&view=rev
Author: wadetregaskis
Date: 2007-12-09 14:01:24 -0800 (Sun, 09 Dec 2007)
Log Message:
-----------
* addInternetPassword:onServer:forAccount:port:path:inSecurityDomain:protocol:auth:replaceExisting: now takes a uint32_t for the port parameter.
* addInternetPassword:onServer:forAccount:port:path:inSecurityDomain:protocol:auth:replaceExisting: & addGenericPassword:onService:forAccount:replaceExisting: now mark the resulting KeychainItem as having an invalid password and being invisible, if the 'password' parameter is given as nil.
Modified Paths:
--------------
trunk/Frameworks/Keychain/Keychain/Keychain.h
trunk/Frameworks/Keychain/Keychain/Keychain.m
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.h
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.h 2007-12-09 21:56:48 UTC (rev 439)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.h 2007-12-09 22:01:24 UTC (rev 440)
@@ -347,12 +347,12 @@
/*! @method addGenericPassword:onService:forAccount:replaceExisting:
@abstract Adds a password to the receiver for a generic service with the properties given.
- @discussion This method does not require the user's authentication or permission in order to add the password to the receiver. If an existing item is present with the same parameters, it will be replaced if you pass YES for the replaceExisting parameter, otherwise it will not and the error property set to an appropriate value.
- @param password The password.
+ @discussion This method does not require the user's authentication or permission in order to add the password to the receiver. If an existing item is present with the same parameters, its password will be replaced <i>only if</i> the 'replace' parameter is YES. Otherwise, the operation fails and nil is returned.
+ @param password The password. If this is nil, the resulting KeychainItem will have 'passwordIsValid' set to NO, and will be invisible by default.
@param service A string describing the service name. This is not in any standard format. Examples include a domain name or IP address, a label indicating the password type (e.g. 'AIM' or 'ICQ'), or some other proprietary format. You should try to use any existing 'standard' names where possible, in order to make the keychain useful.
@param account The account for the service specified. This may be nil.
@param replace If YES, the password for an existing item will be replaced, if such an item already exists. If NO, any existing item will not be changed.
- @result Returns the resulting new KeychainItem, or nil if an error occurs. You can retrieve a corresponding error code using the lastError method. */
+ @result Returns the new KeychainItem (if one was created), or the existing item (if 'replace' was YES), or otherwise nil. You can retrieve a corresponding error code using the lastError method. */
- (KeychainItem*)addGenericPassword:(NSString*)password onService:(NSString*)service forAccount:(NSString*)account replaceExisting:(BOOL)replace;
@@ -360,19 +360,19 @@
@abstract Adds a password to the receiver for an internet service with the properties given.
@discussion Most of the parameters are optional, or context-sensitive. For instance, you needn't specify a security domain or protocol if they don't apply to your use.
- This method does not require the user's authentication or permission in order to add the password to the receiver. If an existing item is present with the same parameters, then it will be replaced if the replaceExisting parameter is YES. Otherwise, it will not, and an error will occur.
- @param password The password.
+ This method does not require the user's authentication or permission in order to add the password to the receiver. If an existing item is present with the same parameters, its password will be replaced <i>only if</i> the 'replace' parameter is YES. Otherwise, the operation fails and nil is returned.
+ @param password The password. If this is nil, the resulting KeychainItem will have 'passwordIsValid' set to NO, and will be invisible by default.
@param server The domain name or IP address of the server for which this password applies. This parameter may be nil.
@param account The login, username or account name on the server. This parameter may be nil.
@param port The port number, which may implicitly define a service type, for the server. This may be 0, indicating no port specified.
@param path The path of a resource on the server, to which this password applies. This may be nil.
- @param securityDomain The security domain to add this entry in. This may (and most often will be) nil.
+ @param securityDomain The security domain to add this entry in. This may be nil.
@param protocol The protocol you are using. See <a href="file:///System/Library/Frameworks/Security.framework/Headers/SecKeychain.h>SecKeychain.h</a> for predefined types. This parameter is essentially just a Mac type (i.e. 4 bytes), and can be user-defined. This parameter is required.
@param authType The authentication type to be used. See <a href="file:///System/Library/Frameworks/Security.framework/Headers/SecKeychain.h>SecKeychain.h</a> for predefined types. You should use kSecAuthenticationTypeDefault if you have no preference or knowledge of the type to be used. Like the protocol parameter, this a 4-byte code, which may be user defined.
@param replace If YES then any existing item will have it's password changed, otherwise this method will fail if an item already exists.
- @result Returns the resulting new KeychainItem, or nil if an error occurs. You can retrieve a corresponding error code using the lastError method. */
+ @result Returns the new KeychainItem (if one was created), or the existing item (if 'replace' was YES), or otherwise nil. You can retrieve a corresponding error code using the lastError method. */
-- (KeychainItem*)addInternetPassword:(NSString*)password onServer:(NSString*)server forAccount:(NSString*)account port:(UInt16)port path:(NSString*)path inSecurityDomain:(NSString*)securityDomain protocol:(SecProtocolType)protocol auth:(SecAuthenticationType)authType replaceExisting:(BOOL)replace;
+- (KeychainItem*)addInternetPassword:(NSString*)password onServer:(NSString*)server forAccount:(NSString*)account port:(uint32_t)port path:(NSString*)path inSecurityDomain:(NSString*)securityDomain protocol:(SecProtocolType)protocol auth:(SecAuthenticationType)authType replaceExisting:(BOOL)replace;
/*! @method items
@abstract Returns every single item in the keychain, even invisible ones (e.g. keys).
Modified: trunk/Frameworks/Keychain/Keychain/Keychain.m
===================================================================
--- trunk/Frameworks/Keychain/Keychain/Keychain.m 2007-12-09 21:56:48 UTC (rev 439)
+++ trunk/Frameworks/Keychain/Keychain/Keychain.m 2007-12-09 22:01:24 UTC (rev 440)
@@ -1233,6 +1233,8 @@
}
if (nil != result) {
+ // 1) Set the creator code, if possible.
+
CFBundleRef mainBundle = CFBundleGetMainBundle();
FourCharCode creatorCode = 0;
@@ -1245,12 +1247,20 @@
}
[result setCreator:creatorCode];
+
+
+ // 2) Mark the password as invalid (and invisible) if it was given as nil.
+
+ if (nil == password) {
+ [result setPasswordIsValid:NO];
+ [result setIsVisible:NO];
+ }
}
return result;
}
-- (KeychainItem*)addInternetPassword:(NSString*)password onServer:(NSString*)server forAccount:(NSString*)account port:(UInt16)port path:(NSString*)path inSecurityDomain:(NSString*)securityDomain protocol:(SecProtocolType)protocol auth:(SecAuthenticationType)authType replaceExisting:(BOOL)replace {
+- (KeychainItem*)addInternetPassword:(NSString*)password onServer:(NSString*)server forAccount:(NSString*)account port:(uint32_t)port path:(NSString*)path inSecurityDomain:(NSString*)securityDomain protocol:(SecProtocolType)protocol auth:(SecAuthenticationType)authType replaceExisting:(BOOL)replace {
const char *serverString, *accountString, *passwordString, *pathString, *securityDomainString;
uint32_t serverStringLength, accountStringLength, passwordStringLength, pathStringLength, securityDomainStringLength;
SecKeychainItemRef newItem;
@@ -1333,6 +1343,8 @@
}
if (nil != result) {
+ // 1) Set the creator code, if possible.
+
CFBundleRef mainBundle = CFBundleGetMainBundle();
FourCharCode creatorCode = 0;
@@ -1345,6 +1357,21 @@
}
[result setCreator:creatorCode];
+
+
+ // 2) Fix up the port, if it's too large to fit in the 16-bit version that SecKeychainAddInternetPassword accepts.
+
+ if (port > 0xffff) {
+ [result setPort:port];
+ }
+
+
+ // 3) Mark the password as invalid (and invisible) if it was given as nil.
+
+ if (nil == password) {
+ [result setPasswordIsValid:NO];
+ [result setIsVisible:NO];
+ }
}
return result;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|