-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSTNKeychainAccess.h
114 lines (102 loc) · 4.26 KB
/
STNKeychainAccess.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
// STNKeychainAccess.h
// STNKeychainAccess
//
// Created by Simon Stiefel on 01.08.06.
// Copyright 2006 Simon Stiefel. All rights reserved.
//
// $Id: STNKeychainAccess.h 5 2006-11-30 20:11:41Z sst $
//
// Redistribution and use in source and binary forms, with or
// without modification, are permitted provided that the
// following conditions are met:
//
// 1. Redistributions of source code must retain the above
// copyright notice, this list of conditions and the following
// disclaimer.
//
// 2. Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#import <Cocoa/Cocoa.h>
/*!
@class STNKeychainAccess
@superclass NSObject
@abstract Handles keychain access
@discussion currently only generic passwords can be handled
*/
@interface STNKeychainAccess : NSObject {
NSString *_serviceName;
NSString *_accountName;
}
/*!
@method initWithServiceName:accountName:
@abstract initializes object with service name and account name
@discussion initializes instance of class with service name and account name. Both can be changed later.
@param serviceName service name
@param accountName account name
@result STNKeychainAccess object
*/
- (id)initWithServiceName:(NSString *)serviceName
accountName:(NSString *)accountName;
/*!
@method setServiceName:
@abstract sets service name
@discussion sets or overwrites service name
@param serviceName name of service
*/
- (void)setServiceName:(NSString *)serviceName;
/*!
@method serviceName
@abstract returns current service name
@result service name
*/
- (NSString *)serviceName;
/*!
@method setAccountName:
@abstract sets account name
@discussion sets or overwrites account name
@param accountName name of account
*/
- (void)setAccountName:(NSString *)accountName;
/*!
@method accountName
@abstract returns current account name
@result account name
*/
- (NSString *)accountName;
/*!
@method savePassword:
@abstract saves or updates password in keychain
@discussion saves or updates password in keychain to parameter password. Password is automatically updated if password entry already exists
@param password new password
@result error code, noErr on success (see http://developer.apple.com/documentation/Security/Reference/keychainservices/Reference/reference.html#//apple_ref/doc/uid/TP30000898-CH5g-95690)
*/
- (OSStatus)savePassword:(NSString *)password;
/*!
@method getPassword:itemReference:
@abstract fetches current password from keychain and stores it in parameter password
@discussion fetches password from keychain database and writes it in the password parameter
@param password pointer to NSString pointer
@param itemRef On return, a pointer to the item of the generic password. Pass nil if you don't want to obtain this object.
@result error code, noErr on success (see http://developer.apple.com/documentation/Security/Reference/keychainservices/Reference/reference.html#//apple_ref/doc/uid/TP30000898-CH5g-95690)
*/
- (OSStatus)getPassword:(NSString **)password
itemReference:(SecKeychainItemRef *)itemRef;
- (NSString *)getPassword;
+ (BOOL)checkForExistanceOfKeychainItem:(NSString *)keychainItemName withItemKind:(NSString *)keychainItemKind forUsername:(NSString *)username;
@end