Skip to content

Commit c7b8a4b

Browse files
tcooper-ukvcsjones
authored andcommitted
Replace deprecated SecTrustEvaluate and SecTrustGetCertificateAtIndex usages
1 parent 1010540 commit c7b8a4b

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

certstore/certstore_darwin.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,9 @@ func (i *macIdentity) CertificateChain() ([]*x509.Certificate, error) {
160160
}
161161
defer C.CFRelease(C.CFTypeRef(trustRef))
162162

163-
var status C.SecTrustResultType
164-
if err := osStatusError(C.SecTrustEvaluate(trustRef, &status)); err != nil {
163+
var cfError C.CFErrorRef
164+
if C.SecTrustEvaluateWithError(trustRef, &cfError) {
165+
err := cfErrorError(cfError)
165166
return nil, err
166167
}
167168

@@ -171,18 +172,22 @@ func (i *macIdentity) CertificateChain() ([]*x509.Certificate, error) {
171172
)
172173

173174
for i := C.CFIndex(0); i < nchain; i++ {
174-
// TODO: do we need to release these?
175-
chainCertref := C.SecTrustGetCertificateAtIndex(trustRef, i)
176-
if chainCertref == nilSecCertificateRef {
177-
return nil, errors.New("nil certificate in chain")
175+
chainCertCpy := C.SecTrustCopyCertificateChain(trustRef)
176+
177+
if C.CFArrayRef(chainCertCpy) == nilCFArrayRef {
178+
return nil, errors.New("nil certificate in the chain")
178179
}
179180

180-
chainCert, err := exportCertRef(chainCertref)
181+
chainCertRef := C.SecCertificateRef(C.CFArrayGetValueAtIndex(chainCertCpy, i))
182+
183+
chainCert, err := exportCertRef(chainCertRef)
181184
if err != nil {
182185
return nil, err
183186
}
184187

185188
chain = append(chain, chainCert)
189+
190+
C.CFRelease(C.CFTypeRef(chainCertCpy))
186191
}
187192

188193
i.chain = chain

0 commit comments

Comments
 (0)