Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

codesign MacOS binaries #1

Open
jonmmease opened this issue Jun 26, 2020 · 2 comments
Open

codesign MacOS binaries #1

jonmmease opened this issue Jun 26, 2020 · 2 comments
Labels
infrastructure build process etc. P2 needed for current cycle

Comments

@jonmmease
Copy link
Collaborator

We should work out how to digitally sign the MacOS kaleido binary so that it doesn't get blocked by the default settings of Gatekeeper.

Looks like we could do this from the command using the codesign command after the build has been completed: https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

@jonmmease jonmmease added the feature something new label Jul 1, 2020
@jonmmease
Copy link
Collaborator Author

After a bit of research and experimentation, it looks like Gatekeeper will only check for code signatures for files/apps that have the com.apple.quarantine xattr set. This gets set by web browsers and email clients when files are downloaded, but it isn't set by the pip and conda package managers so users getting kaleido in the Python wheel shouldn't run into issues with Gatekeeper flagging it. Not sure about other language specific package managers

References:

Will keep this issue open as code signing would still be a good idea eventually, but it doesn't need to block the initial release.

@jonmmease
Copy link
Collaborator Author

When distributed as a conda package, orca didn't get blocked by Gatekeeper in order to run, but it did get blocked when attempting to bind to a local port. See plotly/orca#269.

Kaleido won't run into this issue because it doesn't use ports for communication.

@jonmmease jonmmease added packaging and removed feature something new labels Jul 1, 2020
ayjayt added a commit that referenced this issue Jul 24, 2024
1) Chromium has runtime checks that intentionally crash chromium in fear of security vulnerabilities.

2) Chromium does not remove old and degrading APIs from their documentation, they do not work.

3) Chromium will flesh out API structures and header files and half-implement the concept, that is:

Stuff they are not using is buggy, it is NOT enough for it to be part of the spec.

4) Using DevTools Protocol from w/in Chromium uses their SimpleDevToolsProtocolClient class, which is _not_ complete.

5) Because there is no message broker between the Host and Client, SimpleDevToolsProtocolClient sends json instructions as
arguments directly to the host consumer- the browser or the tab.

6) Because of above checks in #1, calls to class methods must often originate from the exact same thread that the class
was instantiated on, or there will be a mandatory fatal crash.

7) SimpleDevToolsProtocol client does not handle this.

8) And in general, generating and using tabs with SimpleDevToolsProtocol.CreateSession will cause crashes due to checks due
to the above when any command is sent.

9) Chromium's own workarounds include using APIs that we're just not supposed to use.
@gvwilson gvwilson self-assigned this Jul 26, 2024
@gvwilson gvwilson removed their assignment Aug 3, 2024
@gvwilson gvwilson added infrastructure build process etc. P2 needed for current cycle and removed packaging labels Aug 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infrastructure build process etc. P2 needed for current cycle
Projects
None yet
Development

No branches or pull requests

2 participants