Add some basic framework code preparatory to adding key export.
[u/mdw/putty] / ssh.h
diff --git a/ssh.h b/ssh.h
index 3981066..76954a4 100644 (file)
--- a/ssh.h
+++ b/ssh.h
@@ -72,6 +72,10 @@ typedef unsigned int word32;
 typedef unsigned int uint32;
 
 unsigned long crc32(const void *s, size_t len);
+unsigned long crc32_update(unsigned long crc_input, const void *s, size_t len);
+
+/* SSH CRC compensation attack detector */
+int detect_attack(unsigned char *buf, uint32 len, unsigned char *IV);
 
 typedef struct {
     uint32 h[4];
@@ -293,10 +297,30 @@ char *ssh2_userkey_loadpub(char *filename, char **algorithm,
 int ssh2_save_userkey(char *filename, struct ssh2_userkey *key,
                      char *passphrase);
 
-int keyfile_version(char *filename);
+enum {
+    SSH_KEYTYPE_UNOPENABLE,
+    SSH_KEYTYPE_UNKNOWN,
+    SSH_KEYTYPE_SSH1, SSH_KEYTYPE_SSH2,
+    SSH_KEYTYPE_OPENSSH, SSH_KEYTYPE_SSHCOM
+};
+int key_type(char *filename);
+char *key_type_to_str(int type);
+
+int import_possible(int type);
+int import_target_type(int type);
+int import_encrypted(char *filename, int type, char **comment);
+int import_ssh1(char *filename, int type, struct RSAKey *key,char *passphrase);
+struct ssh2_userkey *import_ssh2(char *filename, int type, char *passphrase);
+int export_ssh1(char *filename, int type, struct RSAKey *key,char *passphrase);
+int export_ssh2(char *filename, int type,
+                struct ssh2_userkey *key, char *passphrase);
 
 void des3_decrypt_pubkey(unsigned char *key, unsigned char *blk, int len);
 void des3_encrypt_pubkey(unsigned char *key, unsigned char *blk, int len);
+void des3_decrypt_pubkey_ossh(unsigned char *key, unsigned char *iv,
+                             unsigned char *blk, int len);
+void des3_encrypt_pubkey_ossh(unsigned char *key, unsigned char *iv,
+                             unsigned char *blk, int len);
 void aes256_encrypt_pubkey(unsigned char *key, unsigned char *blk,
                           int len);
 void aes256_decrypt_pubkey(unsigned char *key, unsigned char *blk,