@@ -22,11 +22,13 @@ package certificates
22
22
#cgo LDFLAGS: -framework Cocoa
23
23
#import <Cocoa/Cocoa.h>
24
24
25
- void installCert(const char *path) {
25
+ char * installCert(const char *path) {
26
26
NSURL *url = [NSURL fileURLWithPath:@(path) isDirectory:NO];
27
27
NSData *rootCertData = [NSData dataWithContentsOfURL:url];
28
28
29
29
OSStatus err = noErr;
30
+ NSMutableString *errString = [NSMutableString new];
31
+ char *errReturnString = "\0";
30
32
SecCertificateRef rootCert = SecCertificateCreateWithData(kCFAllocatorDefault, (CFDataRef) rootCertData);
31
33
32
34
CFTypeRef result;
@@ -41,22 +43,32 @@ void installCert(const char *path) {
41
43
if( err == noErr) {
42
44
NSLog(@"Install root certificate success");
43
45
} else if( err == errSecDuplicateItem ) {
44
- NSLog(@"duplicate root certificate entry");
46
+ errString = [@"duplicate root certificate entry. Error: " stringByAppendingFormat:@"%d ",err];
47
+ NSLog(errString);
48
+ errReturnString = [errString cStringUsingEncoding:[NSString defaultCStringEncoding]];
49
+ return errReturnString;
45
50
} else {
46
- NSLog(@"install root certificate failure");
51
+ errString = [@"install root certificate failure. Error: " stringByAppendingFormat:@"%d ",err];
52
+ NSLog(errString);
53
+ errReturnString = [errString cStringUsingEncoding:[NSString defaultCStringEncoding]];
54
+ return errReturnString;
47
55
}
48
56
49
57
NSDictionary *newTrustSettings = @{(id)kSecTrustSettingsResult: [NSNumber numberWithInt:kSecTrustSettingsResultTrustRoot]};
50
58
err = SecTrustSettingsSetTrustSettings(rootCert, kSecTrustSettingsDomainUser, (__bridge CFTypeRef)(newTrustSettings));
51
59
if (err != errSecSuccess) {
52
- NSLog(@"Could not change the trust setting for a certificate. Error: %d", err);
53
- exit(0);
60
+ errString = [@"Could not change the trust setting for a certificate. Error: " stringByAppendingFormat:@"%d ",err];
61
+ NSLog(errString);
62
+ errReturnString = [errString cStringUsingEncoding:[NSString defaultCStringEncoding]];
54
63
}
64
+ return errReturnString;
55
65
}
56
66
57
67
*/
58
68
import "C"
59
69
import (
70
+ "os/exec"
71
+
60
72
log "github.com/sirupsen/logrus"
61
73
62
74
"github.com/arduino/go-paths-helper"
@@ -65,5 +77,11 @@ import (
65
77
// InstallCertificate will install the certificates in the system keychain on macos
66
78
func InstallCertificate (cert * paths.Path ) {
67
79
log .Infof ("Installing certificate: %s" , cert )
68
- C .installCert (C .CString (cert .String ()))
80
+ p := C .installCert (C .CString (cert .String ()))
81
+ s := C .GoString (p )
82
+ if len (s ) != 0 {
83
+ oscmd := exec .Command ("osascript" , "-e" , "display dialog \" " + s + "\" buttons \" OK\" with title \" Error installing certificates\" " )
84
+ _ = oscmd .Run ()
85
+ log .Info (oscmd .String ())
86
+ }
69
87
}
0 commit comments