Skip to content

Commit f65a47c

Browse files
authored
Merge pull request #60 from gabriel/master
Remove deprecated TrustedApplicationAccess
2 parents ccd6794 + 378d9d7 commit f65a47c

File tree

2 files changed

+0
-140
lines changed

2 files changed

+0
-140
lines changed

macos.go

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -28,93 +28,6 @@ var accessibleTypeRef = map[Accessible]C.CFTypeRef{
2828
//AccessibleWhenPasscodeSetThisDeviceOnly: C.CFTypeRef(C.kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly),
2929
}
3030

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-
11831
// DeleteItemRef deletes a keychain item reference.
11932
func DeleteItemRef(ref C.CFTypeRef) error {
12033
errCode := C.SecKeychainItemDelete(C.SecKeychainItemRef(ref))

macos_test.go

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -10,59 +10,6 @@ import (
1010
"time"
1111
)
1212

13-
func TestAccess(t *testing.T) {
14-
var err error
15-
16-
service, account, label, accessGroup, password := "TestAccess", "test2", "A label", "", "toomanysecrets2"
17-
item := NewGenericPassword(service, account, label, []byte(password), accessGroup)
18-
defer func() { _ = DeleteItem(item) }()
19-
20-
trustedApplications := []string{"/Applications/Mail.app"}
21-
item.SetAccess(&Access{Label: "Mail", TrustedApplications: trustedApplications})
22-
err = AddItem(item)
23-
if err != nil {
24-
t.Fatal(err)
25-
}
26-
27-
_, err = GetGenericPassword(service, account, label, accessGroup)
28-
if err != nil {
29-
t.Fatal(err)
30-
}
31-
}
32-
33-
func TestAccessWithImpliedSelf(t *testing.T) {
34-
var err error
35-
36-
service, account, label, accessGroup, password := "TestAccess", "test2", "A label", "", "toomanysecrets2"
37-
item := NewGenericPassword(service, account, label, []byte(password), accessGroup)
38-
defer func() { _ = DeleteItem(item) }()
39-
40-
item.SetAccess(&Access{Label: "Self", TrustedApplications: nil})
41-
err = AddItem(item)
42-
if err != nil {
43-
t.Fatal(err)
44-
}
45-
46-
_, err = GetGenericPassword(service, account, label, accessGroup)
47-
if err != nil {
48-
t.Fatal(err)
49-
}
50-
}
51-
52-
func TestAccessWithoutTrust(t *testing.T) {
53-
var err error
54-
55-
item := NewGenericPassword("TestAccess", "test2", "A label", []byte("toomanysecrets2"), "")
56-
defer func() { _ = DeleteItem(item) }()
57-
58-
trustedApplications := []string{}
59-
item.SetAccess(&Access{Label: "No Trust", TrustedApplications: trustedApplications})
60-
err = AddItem(item)
61-
if err != nil {
62-
t.Fatal(err)
63-
}
64-
}
65-
6613
func TestUpdateItem(t *testing.T) {
6714
var err error
6815

0 commit comments

Comments
 (0)