#include #include #include #include "sha1.h" #include "sha1passwd.h" #include "base64.h" #define SALT_GEN_SIZE 8 static int ssha1_getdata(const char *ciphertext, size_t data_len, unsigned char *data) { int len; ciphertext+=SSHA1_MAGIC_LENGTH; len=base64_decode(strlen(ciphertext), ciphertext, data_len, data); if(len<=SHA1_DIGEST_SIZE) return 0; /* failure */ if(len>data_len) return 0; /* failure */ return len; } static int ssha1_cryptdata(const char *cleartext, size_t salt_len, const void *salt, size_t out_len, void *out) { SHA1_CTX ctx; int len; len=(SHA1_DIGEST_SIZE+salt_len); if(out_lensalt_len) return 0; /* failure */ if(len>SSHA1_SALT_MAX) len=SSHA1_SALT_MAX; memcpy(salt, res+SHA1_DIGEST_SIZE, len