MCPcopy
hub / github.com/containers/toolbox / startP11KitServer

Function startP11KitServer

src/cmd/run.go:1046–1106  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1044}
1045
1046func 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 }

Callers 1

runCommandFunction · 0.85

Calls 1

IsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…