Skip to main content

isideload_apple_codesign/remote_signing/
mod.rs

1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
5//! Remote signing support.
6
7pub mod session_negotiation;
8
9use {thiserror::Error, x509_certificate::X509CertificateError};
10
11/// URL of default server to use.
12pub const DEFAULT_SERVER_URL: &str = "wss://ws.codesign.gregoryszorc.com/";
13
14/// An error specific to remote signing.
15#[derive(Debug, Error)]
16pub enum RemoteSignError {
17    #[error("unexpected message received from relay server: {0}")]
18    ServerUnexpectedMessage(String),
19
20    #[error("error reported from relay server: {0}")]
21    ServerError(String),
22
23    #[error("not compatible with relay server; try upgrading to a new release?")]
24    ServerIncompatible,
25
26    #[error("cryptography error: {0}")]
27    Crypto(String),
28
29    #[error("bad client state: {0}")]
30    ClientState(&'static str),
31
32    #[error("joining state not wanted for this session type: {0}")]
33    SessionJoinUnwantedState(String),
34
35    #[error("base64 decode error: {0}")]
36    Base64(#[from] base64::DecodeError),
37
38    #[error("I/O error: {0}")]
39    Io(#[from] std::io::Error),
40
41    #[error("PEM encoding error: {0}")]
42    Pem(#[from] pem::PemError),
43
44    #[error("JSON serialization error: {0}")]
45    SerdeJson(#[from] serde_json::Error),
46
47    #[error("SPKI error: {0}")]
48    Spki(#[from] spki::Error),
49
50    #[error("X.509 certificate handler error: {0}")]
51    X509(#[from] X509CertificateError),
52}
53
54/// A function that receives session information.
55pub type SessionInfoCallback = fn(sjs_base64: &str, sjs_pem: &str) -> Result<(), RemoteSignError>;