RS256\_PK\_NEW(3) Library Functions Manual RS256\_PK\_NEW(3)

# [NAME](#NAME)

`rs256_pk_new`, `rs256_pk_free`, `rs256_pk_from_RSA`, `rs256_pk_from_EVP_PKEY`, `rs256_pk_from_ptr`, `rs256_pk_to_EVP_PKEY` — FIDO2 COSE RS256 API

# [SYNOPSIS](#SYNOPSIS)

`#include <openssl/rsa.h>`  
`#include <fido/rs256.h>`

`rs256_pk_t *`  
`rs256_pk_new`(`void`);

`void`  
`rs256_pk_free`(`rs256_pk_t **pkp`);

`int`  
`rs256_pk_from_EVP_PKEY`(`rs256_pk_t *pk`, `const EVP_PKEY *pkey`);

`int`  
`rs256_pk_from_RSA`(`rs256_pk_t *pk`, `const RSA *rsa`);

`int`  
`rs256_pk_from_ptr`(`rs256_pk_t *pk`, `const void *ptr`, `size_t len`);

`EVP_PKEY *`  
`rs256_pk_to_EVP_PKEY`(`const rs256_pk_t *pk`);

# [DESCRIPTION](#DESCRIPTION)

RS256 is the name given in the CBOR Object Signing and Encryption (COSE) RFC to PKCS#1.5 2048-bit RSA with SHA-256. The COSE RS256 API of *libfido2* is an auxiliary API with routines to convert between the different RSA public key types used in *libfido2* and [*OpenSSL*](#OpenSSL).

In *libfido2*, RS256 public keys are abstracted by the `rs256_pk_t` type.

The [`rs256_pk_new`](#rs256_pk_new)() function returns a pointer to a newly allocated, empty `rs256_pk_t` type. If memory cannot be allocated, NULL is returned.

The [`rs256_pk_free`](#rs256_pk_free)() function releases the memory backing `*pkp`, where `*pkp` must have been previously allocated by `rs256_pk_new`(). On return, `*pkp` is set to NULL. Either `pkp` or `*pkp` may be NULL, in which case `rs256_pk_free`() is a NOP.

The [`rs256_pk_from_EVP_PKEY`](#rs256_pk_from_EVP_PKEY)() function fills `pk` with the contents of `pkey`. No references to `pkey` are kept.

The [`rs256_pk_from_RSA`](#rs256_pk_from_RSA)() function fills `pk` with the contents of `rsa`. No references to `rsa` are kept.

The [`rs256_pk_from_ptr`](#rs256_pk_from_ptr)() function fills `pk` with the contents of `ptr`, where `ptr` points to `len` bytes. No references to `ptr` are kept.

The [`rs256_pk_to_EVP_PKEY`](#rs256_pk_to_EVP_PKEY)() function converts `pk` to a newly allocated `EVP_PKEY` type with a reference count of 1. No internal references to the returned pointer are kept. If an error occurs, `rs256_pk_to_EVP_PKEY`() returns NULL.

# [RETURN VALUES](#RETURN_VALUES)

The `rs256_pk_from_EVP_PKEY`(), `rs256_pk_from_RSA`(), and `rs256_pk_from_ptr`() functions return `FIDO_OK` on success. On error, a different error code defined in `<fido/err.h>` is returned.

# [SEE ALSO](#SEE_ALSO)

[eddsa\_pk\_new(3)](/man/os/libfido2/eddsa_pk_new.3), [es256\_pk\_new(3)](/man/os/libfido2/es256_pk_new.3), [es384\_pk\_new(3)](/man/os/libfido2/es384_pk_new.3), [fido\_assert\_verify(3)](/man/os/libfido2/fido_assert_verify.3), [fido\_cred\_pubkey\_ptr(3)](/man/os/libfido2/fido_cred_pubkey_ptr.3)

July 15, 2022 Linux 4.19.0-gvisor

---

Document: rs256_pk_from_ptr(3) from libfido2 1.17.0-r7 (Chainguard OS)
Source: https://github.com/Yubico/libfido2
