int create_account(DB *database, unsigned char *username, unsigned char *password) { int user_hash = SearchHash(username); if (!strcmp(username, database->db[user_hash].username)) { printf("Sorry, that username is already taken. Please try again.\n\n"); return 0; } if (!check_password(password)) { printf("Sorry, your password must be 8-20 characters in length and contain "); printf("either a number or one of these special characters: !@#$%%*.\n\n"); return 0; } // copy username to db location strcpy(database->db[user_hash].username, username); // create new password with salt int new_length = strlen(password) + strlen(salt); char *salt_password = malloc(sizeof(char) * new_length + 1); strcpy(salt_password, password); strcat(salt_password, salt); database->db[user_hash].password = CryptoHash(salt_password); return 1; }
int login(DB *database, unsigned char *username, unsigned char *password) { unsigned long user_hash = SearchHash(username); if (!strcmp(username, database->db[user_hash].username)) { int new_length = strlen(password) + strlen(salt); char *salt_password = malloc(sizeof(char) * new_length + 1); strcpy(salt_password, password); strcat(salt_password, salt); if (CryptoHash(salt_password) == database->db[user_hash].password) return 1; else return 0; } return 0; }
void CryptoProxy::md5(const ByteVector& data, ByteVector& digest) { CryptoHash(impl->provider, CALG_MD5, data).getValue(digest); }
void Hmac::hashData(const ByteVector& data, ByteVector& hash) { CryptoHash(cryptProv, algId, iPad).update(data).getValue(hash); CryptoHash(cryptProv, algId, oPad).update(hash).getValue(hash); }