pub async fn encode_compact(
header: &JwsHeader,
payload: &[u8],
signer: &dyn Signer,
) -> Result<String, JwsError>Expand description
Encodes payload under header as a compact JWS signed by signer.
The header is serialized as given: alg must equal the signer’s algorithm, and kid is
whatever the caller set (a DID URL, usually), not necessarily Signer::kid.
§Errors
JwsError::AlgorithmMismatch when header.alg differs from the signer’s algorithm, and
JwsError::Signer when signing fails.
§Examples
use identity_kit::jose::{CompactJws, JwsAlgorithm, JwsHeader, SignError, Signer, encode_compact};
struct Rejecting;
#[async_trait::async_trait]
impl Signer for Rejecting {
fn alg(&self) -> JwsAlgorithm { JwsAlgorithm::ES256 }
fn kid(&self) -> Option<&str> { None }
async fn sign(&self, _: &[u8]) -> Result<Vec<u8>, SignError> {
Err(SignError::msg("key store is offline"))
}
}
let header = JwsHeader::new(JwsAlgorithm::ES256);
let err = encode_compact(&header, b"{}", &Rejecting).await.unwrap_err();
assert_eq!(err.to_string(), "signing failed: key store is offline");