| Type: | Package | 
| Title: | JavaScript Object Signing and Encryption | 
| Version: | 1.2.1 | 
| Description: | Read and write JSON Web Keys (JWK, rfc7517), generate and verify JSON Web Signatures (JWS, rfc7515) and encode/decode JSON Web Tokens (JWT, rfc7519) https://datatracker.ietf.org/wg/jose/documents/. These standards provide modern signing and encryption formats that are natively supported by browsers via the JavaScript WebCryptoAPI https://www.w3.org/TR/WebCryptoAPI/#jose, and used by services like OAuth 2.0, LetsEncrypt, and Github Apps. | 
| License: | MIT + file LICENSE | 
| URL: | https://r-lib.r-universe.dev/jose | 
| BugReports: | https://github.com/r-lib/jose/issues | 
| Depends: | openssl (≥ 1.2.1) | 
| Imports: | jsonlite | 
| RoxygenNote: | 7.1.2 | 
| VignetteBuilder: | knitr | 
| Suggests: | spelling, testthat, knitr, rmarkdown | 
| Encoding: | UTF-8 | 
| Language: | en-US | 
| NeedsCompilation: | no | 
| Packaged: | 2024-10-03 14:12:53 UTC; jeroen | 
| Author: | Jeroen Ooms  | 
| Maintainer: | Jeroen Ooms <jeroenooms@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2024-10-04 12:20:01 UTC | 
Base64URL encoding
Description
The base64url_encode functions are a variant of the standard base64. They are
specified in Section 5 of RFC 4648 as a URL-safe alternative. They use different symbols
for the 62:nd and 63:rd alphabet character and do not include trailing ==
padding.
Usage
base64url_encode(bin)
base64url_decode(text)
Arguments
bin | 
 a binary blob to encode  | 
text | 
 a base64url encoded string  | 
Generate claim
Description
Helper function to create a named list used as the claim of a JWT payload. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 for details.
Usage
jwt_claim(
  iss = NULL,
  sub = NULL,
  aud = NULL,
  exp = NULL,
  nbf = NULL,
  iat = Sys.time(),
  jti = NULL,
  ...
)
Arguments
iss | 
 (Issuer) Claim, should be rfc7519 'StringOrURI' value  | 
sub | 
 (Subject) Claim, should be rfc7519 'StringOrURI' value  | 
aud | 
 (Audience) Claim, should contain one or rfc7519 'StringOrURI' values  | 
exp | 
 (Expiration Time) Claim, should be rfc7519 'NumericDate' value; R
  | 
nbf | 
 (Not Before) Claim, should be rfc7519 'NumericDate' value; R
  | 
iat | 
 (Issued At) Claim, should be rfc7519 'NumericDate' value; R
  | 
jti | 
 (JWT ID) Claim, optional unique identifier for the JWT  | 
... | 
 additional custom claims to include  | 
JSON Web Token
Description
Sign or verify a JSON web token. The jwt_encode_hmac, jwt_encode_rsa,
and jwt_encode_ec default to HS256, RS256, and ES256
respectively. See jwt.io or
RFC7519 for more details.
Usage
jwt_encode_hmac(claim = jwt_claim(), secret, size = 256, header = NULL)
jwt_decode_hmac(jwt, secret)
jwt_encode_sig(claim = jwt_claim(), key, size = 256, header = NULL)
jwt_decode_sig(jwt, pubkey)
jwt_split(jwt)
Arguments
claim | 
 a named list with fields to include in the jwt payload  | 
secret | 
 string or raw vector with a secret passphrase  | 
size | 
 bitsize of sha2 signature, i.e.   | 
header | 
 named list with additional parameter fields to include in the jwt header as defined in rfc7515 section 9.1.2  | 
jwt | 
 string containing the JSON Web Token (JWT)  | 
key | 
 path or object with RSA or EC private key, see openssl::read_key.  | 
pubkey | 
 path or object with RSA or EC public key, see openssl::read_pubkey.  | 
Examples
# HMAC signing
mysecret <- "This is super secret"
token <- jwt_claim(name = "jeroen", session = 123456)
sig <- jwt_encode_hmac(token, mysecret)
jwt_decode_hmac(sig, mysecret)
# RSA encoding
mykey <- openssl::rsa_keygen()
pubkey <- as.list(mykey)$pubkey
sig <- jwt_encode_sig(token, mykey)
jwt_decode_sig(sig, pubkey)
# Same with EC
mykey <- openssl::ec_keygen()
pubkey <- as.list(mykey)$pubkey
sig <- jwt_encode_sig(token, mykey)
jwt_decode_sig(sig, pubkey)
# Get elements of the key
mysecret <- "This is super secret"
token <- jwt_claim(name = "jeroen", session = 123456)
jwt <- jwt_encode_hmac(token, mysecret)
jwt_split(jwt)
JSON web-keys
Description
Read and write RSA, ECDSA or AES keys as JSON web keys.
Usage
read_jwk(file)
write_jwk(x, path = NULL)
Arguments
file | 
 path to file with key data or literal json string  | 
x | 
 an RSA or EC key or pubkey file  | 
path | 
 file path to write output  | 
Examples
# generate an ecdsa key
library(openssl)
key <- ec_keygen("P-521")
write_jwk(key)
write_jwk(as.list(key)$pubkey)
# Same for RSA
key <- rsa_keygen()
write_jwk(key)
write_jwk(as.list(key)$pubkey)