24 #include "libssh/pki.h"
27 int bcrypt_pbkdf(
const char *pass,
35 #define RSA_HEADER_BEGIN "-----BEGIN RSA PRIVATE KEY-----"
36 #define RSA_HEADER_END "-----END RSA PRIVATE KEY-----"
37 #define DSA_HEADER_BEGIN "-----BEGIN DSA PRIVATE KEY-----"
38 #define DSA_HEADER_END "-----END DSA PRIVATE KEY-----"
39 #define ECDSA_HEADER_BEGIN "-----BEGIN EC PRIVATE KEY-----"
40 #define ECDSA_HEADER_END "-----END EC PRIVATE KEY-----"
41 #define OPENSSH_HEADER_BEGIN "-----BEGIN OPENSSH PRIVATE KEY-----"
42 #define OPENSSH_HEADER_END "-----END OPENSSH PRIVATE KEY-----"
44 #define OPENSSH_AUTH_MAGIC "openssh-key-v1"
46 #define ssh_pki_log(...) \
47 _ssh_log(SSH_LOG_FUNCTIONS, __func__, __VA_ARGS__)
48 void _ssh_pki_log(
const char *
function,
49 const char *format, ...) PRINTF_ATTRIBUTE(2, 3);
51 int pki_key_ecdsa_nid_from_name(const
char *name);
52 const
char *pki_key_ecdsa_nid_to_name(
int nid);
55 ssh_key pki_key_dup(const ssh_key key,
int demote);
56 int pki_key_generate_rsa(ssh_key key,
int parameter);
57 int pki_key_generate_dss(ssh_key key,
int parameter);
58 int pki_key_generate_ecdsa(ssh_key key,
int parameter);
59 int pki_key_generate_ed25519(ssh_key key);
61 int pki_key_compare(const ssh_key k1,
63 enum ssh_keycmp_e what);
66 enum ssh_keytypes_e pki_privatekey_type_from_string(const
char *privkey);
67 ssh_key pki_private_key_from_base64(const
char *b64_key,
68 const
char *passphrase,
69 ssh_auth_callback auth_fn,
72 ssh_string pki_private_key_to_pem(const ssh_key key,
73 const
char *passphrase,
74 ssh_auth_callback auth_fn,
78 int pki_pubkey_build_dss(ssh_key key,
83 int pki_pubkey_build_rsa(ssh_key key,
86 int pki_pubkey_build_ecdsa(ssh_key key,
int nid, ssh_string e);
87 ssh_string pki_publickey_to_blob(const ssh_key key);
88 int pki_export_pubkey_rsa1(const ssh_key key,
94 ssh_string pki_signature_to_blob(const ssh_signature sign);
95 ssh_signature pki_signature_from_blob(const ssh_key pubkey,
96 const ssh_string sig_blob,
97 enum ssh_keytypes_e type);
98 int pki_signature_verify(ssh_session session,
99 const ssh_signature sig,
101 const
unsigned char *hash,
105 ssh_signature pki_do_sign(const ssh_key privkey,
106 const
unsigned char *hash,
108 ssh_signature pki_do_sign_sessionid(const ssh_key key,
109 const
unsigned char *hash,
111 int pki_ed25519_sign(const ssh_key privkey, ssh_signature sig,
112 const
unsigned char *hash,
size_t hlen);
113 int pki_ed25519_verify(const ssh_key pubkey, ssh_signature sig,
114 const
unsigned char *hash,
size_t hlen);
115 int pki_ed25519_key_cmp(const ssh_key k1,
117 enum ssh_keycmp_e what);
118 int pki_ed25519_key_dup(ssh_key new, const ssh_key key);
119 int pki_ed25519_public_key_to_blob(ssh_buffer buffer, ssh_key key);
120 ssh_string pki_ed25519_sig_to_blob(ssh_signature sig);
121 int pki_ed25519_sig_from_blob(ssh_signature sig, ssh_string sig_blob);
124 ssh_key ssh_pki_openssh_privkey_import(const
char *text_key,
125 const
char *passphrase, ssh_auth_callback auth_fn,
void *auth_data);
126 ssh_string ssh_pki_openssh_privkey_export(const ssh_key privkey,
127 const
char *passphrase, ssh_auth_callback auth_fn,
void *auth_data);