Skip to content

Commit 89e2280

Browse files
authored
Make this library drop-in replacement for other erlang implementations (#4)
* Make this library drop-in replacement for other erlang implementations * Update README
1 parent f1b7288 commit 89e2280

File tree

5 files changed

+26
-32
lines changed

5 files changed

+26
-32
lines changed

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
erlscrypt
2-
=========
1+
Erlang NIF for scrypt
2+
=====================
33

44
[![Build Status](https://github.com/kpy3/erlscrypt/workflows/Test/badge.svg)](https://github.com/kpy3/erlscrypt/actions?query=branch%3Amaster+workflow%3A"Test") [![Erlang Versions](https://img.shields.io/badge/Supported%20Erlang%2FOTP-21.0%20to%2023.0-blue)](http://www.erlang.org)
55

66

7-
An Erlang NIF for Colin Percival's "scrypt" function.
7+
An Erlang NIF for Colin Percival's "scrypt" function. It uses dirty CPU schedulers for
8+
generating hash, leaving main schedulers for Erlang applications.
89

9-
General information can be found in [these slides (PDF)](http://www.tarsnap.com/scrypt/scrypt-slides.pdf)
10+
General information about scrypt can be found in [these slides (PDF)](http://www.tarsnap.com/scrypt/scrypt-slides.pdf)
1011
and [Colin Percival's page on scrypt](http://www.tarsnap.com/scrypt.html).
1112

1213
This library uses code from scrypt [1.3.1](https://github.com/Tarsnap/scrypt/tree/1.3.1).
@@ -20,15 +21,15 @@ Add library as dependency in `rebar.config`
2021
...
2122
]}.
2223

23-
Add `erlscrypt` as application dependency
24+
Add `scrypt` as application dependency
2425

2526
{application, app,
2627
[
2728
{applications, [
2829
...
29-
erlscrypt
30+
scrypt
3031
]},
3132
...
3233
]}.
3334

34-
Use `erlscrypt:scrypt/6` for encrypting data.
35+
Use `scrypt:scrypt/6` for encrypting data.

c_src/Makefile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
CURDIR := $(shell pwd)
44
BASEDIR := $(abspath $(CURDIR)/..)
55

6-
PROJECT ?= $(notdir $(BASEDIR))
7-
PROJECT := $(strip $(PROJECT))
6+
PROJECT := scrypt
87

98
ERTS_INCLUDE_DIR ?= $(shell erl -noshell -s init stop -eval "io:format(\"~ts/erts-~ts/include/\", [code:root_dir(), erlang:system_info(version)]).")
109
ERL_INTERFACE_INCLUDE_DIR ?= $(shell erl -noshell -s init stop -eval "io:format(\"~ts\", [code:lib_dir(erl_interface, include)]).")

c_src/scrypt_nif.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@ static ERL_NIF_TERM mk_atom(ErlNifEnv *env, const char *atom) {
1414
return ret;
1515
}
1616

17-
static ERL_NIF_TERM report_bad_param(ErlNifEnv *env, const char *param) {
18-
return enif_raise_exception(
19-
env, enif_make_tuple2(env, mk_atom(env, "bad_param"),
20-
enif_make_string(env, param, ERL_NIF_LATIN1)));
21-
}
22-
2317
static ERL_NIF_TERM report_allocation_error(ErlNifEnv *env) {
2418
return enif_raise_exception(env, mk_atom(env, "allocation_error"));
2519
}
@@ -39,27 +33,27 @@ static ERL_NIF_TERM scrypt(ErlNifEnv *env, int argc,
3933
}
4034

4135
if (!enif_inspect_binary(env, argv[0], &passwd)) {
42-
return report_bad_param(env, "Passwd");
36+
return enif_make_badarg(env);
4337
}
4438

4539
if (!enif_inspect_binary(env, argv[1], &salt)) {
46-
return report_bad_param(env, "Salt");
40+
return enif_make_badarg(env);
4741
}
4842

4943
if (!enif_get_uint(env, argv[2], &N)) {
50-
return report_bad_param(env, "N");
44+
return enif_make_badarg(env);
5145
}
5246

5347
if (!enif_get_uint(env, argv[3], &r)) {
54-
return report_bad_param(env, "R");
48+
return enif_make_badarg(env);
5549
}
5650

5751
if (!enif_get_uint(env, argv[4], &p)) {
58-
return report_bad_param(env, "P");
52+
return enif_make_badarg(env);
5953
}
6054

6155
if (!enif_get_ulong(env, argv[5], &buf_len)) {
62-
return report_bad_param(env, "Buflen");
56+
return enif_make_badarg(env);
6357
}
6458

6559
if (!enif_alloc_binary(buf_len, &result)) {
@@ -77,4 +71,4 @@ static ERL_NIF_TERM scrypt(ErlNifEnv *env, int argc,
7771
static ErlNifFunc nif_funcs[] = {
7872
{"scrypt", 6, scrypt, ERL_NIF_DIRTY_JOB_CPU_BOUND}};
7973

80-
ERL_NIF_INIT(erlscrypt, nif_funcs, NULL, NULL, NULL, NULL);
74+
ERL_NIF_INIT(scrypt, nif_funcs, NULL, NULL, NULL, NULL);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
{application, erlscrypt,
1+
{application, scrypt,
22
[{description, "Erlang NIF for scrypt"},
3-
{vsn, "1.1.0"},
3+
{vsn, "2.0.0"},
44
{registered, []},
55
{mod, {scrypt, []}},
66
{applications,

src/erlscrypt.erl renamed to src/scrypt.erl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
-module(erlscrypt).
1+
-module(scrypt).
22
-on_load(init/0).
33

44
-behaviour(application).
@@ -7,7 +7,7 @@
77
-export([scrypt/6]).
88

99
-define(APPNAME, scrypt_nif).
10-
-define(LIBNAME, erlscrypt).
10+
-define(LIBNAME, scrypt).
1111

1212
%%%-------------------------------------------------------------------
1313
%%% Application callbacks
@@ -105,21 +105,21 @@ testvec4_test() ->
105105
= scrypt(<<"pleaseletmein">>, <<"SodiumChloride">>, 1048576, 8, 1, 64).
106106

107107
check_bad_param_passwd_test() ->
108-
?assertException(error, {bad_param, "Passwd"}, scrypt(1, <<"">>, 1048576, 8, 1, 64)).
108+
?assertException(error, badarg, scrypt(1, <<"">>, 1048576, 8, 1, 64)).
109109

110110
check_bad_param_salt_test() ->
111-
?assertException(error, {bad_param, "Salt"}, scrypt(<<"">>, 2, 1048576, 8, 1, 64)).
111+
?assertException(error, badarg, scrypt(<<"">>, 2, 1048576, 8, 1, 64)).
112112

113113
check_bad_param_N_test() ->
114-
?assertException(error, {bad_param, "N"}, scrypt(<<"">>, <<"">>, "1048576", 8, 1, 64)).
114+
?assertException(error, badarg, scrypt(<<"">>, <<"">>, "1048576", 8, 1, 64)).
115115

116116
check_bad_param_P_test() ->
117-
?assertException(error, {bad_param, "R"}, scrypt(<<"">>, <<"">>, 1048576, "8", 1, 64)).
117+
?assertException(error, badarg, scrypt(<<"">>, <<"">>, 1048576, "8", 1, 64)).
118118

119119
check_bad_param_R_test() ->
120-
?assertException(error, {bad_param, "P"}, scrypt(<<"">>, <<"">>, 1048576, 8, "1", 64)).
120+
?assertException(error, badarg, scrypt(<<"">>, <<"">>, 1048576, 8, "1", 64)).
121121

122122
check_bad_param_Buflen_test() ->
123-
?assertException(error, {bad_param, "Buflen"}, scrypt(<<"">>, <<"">>, 1048576, 8, 1, "64")).
123+
?assertException(error, badarg, scrypt(<<"">>, <<"">>, 1048576, 8, 1, "64")).
124124

125125
-endif.

0 commit comments

Comments
 (0)