Exemplo n.º 1
0
void
ssh_blf_key(ssh_blf_ctx *c, const uint8_t *k, uint16_t len)
{
	/* Initialize S-boxes and subkeys with Pi */
	Blowfish_initstate(c);

	/* Transform S-boxes and subkeys with key */
	Blowfish_expand0state(c, k, len);
}
Exemplo n.º 2
0
static ERL_NIF_TERM bf_expand(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
	ErlNifBinary state;
	char key[1024];
	char salt[1024];
	uint8_t key_len;
	unsigned long key_len_arg;
	uint8_t salt_len;

	if (argc != 4 || !enif_inspect_binary(env, argv[0], &state))
		return enif_make_badarg(env);
	if (!enif_get_string(env, argv[1], key, sizeof(key), ERL_NIF_LATIN1) ||
			!enif_get_ulong(env, argv[2], &key_len_arg) ||
			!enif_get_string(env, argv[3], salt, sizeof(salt), ERL_NIF_LATIN1))
		return enif_make_badarg(env);
	key_len = key_len_arg;
	salt_len = BCRYPT_MAXSALT;

	Blowfish_expand0state((blf_ctx *) state.data, (uint8_t *) key, key_len);
	Blowfish_expand0state((blf_ctx *) state.data, (uint8_t *) salt, salt_len);

	return enif_make_binary(env, &state);
}