Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
void
CryptoProxy::md5(const ByteVector& data, ByteVector& digest)
{
    CryptoHash(impl->provider, CALG_MD5, data).getValue(digest);
}
Example #4
0
void
Hmac::hashData(const ByteVector& data, ByteVector& hash)
{
    CryptoHash(cryptProv, algId, iPad).update(data).getValue(hash);
    CryptoHash(cryptProv, algId, oPad).update(hash).getValue(hash);
}