xref: /netbsd-src/external/bsd/libfido2/dist/man/rs256_pk_new.3 (revision 2d40c4512a84c0d064ec30a492c5e2a14d230bc3)
1*2d40c451Schristos.\" Copyright (c) 2018-2022 Yubico AB. All rights reserved.
2ba9bdd8bSchristos.\"
3*2d40c451Schristos.\" Redistribution and use in source and binary forms, with or without
4*2d40c451Schristos.\" modification, are permitted provided that the following conditions are
5*2d40c451Schristos.\" met:
6*2d40c451Schristos.\"
7*2d40c451Schristos.\"    1. Redistributions of source code must retain the above copyright
8*2d40c451Schristos.\"       notice, this list of conditions and the following disclaimer.
9*2d40c451Schristos.\"    2. Redistributions in binary form must reproduce the above copyright
10*2d40c451Schristos.\"       notice, this list of conditions and the following disclaimer in
11*2d40c451Schristos.\"       the documentation and/or other materials provided with the
12*2d40c451Schristos.\"       distribution.
13*2d40c451Schristos.\"
14*2d40c451Schristos.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15*2d40c451Schristos.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16*2d40c451Schristos.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17*2d40c451Schristos.\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18*2d40c451Schristos.\" HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19*2d40c451Schristos.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20*2d40c451Schristos.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21*2d40c451Schristos.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22*2d40c451Schristos.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23*2d40c451Schristos.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24*2d40c451Schristos.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25*2d40c451Schristos.\"
26*2d40c451Schristos.\" SPDX-License-Identifier: BSD-2-Clause
27*2d40c451Schristos.\"
28*2d40c451Schristos.Dd $Mdocdate: July 15 2022 $
29ba9bdd8bSchristos.Dt RS256_PK_NEW 3
30ba9bdd8bSchristos.Os
31ba9bdd8bSchristos.Sh NAME
32ba9bdd8bSchristos.Nm rs256_pk_new ,
33ba9bdd8bSchristos.Nm rs256_pk_free ,
34ba9bdd8bSchristos.Nm rs256_pk_from_RSA ,
35*2d40c451Schristos.Nm rs256_pk_from_EVP_PKEY ,
36ba9bdd8bSchristos.Nm rs256_pk_from_ptr ,
37ba9bdd8bSchristos.Nm rs256_pk_to_EVP_PKEY
38ba9bdd8bSchristos.Nd FIDO2 COSE RS256 API
39ba9bdd8bSchristos.Sh SYNOPSIS
40ba9bdd8bSchristos.In openssl/rsa.h
41ba9bdd8bSchristos.In fido/rs256.h
42ba9bdd8bSchristos.Ft rs256_pk_t *
43ba9bdd8bSchristos.Fn rs256_pk_new "void"
44ba9bdd8bSchristos.Ft void
45ba9bdd8bSchristos.Fn rs256_pk_free "rs256_pk_t **pkp"
46ba9bdd8bSchristos.Ft int
47*2d40c451Schristos.Fn rs256_pk_from_EVP_PKEY "rs256_pk_t *pk" "const EVP_PKEY *pkey"
48*2d40c451Schristos.Ft int
49ba9bdd8bSchristos.Fn rs256_pk_from_RSA "rs256_pk_t *pk" "const RSA *rsa"
50ba9bdd8bSchristos.Ft int
51ba9bdd8bSchristos.Fn rs256_pk_from_ptr "rs256_pk_t *pk" "const void *ptr" "size_t len"
52ba9bdd8bSchristos.Ft EVP_PKEY *
53ba9bdd8bSchristos.Fn rs256_pk_to_EVP_PKEY "const rs256_pk_t *pk"
54ba9bdd8bSchristos.Sh DESCRIPTION
55ba9bdd8bSchristosRS256 is the name given in the CBOR Object Signing and Encryption
56ba9bdd8bSchristos(COSE) RFC to PKCS#1.5 2048-bit RSA with SHA-256.
57ba9bdd8bSchristosThe COSE RS256 API of
58ba9bdd8bSchristos.Em libfido2
59ba9bdd8bSchristosis an auxiliary API with routines to convert between the different
60ba9bdd8bSchristosRSA public key types used in
61ba9bdd8bSchristos.Em libfido2
62ba9bdd8bSchristosand
63ba9bdd8bSchristos.Em OpenSSL .
64ba9bdd8bSchristos.Pp
65ba9bdd8bSchristosIn
66ba9bdd8bSchristos.Em libfido2 ,
67ba9bdd8bSchristosRS256 public keys are abstracted by the
68ba9bdd8bSchristos.Vt rs256_pk_t
69ba9bdd8bSchristostype.
70ba9bdd8bSchristos.Pp
71ba9bdd8bSchristosThe
72ba9bdd8bSchristos.Fn rs256_pk_new
73ba9bdd8bSchristosfunction returns a pointer to a newly allocated, empty
74ba9bdd8bSchristos.Vt rs256_pk_t
75ba9bdd8bSchristostype.
76ba9bdd8bSchristosIf memory cannot be allocated, NULL is returned.
77ba9bdd8bSchristos.Pp
78ba9bdd8bSchristosThe
79ba9bdd8bSchristos.Fn rs256_pk_free
80ba9bdd8bSchristosfunction releases the memory backing
81ba9bdd8bSchristos.Fa *pkp ,
82ba9bdd8bSchristoswhere
83ba9bdd8bSchristos.Fa *pkp
84ba9bdd8bSchristosmust have been previously allocated by
85ba9bdd8bSchristos.Fn rs256_pk_new .
86ba9bdd8bSchristosOn return,
87ba9bdd8bSchristos.Fa *pkp
88ba9bdd8bSchristosis set to NULL.
89ba9bdd8bSchristosEither
90ba9bdd8bSchristos.Fa pkp
91ba9bdd8bSchristosor
92ba9bdd8bSchristos.Fa *pkp
93ba9bdd8bSchristosmay be NULL, in which case
94ba9bdd8bSchristos.Fn rs256_pk_free
95ba9bdd8bSchristosis a NOP.
96ba9bdd8bSchristos.Pp
97ba9bdd8bSchristosThe
98*2d40c451Schristos.Fn rs256_pk_from_EVP_PKEY
99*2d40c451Schristosfunction fills
100*2d40c451Schristos.Fa pk
101*2d40c451Schristoswith the contents of
102*2d40c451Schristos.Fa pkey .
103*2d40c451SchristosNo references to
104*2d40c451Schristos.Fa pkey
105*2d40c451Schristosare kept.
106*2d40c451Schristos.Pp
107*2d40c451SchristosThe
108ba9bdd8bSchristos.Fn rs256_pk_from_RSA
109ba9bdd8bSchristosfunction fills
110ba9bdd8bSchristos.Fa pk
111ba9bdd8bSchristoswith the contents of
112ba9bdd8bSchristos.Fa rsa .
113ba9bdd8bSchristosNo references to
114ba9bdd8bSchristos.Fa rsa
115ba9bdd8bSchristosare kept.
116ba9bdd8bSchristos.Pp
117ba9bdd8bSchristosThe
118ba9bdd8bSchristos.Fn rs256_pk_from_ptr
119ba9bdd8bSchristosfunction fills
120ba9bdd8bSchristos.Fa pk
121ba9bdd8bSchristoswith the contents of
122ba9bdd8bSchristos.Fa ptr ,
123ba9bdd8bSchristoswhere
124ba9bdd8bSchristos.Fa ptr
125ba9bdd8bSchristospoints to
126ba9bdd8bSchristos.Fa len
127ba9bdd8bSchristosbytes.
128ba9bdd8bSchristosNo references to
129ba9bdd8bSchristos.Fa ptr
130ba9bdd8bSchristosare kept.
131ba9bdd8bSchristos.Pp
132ba9bdd8bSchristosThe
133ba9bdd8bSchristos.Fn rs256_pk_to_EVP_PKEY
134ba9bdd8bSchristosfunction converts
135ba9bdd8bSchristos.Fa pk
136ba9bdd8bSchristosto a newly allocated
137ba9bdd8bSchristos.Fa EVP_PKEY
138ba9bdd8bSchristostype with a reference count of 1.
139ba9bdd8bSchristosNo internal references to the returned pointer are kept.
140ba9bdd8bSchristosIf an error occurs,
141ba9bdd8bSchristos.Fn rs256_pk_to_EVP_PKEY
142ba9bdd8bSchristosreturns NULL.
143ba9bdd8bSchristos.Sh RETURN VALUES
144ba9bdd8bSchristosThe
145*2d40c451Schristos.Fn rs256_pk_from_EVP_PKEY ,
146*2d40c451Schristos.Fn rs256_pk_from_RSA ,
147ba9bdd8bSchristosand
148ba9bdd8bSchristos.Fn rs256_pk_from_ptr
149ba9bdd8bSchristosfunctions return
150ba9bdd8bSchristos.Dv FIDO_OK
151ba9bdd8bSchristoson success.
152ba9bdd8bSchristosOn error, a different error code defined in
153ba9bdd8bSchristos.In fido/err.h
154ba9bdd8bSchristosis returned.
155ba9bdd8bSchristos.Sh SEE ALSO
156ba9bdd8bSchristos.Xr eddsa_pk_new 3 ,
157ba9bdd8bSchristos.Xr es256_pk_new 3 ,
158*2d40c451Schristos.Xr es384_pk_new 3 ,
159ba9bdd8bSchristos.Xr fido_assert_verify 3 ,
160ba9bdd8bSchristos.Xr fido_cred_pubkey_ptr 3
161