libwebsockets
Lightweight C library for HTML5 websockets
JSON Web Keys

Data Structures

struct  lws_jwk
 

Functions

LWS_VISIBLE LWS_EXTERN int lws_jwk_import (struct lws_jwk *s, const char *in, size_t len)
 
LWS_VISIBLE LWS_EXTERN void lws_jwk_destroy (struct lws_jwk *s)
 
LWS_VISIBLE LWS_EXTERN int lws_jwk_export (struct lws_jwk *s, int _private, char *p, size_t len)
 
LWS_VISIBLE int lws_jwk_load (struct lws_jwk *s, const char *filename)
 
LWS_VISIBLE int lws_jwk_save (struct lws_jwk *s, const char *filename)
 
LWS_VISIBLE int lws_jwk_rfc7638_fingerprint (struct lws_jwk *s, char *digest32)
 

Detailed Description

JSON Web Keys API

Lws provides an API to parse JSON Web Keys into a struct lws_genrsa_elements.

"oct" and "RSA" type keys are supported. For "oct" keys, they are held in the "e" member of the struct lws_genrsa_elements.

Keys elements are allocated on the heap. You must destroy the allocations in the struct lws_genrsa_elements by calling lws_jwk_destroy_genrsa_elements() when you are finished with it.

Function Documentation

◆ lws_jwk_destroy()

LWS_VISIBLE LWS_EXTERN void lws_jwk_destroy ( struct lws_jwk s)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_destroy() - Destroy a JSON Web key

Parameters
sthe JWK object to destroy

All allocations in the lws_jwk are destroyed

◆ lws_jwk_export()

LWS_VISIBLE LWS_EXTERN int lws_jwk_export ( struct lws_jwk s,
int  _private,
char *  p,
size_t  len 
)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_export() - Export a JSON Web key to a textual representation

Parameters
sthe JWK object to export
_private0 = just export public parts, 1 = export everything
pthe buffer to write the exported JWK to
lenthe length of the buffer p in bytes

Returns length of the used part of the buffer if OK, or -1 for error.

Serializes the content of the JWK into a char buffer.

◆ lws_jwk_import()

LWS_VISIBLE LWS_EXTERN int lws_jwk_import ( struct lws_jwk s,
const char *  in,
size_t  len 
)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_import() - Create a JSON Web key from the textual representation

Parameters
sthe JWK object to create
ina single JWK JSON stanza in utf-8
lenthe length of the JWK JSON stanza in bytes

Creates an lws_jwk struct filled with data from the JSON representation. "oct" and "rsa" key types are supported.

For "oct" type keys, it is loaded into el.e.

◆ lws_jwk_load()

LWS_VISIBLE int lws_jwk_load ( struct lws_jwk s,
const char *  filename 
)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_load() - Import a JSON Web key from a file

Parameters
sthe JWK object to load into
filenamefilename to load from

Returns 0 for OK or -1 for failure

◆ lws_jwk_rfc7638_fingerprint()

LWS_VISIBLE int lws_jwk_rfc7638_fingerprint ( struct lws_jwk s,
char *  digest32 
)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_rfc7638_fingerprint() - jwk to RFC7638 compliant fingerprint

Parameters
sthe JWK object to fingerprint
digest32buffer to take 32-byte digest

Returns 0 for OK or -1 for failure

◆ lws_jwk_save()

LWS_VISIBLE int lws_jwk_save ( struct lws_jwk s,
const char *  filename 
)

#include <include/libwebsockets/lws-jwk.h>

lws_jwk_save() - Export a JSON Web key to a file

Parameters
sthe JWK object to save from
filenamefilename to save to

Returns 0 for OK or -1 for failure