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);