Blame include/libssh/pki_priv.h

Packit 6c0a39
/*
Packit 6c0a39
 * This file is part of the SSH Library
Packit 6c0a39
 *
Packit 6c0a39
 * Copyright (c) 2010 by Aris Adamantiadis
Packit 6c0a39
 *
Packit 6c0a39
 * This library is free software; you can redistribute it and/or
Packit 6c0a39
 * modify it under the terms of the GNU Lesser General Public
Packit 6c0a39
 * License as published by the Free Software Foundation; either
Packit 6c0a39
 * version 2.1 of the License, or (at your option) any later version.
Packit 6c0a39
 *
Packit 6c0a39
 * This library is distributed in the hope that it will be useful,
Packit 6c0a39
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c0a39
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c0a39
 * Lesser General Public License for more details.
Packit 6c0a39
 *
Packit 6c0a39
 * You should have received a copy of the GNU Lesser General Public
Packit 6c0a39
 * License along with this library; if not, write to the Free Software
Packit 6c0a39
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Packit 6c0a39
 */
Packit 6c0a39
Packit 6c0a39
#ifndef PKI_PRIV_H_
Packit 6c0a39
#define PKI_PRIV_H_
Packit 6c0a39
Packit 6c0a39
#include "libssh/pki.h"
Packit 6c0a39
Packit 6c0a39
/* defined in bcrypt_pbkdf.c */
Packit 6c0a39
int bcrypt_pbkdf(const char *pass,
Packit 6c0a39
                 size_t passlen,
Packit 6c0a39
                 const uint8_t *salt,
Packit 6c0a39
                 size_t saltlen,
Packit 6c0a39
                 uint8_t *key,
Packit 6c0a39
                 size_t keylen,
Packit 6c0a39
                 unsigned int rounds);
Packit 6c0a39
Packit 6c0a39
#define RSA_HEADER_BEGIN "-----BEGIN RSA PRIVATE KEY-----"
Packit 6c0a39
#define RSA_HEADER_END "-----END RSA PRIVATE KEY-----"
Packit 6c0a39
#define DSA_HEADER_BEGIN "-----BEGIN DSA PRIVATE KEY-----"
Packit 6c0a39
#define DSA_HEADER_END "-----END DSA PRIVATE KEY-----"
Packit 6c0a39
#define ECDSA_HEADER_BEGIN "-----BEGIN EC PRIVATE KEY-----"
Packit 6c0a39
#define ECDSA_HEADER_END "-----END EC PRIVATE KEY-----"
Packit 6c0a39
#define OPENSSH_HEADER_BEGIN "-----BEGIN OPENSSH PRIVATE KEY-----"
Packit 6c0a39
#define OPENSSH_HEADER_END "-----END OPENSSH PRIVATE KEY-----"
Packit 6c0a39
/* Magic defined in OpenSSH/PROTOCOL.key */
Packit 6c0a39
#define OPENSSH_AUTH_MAGIC      "openssh-key-v1"
Packit 6c0a39
Packit 6c0a39
int pki_key_ecdsa_nid_from_name(const char *name);
Packit 6c0a39
const char *pki_key_ecdsa_nid_to_name(int nid);
Packit 6c0a39
const char *ssh_key_signature_to_char(enum ssh_keytypes_e type,
Packit 6c0a39
                                      enum ssh_digest_e hash_type);
Packit 6c0a39
enum ssh_digest_e ssh_key_type_to_hash(ssh_session session,
Packit 6c0a39
                                       enum ssh_keytypes_e type);
Packit 6c0a39
Packit 6c0a39
/* SSH Key Functions */
Packit 6c0a39
ssh_key pki_key_dup(const ssh_key key, int demote);
Packit 6c0a39
int pki_key_generate_rsa(ssh_key key, int parameter);
Packit 6c0a39
int pki_key_generate_dss(ssh_key key, int parameter);
Packit 6c0a39
int pki_key_generate_ecdsa(ssh_key key, int parameter);
Packit 6c0a39
int pki_key_generate_ed25519(ssh_key key);
Packit 6c0a39
Packit 6c0a39
int pki_key_compare(const ssh_key k1,
Packit 6c0a39
                    const ssh_key k2,
Packit 6c0a39
                    enum ssh_keycmp_e what);
Packit 6c0a39
Packit 6c0a39
int pki_key_check_hash_compatible(ssh_key key,
Packit 6c0a39
                                  enum ssh_digest_e hash_type);
Packit 6c0a39
/* SSH Private Key Functions */
Packit 6c0a39
enum ssh_keytypes_e pki_privatekey_type_from_string(const char *privkey);
Packit 6c0a39
ssh_key pki_private_key_from_base64(const char *b64_key,
Packit 6c0a39
                                    const char *passphrase,
Packit 6c0a39
                                    ssh_auth_callback auth_fn,
Packit 6c0a39
                                    void *auth_data);
Packit 6c0a39
Packit 6c0a39
ssh_string pki_private_key_to_pem(const ssh_key key,
Packit 6c0a39
                                  const char *passphrase,
Packit 6c0a39
                                  ssh_auth_callback auth_fn,
Packit 6c0a39
                                  void *auth_data);
Packit 6c0a39
int pki_import_privkey_buffer(enum ssh_keytypes_e type,
Packit 6c0a39
                              ssh_buffer buffer,
Packit 6c0a39
                              ssh_key *pkey);
Packit 6c0a39
Packit 6c0a39
/* SSH Public Key Functions */
Packit 6c0a39
int pki_pubkey_build_dss(ssh_key key,
Packit 6c0a39
                         ssh_string p,
Packit 6c0a39
                         ssh_string q,
Packit 6c0a39
                         ssh_string g,
Packit 6c0a39
                         ssh_string pubkey);
Packit 6c0a39
int pki_pubkey_build_rsa(ssh_key key,
Packit 6c0a39
                         ssh_string e,
Packit 6c0a39
                         ssh_string n);
Packit 6c0a39
int pki_pubkey_build_ecdsa(ssh_key key, int nid, ssh_string e);
Packit 6c0a39
ssh_string pki_publickey_to_blob(const ssh_key key);
Packit 6c0a39
Packit 6c0a39
/* SSH Private Key Functions */
Packit 6c0a39
int pki_privkey_build_dss(ssh_key key,
Packit 6c0a39
                          ssh_string p,
Packit 6c0a39
                          ssh_string q,
Packit 6c0a39
                          ssh_string g,
Packit 6c0a39
                          ssh_string pubkey,
Packit 6c0a39
                          ssh_string privkey);
Packit 6c0a39
int pki_privkey_build_rsa(ssh_key key,
Packit 6c0a39
                          ssh_string n,
Packit 6c0a39
                          ssh_string e,
Packit 6c0a39
                          ssh_string d,
Packit 6c0a39
                          ssh_string iqmp,
Packit 6c0a39
                          ssh_string p,
Packit 6c0a39
                          ssh_string q);
Packit 6c0a39
int pki_privkey_build_ecdsa(ssh_key key,
Packit 6c0a39
                            int nid,
Packit 6c0a39
                            ssh_string e,
Packit 6c0a39
                            ssh_string exp);
Packit 6c0a39
ssh_string pki_publickey_to_blob(const ssh_key key);
Packit 6c0a39
Packit 6c0a39
/* SSH Signature Functions */
Packit 6c0a39
ssh_signature pki_sign_data(const ssh_key privkey,
Packit 6c0a39
                            enum ssh_digest_e hash_type,
Packit 6c0a39
                            const unsigned char *input,
Packit 6c0a39
                            size_t input_len);
Packit 6c0a39
int pki_verify_data_signature(ssh_signature signature,
Packit 6c0a39
                              const ssh_key pubkey,
Packit 6c0a39
                              const unsigned char *input,
Packit 6c0a39
                              size_t input_len);
Packit 6c0a39
ssh_string pki_signature_to_blob(const ssh_signature sign);
Packit 6c0a39
ssh_signature pki_signature_from_blob(const ssh_key pubkey,
Packit 6c0a39
                                      const ssh_string sig_blob,
Packit 6c0a39
                                      enum ssh_keytypes_e type,
Packit 6c0a39
                                      enum ssh_digest_e hash_type);
Packit 6c0a39
Packit 6c0a39
/* SSH Signing Functions */
Packit 6c0a39
ssh_signature pki_do_sign(const ssh_key privkey,
Packit 6c0a39
                          const unsigned char *input,
Packit 6c0a39
                          size_t input_len,
Packit 6c0a39
                          enum ssh_digest_e hash_type);
Packit 6c0a39
ssh_signature pki_do_sign_hash(const ssh_key privkey,
Packit 6c0a39
                               const unsigned char *hash,
Packit 6c0a39
                               size_t hlen,
Packit 6c0a39
                               enum ssh_digest_e hash_type);
Packit 6c0a39
int pki_ed25519_sign(const ssh_key privkey, ssh_signature sig,
Packit 6c0a39
        const unsigned char *hash, size_t hlen);
Packit 6c0a39
int pki_ed25519_verify(const ssh_key pubkey, ssh_signature sig,
Packit 6c0a39
        const unsigned char *hash, size_t hlen);
Packit 6c0a39
int pki_ed25519_key_cmp(const ssh_key k1,
Packit 6c0a39
                const ssh_key k2,
Packit 6c0a39
                enum ssh_keycmp_e what);
Packit 6c0a39
int pki_ed25519_key_dup(ssh_key new, const ssh_key key);
Packit 6c0a39
int pki_ed25519_public_key_to_blob(ssh_buffer buffer, ssh_key key);
Packit Service fcc0d2
ssh_string pki_ed25519_signature_to_blob(ssh_signature sig);
Packit Service fcc0d2
int pki_signature_from_ed25519_blob(ssh_signature sig, ssh_string sig_blob);
Packit 6c0a39
int pki_privkey_build_ed25519(ssh_key key,
Packit 6c0a39
                              ssh_string pubkey,
Packit 6c0a39
                              ssh_string privkey);
Packit 6c0a39
Packit 6c0a39
/* PKI Container OpenSSH */
Packit 6c0a39
ssh_key ssh_pki_openssh_pubkey_import(const char *text_key);
Packit 6c0a39
ssh_key ssh_pki_openssh_privkey_import(const char *text_key,
Packit 6c0a39
        const char *passphrase, ssh_auth_callback auth_fn, void *auth_data);
Packit 6c0a39
ssh_string ssh_pki_openssh_privkey_export(const ssh_key privkey,
Packit 6c0a39
        const char *passphrase, ssh_auth_callback auth_fn, void *auth_data);
Packit 6c0a39
Packit 6c0a39
#endif /* PKI_PRIV_H_ */