@@ -28,93 +28,6 @@ var accessibleTypeRef = map[Accessible]C.CFTypeRef{
28
28
//AccessibleWhenPasscodeSetThisDeviceOnly: C.CFTypeRef(C.kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly),
29
29
}
30
30
31
- var (
32
- // AccessKey is key for kSecAttrAccess
33
- AccessKey = attrKey (C .CFTypeRef (C .kSecAttrAccess ))
34
- )
35
-
36
- // createAccess creates a SecAccessRef as CFTypeRef.
37
- // The returned SecAccessRef, if non-nil, must be released via CFRelease.
38
- func createAccess (label string , trustedApplications []string ) (C.CFTypeRef , error ) {
39
- var err error
40
- var labelRef C.CFStringRef
41
- if labelRef , err = StringToCFString (label ); err != nil {
42
- return 0 , err
43
- }
44
- defer C .CFRelease (C .CFTypeRef (labelRef ))
45
-
46
- var trustedApplicationsArray C.CFArrayRef
47
- if trustedApplications != nil {
48
- if len (trustedApplications ) > 0 {
49
- // Always prepend with empty string which signifies that we
50
- // include a NULL application, which means ourselves.
51
- trustedApplications = append ([]string {"" }, trustedApplications ... )
52
- }
53
-
54
- var trustedApplicationsRefs []C.CFTypeRef
55
- for _ , trustedApplication := range trustedApplications {
56
- trustedApplicationRef , createErr := createTrustedApplication (trustedApplication )
57
- if createErr != nil {
58
- return 0 , createErr
59
- }
60
- defer C .CFRelease (trustedApplicationRef )
61
- trustedApplicationsRefs = append (trustedApplicationsRefs , trustedApplicationRef )
62
- }
63
-
64
- trustedApplicationsArray = ArrayToCFArray (trustedApplicationsRefs )
65
- defer C .CFRelease (C .CFTypeRef (trustedApplicationsArray ))
66
- }
67
-
68
- var access C.SecAccessRef
69
- errCode := C .SecAccessCreate (labelRef , trustedApplicationsArray , & access ) //nolint
70
- err = checkError (errCode )
71
- if err != nil {
72
- return 0 , err
73
- }
74
-
75
- return C .CFTypeRef (access ), nil
76
- }
77
-
78
- // createTrustedApplication creates a SecTrustedApplicationRef as a CFTypeRef.
79
- // The returned SecTrustedApplicationRef, if non-nil, must be released via CFRelease.
80
- func createTrustedApplication (trustedApplication string ) (C.CFTypeRef , error ) {
81
- var trustedApplicationCStr * C.char
82
- if trustedApplication != "" {
83
- trustedApplicationCStr = C .CString (trustedApplication )
84
- defer C .free (unsafe .Pointer (trustedApplicationCStr ))
85
- }
86
-
87
- var trustedApplicationRef C.SecTrustedApplicationRef
88
- errCode := C .SecTrustedApplicationCreateFromPath (trustedApplicationCStr , & trustedApplicationRef ) //nolint
89
- err := checkError (errCode )
90
- if err != nil {
91
- return 0 , err
92
- }
93
-
94
- return C .CFTypeRef (trustedApplicationRef ), nil
95
- }
96
-
97
- // Access defines whats applications can use the keychain item
98
- type Access struct {
99
- Label string
100
- TrustedApplications []string
101
- }
102
-
103
- // Convert converts Access to CFTypeRef.
104
- // The returned CFTypeRef, if non-nil, must be released via CFRelease.
105
- func (a Access ) Convert () (C.CFTypeRef , error ) {
106
- return createAccess (a .Label , a .TrustedApplications )
107
- }
108
-
109
- // SetAccess sets Access on Item
110
- func (k * Item ) SetAccess (a * Access ) {
111
- if a != nil {
112
- k .attr [AccessKey ] = a
113
- } else {
114
- delete (k .attr , AccessKey )
115
- }
116
- }
117
-
118
31
// DeleteItemRef deletes a keychain item reference.
119
32
func DeleteItemRef (ref C.CFTypeRef ) error {
120
33
errCode := C .SecKeychainItemDelete (C .SecKeychainItemRef (ref ))
0 commit comments