summaryrefslogtreecommitdiff
path: root/sshkey.h
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2019-10-31 21:15:14 +0000
committerDamien Miller <djm@mindrot.org>2019-11-01 09:46:08 +1100
commit02bb0768a937e50bbb236efc2bbdddb1991b1c85 (patch)
treed0a182540b8034345b20a49a09cbf90b234cad1c /sshkey.h
parent57ecc10628b04c384cbba2fbc87d38b74cd1199d (diff)
upstream: Initial infrastructure for U2F/FIDO support
Key library support: including allocation, marshalling public/private keys and certificates, signature validation. feedback & ok markus@ OpenBSD-Commit-ID: a17615ba15e0f7932ac4360cb18fc9a9544e68c7
Diffstat (limited to 'sshkey.h')
-rw-r--r--sshkey.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/sshkey.h b/sshkey.h
index 1119a7b07..2edcb13ab 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.h,v 1.34 2019/09/03 08:31:20 djm Exp $ */ 1/* $OpenBSD: sshkey.h,v 1.35 2019/10/31 21:15:14 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -65,6 +65,8 @@ enum sshkey_types {
65 KEY_ED25519_CERT, 65 KEY_ED25519_CERT,
66 KEY_XMSS, 66 KEY_XMSS,
67 KEY_XMSS_CERT, 67 KEY_XMSS_CERT,
68 KEY_ECDSA_SK,
69 KEY_ECDSA_SK_CERT,
68 KEY_UNSPEC 70 KEY_UNSPEC
69}; 71};
70 72
@@ -118,18 +120,30 @@ struct sshkey_cert {
118struct sshkey { 120struct sshkey {
119 int type; 121 int type;
120 int flags; 122 int flags;
123 /* KEY_RSA */
121 RSA *rsa; 124 RSA *rsa;
125 /* KEY_DSA */
122 DSA *dsa; 126 DSA *dsa;
127 /* KEY_ECDSA and KEY_ECDSA_SK */
123 int ecdsa_nid; /* NID of curve */ 128 int ecdsa_nid; /* NID of curve */
124 EC_KEY *ecdsa; 129 EC_KEY *ecdsa;
130 /* KEY_ED25519 */
125 u_char *ed25519_sk; 131 u_char *ed25519_sk;
126 u_char *ed25519_pk; 132 u_char *ed25519_pk;
133 /* KEY_XMSS */
127 char *xmss_name; 134 char *xmss_name;
128 char *xmss_filename; /* for state file updates */ 135 char *xmss_filename; /* for state file updates */
129 void *xmss_state; /* depends on xmss_name, opaque */ 136 void *xmss_state; /* depends on xmss_name, opaque */
130 u_char *xmss_sk; 137 u_char *xmss_sk;
131 u_char *xmss_pk; 138 u_char *xmss_pk;
139 /* KEY_ECDSA_SK */
140 char *sk_application;
141 uint8_t sk_flags;
142 struct sshbuf *sk_key_handle;
143 struct sshbuf *sk_reserved;
144 /* Certificates */
132 struct sshkey_cert *cert; 145 struct sshkey_cert *cert;
146 /* Private key shielding */
133 u_char *shielded_private; 147 u_char *shielded_private;
134 size_t shielded_len; 148 size_t shielded_len;
135 u_char *shield_prekey; 149 u_char *shield_prekey;
@@ -268,6 +282,9 @@ int ssh_ecdsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
268int ssh_ecdsa_verify(const struct sshkey *key, 282int ssh_ecdsa_verify(const struct sshkey *key,
269 const u_char *signature, size_t signaturelen, 283 const u_char *signature, size_t signaturelen,
270 const u_char *data, size_t datalen, u_int compat); 284 const u_char *data, size_t datalen, u_int compat);
285int ssh_ecdsa_sk_verify(const struct sshkey *key,
286 const u_char *signature, size_t signaturelen,
287 const u_char *data, size_t datalen, u_int compat);
271int ssh_ed25519_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, 288int ssh_ed25519_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
272 const u_char *data, size_t datalen, u_int compat); 289 const u_char *data, size_t datalen, u_int compat);
273int ssh_ed25519_verify(const struct sshkey *key, 290int ssh_ed25519_verify(const struct sshkey *key,