xref: /freebsd/contrib/libfido2/man/eddsa_pk_new.3 (revision 994297b01b98816bea1abf45ae4bac1bc69ee7a0)
1.\" Copyright (c) 2019 Yubico AB. All rights reserved.
2.\" Use of this source code is governed by a BSD-style
3.\" license that can be found in the LICENSE file.
4.\"
5.Dd $Mdocdate: May 15 2019 $
6.Dt EDDSA_PK_NEW 3
7.Os
8.Sh NAME
9.Nm eddsa_pk_new ,
10.Nm eddsa_pk_free ,
11.Nm eddsa_pk_from_EVP_PKEY ,
12.Nm eddsa_pk_from_ptr ,
13.Nm eddsa_pk_to_EVP_PKEY
14.Nd FIDO 2 COSE EDDSA API
15.Sh SYNOPSIS
16.In openssl/evp.h
17.In fido/eddsa.h
18.Ft eddsa_pk_t *
19.Fn eddsa_pk_new "void"
20.Ft void
21.Fn eddsa_pk_free "eddsa_pk_t **pkp"
22.Ft int
23.Fn eddsa_pk_from_EVP_PKEY "eddsa_pk_t *pk" "const EVP_PKEY *pkey"
24.Ft int
25.Fn eddsa_pk_from_ptr "eddsa_pk_t *pk" "const void *ptr" "size_t len"
26.Ft EVP_PKEY *
27.Fn eddsa_pk_to_EVP_PKEY "const eddsa_pk_t *pk"
28.Sh DESCRIPTION
29EDDSA is the name given in the CBOR Object Signing and Encryption
30(COSE) RFC to EDDSA over Curve25519 with SHA-512.
31The COSE EDDSA API of
32.Em libfido2
33is an auxiliary API with routines to convert between the different
34EDDSA public key types used in
35.Em libfido2
36and
37.Em OpenSSL .
38.Pp
39In
40.Em libfido2 ,
41EDDSA public keys are abstracted by the
42.Vt eddsa_pk_t
43type.
44.Pp
45The
46.Fn eddsa_pk_new
47function returns a pointer to a newly allocated, empty
48.Vt eddsa_pk_t
49type.
50If memory cannot be allocated, NULL is returned.
51.Pp
52The
53.Fn eddsa_pk_free
54function releases the memory backing
55.Fa *pkp ,
56where
57.Fa *pkp
58must have been previously allocated by
59.Fn eddsa_pk_new .
60On return,
61.Fa *pkp
62is set to NULL.
63Either
64.Fa pkp
65or
66.Fa *pkp
67may be NULL, in which case
68.Fn eddsa_pk_free
69is a NOP.
70.Pp
71The
72.Fn eddsa_pk_from_EVP_PKEY
73function fills
74.Fa pk
75with the contents of
76.Fa pkey .
77No references to
78.Fa pkey
79are kept.
80.Pp
81The
82.Fn eddsa_pk_from_ptr
83function fills
84.Fa pk
85with the contents of
86.Fa ptr ,
87where
88.Fa ptr
89points to
90.Fa len
91bytes.
92No references to
93.Fa ptr
94are kept.
95.Pp
96The
97.Fn eddsa_pk_to_EVP_PKEY
98function converts
99.Fa pk
100to a newly allocated
101.Fa EVP_PKEY
102type with a reference count of 1.
103No internal references to the returned pointer are kept.
104If an error occurs,
105.Fn eddsa_pk_to_EVP_PKEY
106returns NULL.
107.Sh RETURN VALUES
108The
109.Fn eddsa_pk_from_EC_KEY
110and
111.Fn eddsa_pk_from_ptr
112functions return
113.Dv FIDO_OK
114on success.
115On error, a different error code defined in
116.In fido/err.h
117is returned.
118.Sh SEE ALSO
119.Xr es256_pk_new 3 ,
120.Xr fido_assert_verify 3 ,
121.Xr fido_cred_pubkey_ptr 3 ,
122.Xr rs256_pk_new 3
123