# ol.clave.crypto.impl.jws

## jws-alg

Return the JWS `alg` header value for a key.

|     |     |
| --- | --- |
| Key Type | Result |
| P-256 | "ES256" |
| P-384 | "ES384" |
| Ed25519 | "EdDSA" |
| RSA | "RS256" |

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L123-L132)

---

## sign

Sign data bytes, return signature bytes in JWS format.

For ECDSA, returns R||S concatenated (not DER).
For EdDSA and RSA, returns raw signature bytes.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L148-L153)

---

## protected-header-json

```clojure
(protected-header-json alg kid nonce url jwk-json)
```

Construct the protected header JSON string with deterministic field order.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L194-L218)

---

## final-jws-json

```clojure
(final-jws-json protected-b64 payload-b64 signature-b64)
```

Assemble the final JWS JSON object with deterministic ordering.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L220-L225)

---

## protected-dot-payload-bytes

```clojure
(protected-dot-payload-bytes protected-b64 payload-b64)
```

Return ASCII bytes of '&lt;protected>.&lt;payload>'.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L227-L230)

---

## encode-payload-b64

```clojure
(encode-payload-b64 payload-json)
```

Base64url-encode the payload JSON string or return the empty string when nil.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L232-L239)

---

## encode-protected-b64

```clojure
(encode-protected-b64 alg kid nonce url jwk-json)
```

Construct and base64url-encode the protected header JSON.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L241-L245)

---

## encode-signature-b64

```clojure
(encode-signature-b64 alg private-key-or-mac protected-dot-payload)
```

Compute the signature for the given alg and return base64url-encoded value.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L247-L256)

---

## jws-encode-json

```clojure
(jws-encode-json payload-json keypair kid nonce url)
```

Build a JSON-serialized JWS object.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L281-L291)

---

## jws-encode-eab

```clojure
(jws-encode-eab account-key-or-keypair mac-key kid url)
```

Construct an External Account Binding JWS per RFC 8555 section 7.3.4.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/crypto/impl/jws.clj#L293-L306)
