00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef PKI_PRIV_H_
00022 #define PKI_PRIV_H_
00023
00024 #define RSA_HEADER_BEGIN "-----BEGIN RSA PRIVATE KEY-----"
00025 #define RSA_HEADER_END "-----END RSA PRIVATE KEY-----"
00026 #define DSA_HEADER_BEGIN "-----BEGIN DSA PRIVATE KEY-----"
00027 #define DSA_HEADER_END "-----END DSA PRIVATE KEY-----"
00028 #define ECDSA_HEADER_BEGIN "-----BEGIN EC PRIVATE KEY-----"
00029 #define ECDSA_HEADER_END "-----END EC PRIVATE KEY-----"
00030
00031 #define ssh_pki_log(...) \
00032 _ssh_log(SSH_LOG_FUNCTIONS, __func__, __VA_ARGS__)
00033 void _ssh_pki_log(const char *function,
00034 const char *format, ...) PRINTF_ATTRIBUTE(2, 3);
00035
00036 int pki_key_ecdsa_nid_from_name(const char *name);
00037 const char *pki_key_ecdsa_nid_to_name(int nid);
00038
00039
00040 ssh_key pki_key_dup(const ssh_key key, int demote);
00041 int pki_key_generate_rsa(ssh_key key, int parameter);
00042 int pki_key_generate_dss(ssh_key key, int parameter);
00043 int pki_key_generate_ecdsa(ssh_key key, int parameter);
00044 int pki_key_compare(const ssh_key k1,
00045 const ssh_key k2,
00046 enum ssh_keycmp_e what);
00047
00048
00049 enum ssh_keytypes_e pki_privatekey_type_from_string(const char *privkey);
00050 ssh_key pki_private_key_from_base64(const char *b64_key,
00051 const char *passphrase,
00052 ssh_auth_callback auth_fn,
00053 void *auth_data);
00054
00055 ssh_string pki_private_key_to_pem(const ssh_key key,
00056 const char *passphrase,
00057 ssh_auth_callback auth_fn,
00058 void *auth_data);
00059
00060
00061 int pki_pubkey_build_dss(ssh_key key,
00062 ssh_string p,
00063 ssh_string q,
00064 ssh_string g,
00065 ssh_string pubkey);
00066 int pki_pubkey_build_rsa(ssh_key key,
00067 ssh_string e,
00068 ssh_string n);
00069 int pki_pubkey_build_ecdsa(ssh_key key, int nid, ssh_string e);
00070 ssh_string pki_publickey_to_blob(const ssh_key key);
00071 int pki_export_pubkey_rsa1(const ssh_key key,
00072 const char *host,
00073 char *rsa1,
00074 size_t rsa1_len);
00075
00076
00077 ssh_string pki_signature_to_blob(const ssh_signature sign);
00078 ssh_signature pki_signature_from_blob(const ssh_key pubkey,
00079 const ssh_string sig_blob,
00080 enum ssh_keytypes_e type);
00081 int pki_signature_verify(ssh_session session,
00082 const ssh_signature sig,
00083 const ssh_key key,
00084 const unsigned char *hash,
00085 size_t hlen);
00086
00087
00088 ssh_signature pki_do_sign(const ssh_key privkey,
00089 const unsigned char *hash,
00090 size_t hlen);
00091 ssh_signature pki_do_sign_sessionid(const ssh_key key,
00092 const unsigned char *hash,
00093 size_t hlen);
00094 #endif