Skip to main content

encode_compact

Function encode_compact 

Source
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");