()
| 1044 | } |
| 1045 | |
| 1046 | func startP11KitServer() ([]string, error) { |
| 1047 | serverSocket, err := utils.GetP11KitServerSocket(currentUser) |
| 1048 | if err != nil { |
| 1049 | return nil, err |
| 1050 | } |
| 1051 | |
| 1052 | const logPrefix = "Starting 'p11-kit server'" |
| 1053 | logrus.Debugf("%s with socket %s", logPrefix, serverSocket) |
| 1054 | |
| 1055 | serverSocketLock, err := utils.GetP11KitServerSocketLock(currentUser) |
| 1056 | if err != nil { |
| 1057 | return nil, err |
| 1058 | } |
| 1059 | |
| 1060 | serverSocketLockFile, err := utils.Flock(serverSocketLock, syscall.LOCK_EX) |
| 1061 | if err != nil { |
| 1062 | logrus.Debugf("%s: %s", logPrefix, err) |
| 1063 | |
| 1064 | var errFlock *utils.FlockError |
| 1065 | |
| 1066 | if errors.As(err, &errFlock) { |
| 1067 | if errors.Is(err, utils.ErrFlockAcquire) { |
| 1068 | err = utils.ErrFlockAcquire |
| 1069 | } else if errors.Is(err, utils.ErrFlockCreate) { |
| 1070 | err = utils.ErrFlockCreate |
| 1071 | } else { |
| 1072 | panicMsg := fmt.Sprintf("unexpected %T: %s", err, err) |
| 1073 | panic(panicMsg) |
| 1074 | } |
| 1075 | } |
| 1076 | |
| 1077 | return nil, err |
| 1078 | } |
| 1079 | |
| 1080 | defer serverSocketLockFile.Close() |
| 1081 | |
| 1082 | serverSocketAddress := fmt.Sprintf("P11_KIT_SERVER_ADDRESS=unix:path=%s", serverSocket) |
| 1083 | serverEnviron := []string{ |
| 1084 | serverSocketAddress, |
| 1085 | } |
| 1086 | |
| 1087 | if utils.PathExists(serverSocket) { |
| 1088 | logrus.Debugf("%s: socket %s already exists", logPrefix, serverSocket) |
| 1089 | logrus.Debugf("%s: skipping", logPrefix) |
| 1090 | return serverEnviron, nil |
| 1091 | } |
| 1092 | |
| 1093 | serverArgs := []string{ |
| 1094 | "server", |
| 1095 | "--name", serverSocket, |
| 1096 | "--provider", "p11-kit-trust.so", |
| 1097 | "pkcs11:model=p11-kit-trust?write-protected=yes", |
| 1098 | } |
| 1099 | |
| 1100 | if err := shell.Run("p11-kit", nil, nil, nil, serverArgs...); err != nil { |
| 1101 | logrus.Debugf("%s failed: %s", logPrefix, err) |
| 1102 | return nil, nil |
| 1103 | } |
no test coverage detected
searching dependent graphs…