Clear[GenerateSymmetries]
GenerateSymmetries[mat_?SquareMatrixQ] :=
Module[{symmat, vars, s, p, l = Length@mat, res},
symmat =
Table[If[i <= j, Identity, Reverse[#] &] @ s[i, j] +
I Which[i < j, Identity, i > j, -Reverse[#] &, True, 0 &] @
p[i, j], {i, l}, {j, l}];
vars = Union@Cases[Flatten@#, (s | p)[_, _], Infinity] &;
res = ReplaceAll[symmat, #] & @
Quiet@Solve[ Commutator[ mat, symmat] == 0, vars@symmat ][[1]];
ReplaceAll[res, Thread[vars[res] -> #]] & /@
Permutations[{1}~Join~ConstantArray[0, Length@vars@res - 1]]