github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/crypto/x509/internal/macos/security.go (about)

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build darwin
     6  
     7  package macOS
     8  
     9  import (
    10  	"github.com/shogo82148/std/errors"
    11  )
    12  
    13  type SecTrustSettingsResult int32
    14  
    15  const (
    16  	SecTrustSettingsResultInvalid SecTrustSettingsResult = iota
    17  	SecTrustSettingsResultTrustRoot
    18  	SecTrustSettingsResultTrustAsRoot
    19  	SecTrustSettingsResultDeny
    20  	SecTrustSettingsResultUnspecified
    21  )
    22  
    23  type SecTrustResultType int32
    24  
    25  const (
    26  	SecTrustResultInvalid SecTrustResultType = iota
    27  	SecTrustResultProceed
    28  	SecTrustResultConfirm
    29  	SecTrustResultDeny
    30  	SecTrustResultUnspecified
    31  	SecTrustResultRecoverableTrustFailure
    32  	SecTrustResultFatalTrustFailure
    33  	SecTrustResultOtherError
    34  )
    35  
    36  type SecTrustSettingsDomain int32
    37  
    38  const (
    39  	SecTrustSettingsDomainUser SecTrustSettingsDomain = iota
    40  	SecTrustSettingsDomainAdmin
    41  	SecTrustSettingsDomainSystem
    42  )
    43  
    44  const (
    45  	// various macOS error codes that can be returned from
    46  	// SecTrustEvaluateWithError that we can map to Go cert
    47  	// verification error types.
    48  	ErrSecCertificateExpired = -67818
    49  	ErrSecHostNameMismatch   = -67602
    50  	ErrSecNotTrusted         = -67843
    51  )
    52  
    53  type OSStatus struct {
    54  	call   string
    55  	status int32
    56  }
    57  
    58  func (s OSStatus) Error() string
    59  
    60  var SecTrustSettingsResultKey = StringToCFString("kSecTrustSettingsResult")
    61  var SecTrustSettingsPolicy = StringToCFString("kSecTrustSettingsPolicy")
    62  var SecTrustSettingsPolicyString = StringToCFString("kSecTrustSettingsPolicyString")
    63  var SecPolicyOid = StringToCFString("SecPolicyOid")
    64  var SecPolicyAppleSSL = StringToCFString("1.2.840.113635.100.1.3")
    65  
    66  var ErrNoTrustSettings = errors.New("no trust settings found")
    67  
    68  func SecTrustSettingsCopyCertificates(domain SecTrustSettingsDomain) (certArray CFRef, err error)
    69  
    70  func SecTrustSettingsCopyTrustSettings(cert CFRef, domain SecTrustSettingsDomain) (trustSettings CFRef, err error)
    71  
    72  func SecTrustCreateWithCertificates(certs CFRef, policies CFRef) (CFRef, error)
    73  
    74  func SecCertificateCreateWithData(b []byte) (CFRef, error)
    75  
    76  func SecPolicyCreateSSL(name string) (CFRef, error)
    77  
    78  func SecTrustSetVerifyDate(trustObj CFRef, dateRef CFRef) error
    79  
    80  func SecTrustEvaluate(trustObj CFRef) (CFRef, error)
    81  
    82  func SecTrustGetResult(trustObj CFRef, result CFRef) (CFRef, CFRef, error)
    83  
    84  func SecTrustEvaluateWithError(trustObj CFRef) (int, error)
    85  
    86  func SecTrustGetCertificateCount(trustObj CFRef) int
    87  
    88  func SecTrustGetCertificateAtIndex(trustObj CFRef, i int) (CFRef, error)
    89  
    90  func SecCertificateCopyData(cert CFRef) ([]byte, error)