static void EnsureFilePermissionsOnUnixLikeOS(NPath packageRoot) { // only necessary on unixes if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } var executablePath = packageRoot.Combine(UncrustifyRelativePathForCurrentPlatform()); if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { var ret = NativeUnix.GetFileMode(executablePath, out var originalPermission); if (ret != 0) { throw new Exception($"Unable to get execution permission for `{executablePath}`. Error code: {ret}.\nFormatting with this formatter will not work.\nYou may need to set the permission manually by running `chmod u+x {executablePath}` in a console."); } // set permission for owner to run ret = NativeUnix.SetFileMode(executablePath, originalPermission | NativeUnix.UnixFilePermissions.S_IXUSR); if (ret != 0) { throw new Exception($"Unable to set execution permission on `{executablePath}`. Error code: {ret}.\nFormatting with this formatter will not work.\nYou may set the permission manually by running `chmod u+x {executablePath}` in a console."); } } }
internal CK_SESSION_INFO(NativeUnix native) { slotID = (uint)native.slotID; state = (uint)native.state; flags = (uint)native.flags; ulDeviceError = (uint)native.ulDeviceError; }
internal CK_SLOT_INFO(NativeUnix native) { flags = (uint)native.flags; hardwareVersion = new CK_VERSION(native.hardwareVersion); firmwareVersion = new CK_VERSION(native.firmwareVersion); slotDescription = Library.Utf8ToString(native.slotDescription); manufacturerID = Library.Utf8ToString(native.manufacturerID); }
internal CK_INFO(NativeUnix native) { cryptokiVersion = new CK_VERSION(native.cryptokiVersion); flags = (uint)native.flags; libraryVersion = native.libraryVersion; libraryDescription = Library.Utf8ToString(native.libraryDescription); manufacturerID = Library.Utf8ToString(native.manufacturerID); }
internal Native(CK_MECHANISM mech) { if (isWindows) { windows = new NativeWindows(mech); } else { unix = new NativeUnix(mech); } }
public void Set_Permission_Works([ValueSource(nameof(PermissionScenarios))] NativeUnix.UnixFilePermissions permission) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } var path = BaseDir.CreateFile("normal.txt"); Assert.That(NativeUnix.SetFileMode(path, NativeUnix.UnixFilePermissions.None), Is.EqualTo(0)); NativeUnix.UnixFilePermissions actual; Assert.That(NativeUnix.GetFileMode(path, out actual), Is.EqualTo(0)); Assert.That(actual, Is.EqualTo(NativeUnix.UnixFilePermissions.None)); Assert.That(NativeUnix.SetFileMode(path, permission), Is.EqualTo(0)); Assert.That(NativeUnix.GetFileMode(path, out actual), Is.EqualTo(0)); Assert.That(actual, Is.EqualTo(permission)); }
internal CK_TOKEN_INFO(NativeUnix native) { firmwareVersion = new CK_VERSION(native.firmwareVersion); flags = (uint)native.flags; hardwareVersion = new CK_VERSION(native.hardwareVersion); label = Library.Utf8ToString(native.label); manufacturerID = Library.Utf8ToString(native.manufacturerID); model = Library.Utf8ToString(native.model); serialNumber = Library.Utf8ToString(native.serialNumber); ulFreePrivateMemory = (int)native.ulFreePrivateMemory; ulFreePublicMemory = (int)native.ulFreePublicMemory; ulMaxPinLen = (int)native.ulMaxPinLen; ulMaxRwSessionCount = (int)native.ulMaxRwSessionCount; ulMaxSessionCount = (int)native.ulMaxSessionCount; ulMinPinLen = (int)native.ulMinPinLen; ulRwSessionCount = (int)native.ulRwSessionCount; ulSessionCount = (int)native.ulSessionCount; ulTotalPrivateMemory = (int)native.ulTotalPrivateMemory; ulTotalPublicMemory = (int)native.ulTotalPublicMemory; utcTime = Library.Utf8ToString(native.utcTime); }
internal CK_MECHANISM_INFO(NativeUnix native) { ulMinKeySize = (int)native.ulMaxKeySize; ulMaxKeySize = (int)native.ulMaxKeySize; flags = (uint)native.flags; }
internal CK_VERSION(NativeUnix native) { major = native.major; minor = native.minor; }