macos.mx raw

   1  package macos
   2  
   3  import (
   4  	"errors"
   5  	"time"
   6  )
   7  
   8  // Exported symbols copied from Big Go, but stripped of functionality.
   9  // Allows building of crypto/x509 on macOS.
  10  
  11  const (
  12  	ErrSecCertificateExpired = -67818
  13  	ErrSecHostNameMismatch   = -67602
  14  	ErrSecNotTrusted         = -67843
  15  )
  16  
  17  var ErrNoTrustSettings = errors.New("no trust settings found")
  18  var SecPolicyAppleSSL = StringToCFString("1.2.840.113635.100.1.3") // defined by POLICYMACRO
  19  var SecPolicyOid = StringToCFString("SecPolicyOid")
  20  var SecTrustSettingsPolicy = StringToCFString("kSecTrustSettingsPolicy")
  21  var SecTrustSettingsPolicyString = StringToCFString("kSecTrustSettingsPolicyString")
  22  var SecTrustSettingsResultKey = StringToCFString("kSecTrustSettingsResult")
  23  
  24  func CFArrayAppendValue(array CFRef, val CFRef) {}
  25  
  26  func CFArrayGetCount(array CFRef) int {
  27  	return 0
  28  }
  29  
  30  func CFDataGetBytePtr(data CFRef) uintptr {
  31  	return 0
  32  }
  33  
  34  func CFDataGetLength(data CFRef) int {
  35  	return 0
  36  }
  37  
  38  func CFDataToSlice(data CFRef) []byte {
  39  	return nil
  40  }
  41  
  42  func CFEqual(a, b CFRef) bool {
  43  	return false
  44  }
  45  
  46  func CFErrorGetCode(errRef CFRef) int {
  47  	return 0
  48  }
  49  
  50  func CFNumberGetValue(num CFRef) (int32, error) {
  51  	return 0, errors.New("not implemented")
  52  }
  53  
  54  func CFRelease(ref CFRef) {}
  55  
  56  func CFStringToString(ref CFRef) []byte {
  57  	return ""
  58  }
  59  
  60  func ReleaseCFArray(array CFRef) {}
  61  
  62  func SecCertificateCopyData(cert CFRef) ([]byte, error) {
  63  	return nil, errors.New("not implemented")
  64  }
  65  
  66  func SecTrustCopyCertificateChain(trustObj CFRef) (CFRef, error) {
  67  	return 0, errors.New("not implemented")
  68  }
  69  
  70  func SecTrustEvaluateWithError(trustObj CFRef) (int, error) {
  71  	return 0, errors.New("not implemented")
  72  }
  73  
  74  func SecTrustGetCertificateCount(trustObj CFRef) int {
  75  	return 0
  76  }
  77  
  78  func SecTrustGetResult(trustObj CFRef, result CFRef) (CFRef, CFRef, error) {
  79  	return 0, 0, errors.New("not implemented")
  80  }
  81  
  82  func SecTrustSetVerifyDate(trustObj CFRef, dateRef CFRef) error {
  83  	return errors.New("not implemented")
  84  }
  85  
  86  type CFRef uintptr
  87  
  88  func BytesToCFData(b []byte) CFRef {
  89  	return 0
  90  }
  91  
  92  func CFArrayCreateMutable() CFRef {
  93  	return 0
  94  }
  95  
  96  func CFArrayGetValueAtIndex(array CFRef, index int) CFRef {
  97  	return 0
  98  }
  99  
 100  func CFDateCreate(seconds float64) CFRef {
 101  	return 0
 102  }
 103  
 104  func CFDictionaryGetValueIfPresent(dict CFRef, key CFString) (value CFRef, ok bool) {
 105  	return 0, false
 106  }
 107  
 108  func CFErrorCopyDescription(errRef CFRef) CFRef {
 109  	return 0
 110  }
 111  
 112  func CFStringCreateExternalRepresentation(strRef CFRef) (CFRef, error) {
 113  	return 0, errors.New("not implemented")
 114  }
 115  
 116  func SecCertificateCreateWithData(b []byte) (CFRef, error) {
 117  	return 0, errors.New("not implemented")
 118  }
 119  
 120  func SecPolicyCreateSSL(name []byte) (CFRef, error) {
 121  	return 0, errors.New("not implemented")
 122  }
 123  
 124  func SecTrustCreateWithCertificates(certs CFRef, policies CFRef) (CFRef, error) {
 125  	return 0, errors.New("not implemented")
 126  }
 127  
 128  func SecTrustEvaluate(trustObj CFRef) (CFRef, error) {
 129  	return 0, errors.New("not implemented")
 130  }
 131  
 132  func SecTrustGetCertificateAtIndex(trustObj CFRef, i int) (CFRef, error) {
 133  	return 0, errors.New("not implemented")
 134  }
 135  
 136  func SecTrustSettingsCopyCertificates(domain SecTrustSettingsDomain) (certArray CFRef, err error) {
 137  	return 0, errors.New("not implemented")
 138  }
 139  
 140  func SecTrustSettingsCopyTrustSettings(cert CFRef, domain SecTrustSettingsDomain) (trustSettings CFRef, err error) {
 141  	return 0, errors.New("not implemented")
 142  }
 143  
 144  func TimeToCFDateRef(t time.Time) CFRef {
 145  	return 0
 146  }
 147  
 148  type CFString CFRef
 149  
 150  func StringToCFString(s []byte) CFString {
 151  	return 0
 152  }
 153  
 154  type OSStatus struct {
 155  	// Has unexported fields.
 156  }
 157  
 158  func (s OSStatus) Error() string
 159  
 160  type SecTrustResultType int32
 161  
 162  const (
 163  	SecTrustResultInvalid SecTrustResultType = iota
 164  	SecTrustResultProceed
 165  	SecTrustResultConfirm // deprecated
 166  	SecTrustResultDeny
 167  	SecTrustResultUnspecified
 168  	SecTrustResultRecoverableTrustFailure
 169  	SecTrustResultFatalTrustFailure
 170  	SecTrustResultOtherError
 171  )
 172  
 173  type SecTrustSettingsDomain int32
 174  
 175  const (
 176  	SecTrustSettingsDomainUser SecTrustSettingsDomain = iota
 177  	SecTrustSettingsDomainAdmin
 178  	SecTrustSettingsDomainSystem
 179  )
 180  
 181  type SecTrustSettingsResult int32
 182  
 183  const (
 184  	SecTrustSettingsResultInvalid SecTrustSettingsResult = iota
 185  	SecTrustSettingsResultTrustRoot
 186  	SecTrustSettingsResultTrustAsRoot
 187  	SecTrustSettingsResultDeny
 188  	SecTrustSettingsResultUnspecified
 189  )
 190