scrypty 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -20,3 +20,5 @@ ext/*.so
20
20
  ext/extconf.h
21
21
  ext/mkmf.log
22
22
  ext/Makefile
23
+ lib/*.so
24
+ .rbenv-version
data/Rakefile CHANGED
@@ -13,8 +13,24 @@ file "ext/scrypty_ext.so" => FileList["ext/*.c", "ext/*.h", "ext/Makefile"] do
13
13
  end
14
14
  end
15
15
 
16
+ file "lib/scrypty_ext.so" => "ext/scrypty_ext.so" do
17
+ cp 'ext/scrypty_ext.so', 'lib/scrypty_ext.so'
18
+ end
19
+
16
20
  desc "Compile the scrypty extension"
17
- task :compile => "ext/scrypty_ext.so"
21
+ task :compile => "lib/scrypty_ext.so"
22
+
23
+ desc "Prefix C function names"
24
+ task :prefix do
25
+ names = %w{SHA256Context SHA256_CTX HMAC_SHA256Context HMAC_SHA256_CTX SHA256_Init SHA256_Update SHA256_Final HMAC_SHA256_Init HMAC_SHA256_Update HMAC_SHA256_Final PBKDF2_SHA256 crypto_aesctr_init crypto_aesctr_stream crypto_aesctr_free crypto_scrypt memtouse scryptenc_cpuperf scryptenc_buf scryptdec_buf scryptenc_file scryptdec_file}
26
+ `git ls-files ext`.chomp.split(/\s+/).each do |filename|
27
+ data = File.read(filename)
28
+ names.each do |name|
29
+ data.gsub!(/(?<!")\b#{name}\b(?!")/m, "scrypty_#{name}")
30
+ end
31
+ File.open(filename, "w") { |f| f.write(data) }
32
+ end
33
+ end
18
34
 
19
35
  CLEAN.clear
20
- CLEAN.include(["ext/*.o", "ext/*.so", "ext/extconf.h", "ext/Makefile"])
36
+ CLEAN.include(["ext/*.o", "ext/*.so", "lib/*.so", "ext/extconf.h", "ext/Makefile"])
data/ext/crypto_aesctr.c CHANGED
@@ -45,13 +45,13 @@ struct crypto_aesctr {
45
45
  };
46
46
 
47
47
  /**
48
- * crypto_aesctr_init(key, nonce):
48
+ * scrypty_crypto_aesctr_init(key, nonce):
49
49
  * Prepare to encrypt/decrypt data with AES in CTR mode, using the provided
50
50
  * expanded key and nonce. The key provided must remain valid for the
51
51
  * lifetime of the stream.
52
52
  */
53
53
  struct crypto_aesctr *
54
- crypto_aesctr_init(AES_KEY * key, uint64_t nonce)
54
+ scrypty_crypto_aesctr_init(AES_KEY * key, uint64_t nonce)
55
55
  {
56
56
  struct crypto_aesctr * stream;
57
57
 
@@ -73,13 +73,13 @@ err0:
73
73
  }
74
74
 
75
75
  /**
76
- * crypto_aesctr_stream(stream, inbuf, outbuf, buflen):
76
+ * scrypty_crypto_aesctr_stream(stream, inbuf, outbuf, buflen):
77
77
  * Generate the next ${buflen} bytes of the AES-CTR stream and xor them with
78
78
  * bytes from ${inbuf}, writing the result into ${outbuf}. If the buffers
79
79
  * ${inbuf} and ${outbuf} overlap, they must be identical.
80
80
  */
81
81
  void
82
- crypto_aesctr_stream(struct crypto_aesctr * stream, const uint8_t * inbuf,
82
+ scrypty_crypto_aesctr_stream(struct crypto_aesctr * stream, const uint8_t * inbuf,
83
83
  uint8_t * outbuf, size_t buflen)
84
84
  {
85
85
  uint8_t pblk[16];
@@ -106,11 +106,11 @@ crypto_aesctr_stream(struct crypto_aesctr * stream, const uint8_t * inbuf,
106
106
  }
107
107
 
108
108
  /**
109
- * crypto_aesctr_free(stream):
109
+ * scrypty_crypto_aesctr_free(stream):
110
110
  * Free the provided stream object.
111
111
  */
112
112
  void
113
- crypto_aesctr_free(struct crypto_aesctr * stream)
113
+ scrypty_crypto_aesctr_free(struct crypto_aesctr * stream)
114
114
  {
115
115
  int i;
116
116
 
data/ext/crypto_aesctr.h CHANGED
@@ -34,26 +34,26 @@
34
34
  #include <openssl/aes.h>
35
35
 
36
36
  /**
37
- * crypto_aesctr_init(key, nonce):
37
+ * scrypty_crypto_aesctr_init(key, nonce):
38
38
  * Prepare to encrypt/decrypt data with AES in CTR mode, using the provided
39
39
  * expanded key and nonce. The key provided must remain valid for the
40
40
  * lifetime of the stream.
41
41
  */
42
- struct crypto_aesctr * crypto_aesctr_init(AES_KEY *, uint64_t);
42
+ struct crypto_aesctr * scrypty_crypto_aesctr_init(AES_KEY *, uint64_t);
43
43
 
44
44
  /**
45
- * crypto_aesctr_stream(stream, inbuf, outbuf, buflen):
45
+ * scrypty_crypto_aesctr_stream(stream, inbuf, outbuf, buflen):
46
46
  * Generate the next ${buflen} bytes of the AES-CTR stream and xor them with
47
47
  * bytes from ${inbuf}, writing the result into ${outbuf}. If the buffers
48
48
  * ${inbuf} and ${outbuf} overlap, they must be identical.
49
49
  */
50
- void crypto_aesctr_stream(struct crypto_aesctr *, const uint8_t *,
50
+ void scrypty_crypto_aesctr_stream(struct crypto_aesctr *, const uint8_t *,
51
51
  uint8_t *, size_t);
52
52
 
53
53
  /**
54
- * crypto_aesctr_free(stream):
54
+ * scrypty_crypto_aesctr_free(stream):
55
55
  * Free the provided stream object.
56
56
  */
57
- void crypto_aesctr_free(struct crypto_aesctr *);
57
+ void scrypty_crypto_aesctr_free(struct crypto_aesctr *);
58
58
 
59
59
  #endif /* !_CRYPTO_AESCTR_H_ */
@@ -222,7 +222,7 @@ smix(uint8_t * B, size_t r, uint64_t N, uint32_t * V, uint32_t * XY)
222
222
  }
223
223
 
224
224
  /**
225
- * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
225
+ * scrypty_crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
226
226
  * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
227
227
  * p, buflen) and write the result into buf. The parameters r, p, and buflen
228
228
  * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
@@ -231,7 +231,7 @@ smix(uint8_t * B, size_t r, uint64_t N, uint32_t * V, uint32_t * XY)
231
231
  * Return 0 on success; or -1 on error.
232
232
  */
233
233
  int
234
- crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
234
+ scrypty_crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
235
235
  const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
236
236
  uint8_t * buf, size_t buflen)
237
237
  {
@@ -304,7 +304,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
304
304
  #endif
305
305
 
306
306
  /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
307
- PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
307
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
308
308
 
309
309
  /* 2: for i = 0 to p - 1 do */
310
310
  for (i = 0; i < p; i++) {
@@ -313,7 +313,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
313
313
  }
314
314
 
315
315
  /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
316
- PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
316
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
317
317
 
318
318
  /* Free memory. */
319
319
  #ifdef MAP_ANON
@@ -204,7 +204,7 @@ smix(uint8_t * B, size_t r, uint64_t N, uint8_t * V, uint8_t * XY)
204
204
  }
205
205
 
206
206
  /**
207
- * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
207
+ * scrypty_crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
208
208
  * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
209
209
  * p, buflen) and write the result into buf. The parameters r, p, and buflen
210
210
  * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
@@ -213,7 +213,7 @@ smix(uint8_t * B, size_t r, uint64_t N, uint8_t * V, uint8_t * XY)
213
213
  * Return 0 on success; or -1 on error.
214
214
  */
215
215
  int
216
- crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
216
+ scrypty_crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
217
217
  const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
218
218
  uint8_t * buf, size_t buflen)
219
219
  {
@@ -255,7 +255,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
255
255
  goto err2;
256
256
 
257
257
  /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
258
- PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
258
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
259
259
 
260
260
  /* 2: for i = 0 to p - 1 do */
261
261
  for (i = 0; i < p; i++) {
@@ -264,7 +264,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
264
264
  }
265
265
 
266
266
  /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
267
- PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
267
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
268
268
 
269
269
  /* Free memory. */
270
270
  free(V);
@@ -250,7 +250,7 @@ smix(uint8_t * B, size_t r, uint64_t N, void * V, void * XY)
250
250
  }
251
251
 
252
252
  /**
253
- * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
253
+ * scrypty_crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
254
254
  * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
255
255
  * p, buflen) and write the result into buf. The parameters r, p, and buflen
256
256
  * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
@@ -259,7 +259,7 @@ smix(uint8_t * B, size_t r, uint64_t N, void * V, void * XY)
259
259
  * Return 0 on success; or -1 on error.
260
260
  */
261
261
  int
262
- crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
262
+ scrypty_crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
263
263
  const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
264
264
  uint8_t * buf, size_t buflen)
265
265
  {
@@ -332,7 +332,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
332
332
  #endif
333
333
 
334
334
  /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
335
- PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
335
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
336
336
 
337
337
  /* 2: for i = 0 to p - 1 do */
338
338
  for (i = 0; i < p; i++) {
@@ -341,7 +341,7 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
341
341
  }
342
342
 
343
343
  /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
344
- PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
344
+ scrypty_PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
345
345
 
346
346
  /* Free memory. */
347
347
  #ifdef MAP_ANON
data/ext/crypto_scrypt.h CHANGED
@@ -32,7 +32,7 @@
32
32
  #include <stdint.h>
33
33
 
34
34
  /**
35
- * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
35
+ * scrypty_crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
36
36
  * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
37
37
  * p, buflen) and write the result into buf. The parameters r, p, and buflen
38
38
  * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
@@ -40,7 +40,7 @@
40
40
  *
41
41
  * Return 0 on success; or -1 on error.
42
42
  */
43
- int crypto_scrypt(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t,
43
+ int scrypty_crypto_scrypt(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t,
44
44
  uint32_t, uint32_t, uint8_t *, size_t);
45
45
 
46
46
  #endif /* !_CRYPTO_SCRYPT_H_ */
data/ext/memlimit.c CHANGED
@@ -233,7 +233,7 @@ memlimit_sysconf(size_t * memlimit)
233
233
  #endif
234
234
 
235
235
  int
236
- memtouse(size_t maxmem, double maxmemfrac, size_t * memlimit)
236
+ scrypty_memtouse(size_t maxmem, double maxmemfrac, size_t * memlimit)
237
237
  {
238
238
  size_t sysctl_memlimit, sysinfo_memlimit, rlimit_memlimit;
239
239
  size_t sysconf_memlimit;
data/ext/memlimit.h CHANGED
@@ -32,11 +32,11 @@
32
32
  #include <stddef.h>
33
33
 
34
34
  /**
35
- * memtouse(maxmem, maxmemfrac, memlimit):
35
+ * scrypty_memtouse(maxmem, maxmemfrac, memlimit):
36
36
  * Examine the system and return via memlimit the amount of RAM which should
37
37
  * be used -- the specified fraction of the available RAM, but no more than
38
38
  * maxmem, and no less than 1MiB.
39
39
  */
40
- int memtouse(size_t, double, size_t *);
40
+ int scrypty_memtouse(size_t, double, size_t *);
41
41
 
42
42
  #endif /* !_MEMLIMIT_H_ */
data/ext/ruby_ext.c CHANGED
@@ -142,7 +142,7 @@ scrypty_buffer(rb_obj, rb_data, rb_password, rb_maxmem, rb_maxmemfrac, rb_maxtim
142
142
  rb_out = rb_str_new(NULL, out_len);
143
143
  out = RSTRING_PTR(rb_out);
144
144
 
145
- errorcode = scryptenc_buf((const uint8_t *) data, data_len,
145
+ errorcode = scrypty_scryptenc_buf((const uint8_t *) data, data_len,
146
146
  (uint8_t *) out, (const uint8_t *) password, password_len,
147
147
  maxmem, maxmemfrac, maxtime);
148
148
  }
@@ -150,7 +150,7 @@ scrypty_buffer(rb_obj, rb_data, rb_password, rb_maxmem, rb_maxmemfrac, rb_maxtim
150
150
  rb_out = rb_str_new(NULL, data_len);
151
151
  out = RSTRING_PTR(rb_out);
152
152
 
153
- errorcode = scryptdec_buf((const uint8_t *) data, data_len,
153
+ errorcode = scrypty_scryptdec_buf((const uint8_t *) data, data_len,
154
154
  (uint8_t *) out, &out_len, (const uint8_t *) password, password_len,
155
155
  maxmem, maxmemfrac, maxtime);
156
156
  }
@@ -246,11 +246,11 @@ scrypty_file(rb_obj, rb_infn, rb_outfn, rb_password, rb_maxmem, rb_maxmemfrac, r
246
246
  out = rb_io_stdio_file(out_p);
247
247
 
248
248
  if (encrypt) {
249
- errorcode = scryptenc_file(in, out, (const uint8_t *) password,
249
+ errorcode = scrypty_scryptenc_file(in, out, (const uint8_t *) password,
250
250
  password_len, maxmem, maxmemfrac, maxtime);
251
251
  }
252
252
  else {
253
- errorcode = scryptdec_file(in, out, (const uint8_t *) password,
253
+ errorcode = scrypty_scryptdec_file(in, out, (const uint8_t *) password,
254
254
  password_len, maxmem, maxmemfrac, maxtime);
255
255
  }
256
256
  rb_io_close(rb_infile);
data/ext/scryptenc.c CHANGED
@@ -64,11 +64,11 @@ pickparams(size_t maxmem, double maxmemfrac, double maxtime,
64
64
  int rc;
65
65
 
66
66
  /* Figure out how much memory to use. */
67
- if (memtouse(maxmem, maxmemfrac, &memlimit))
67
+ if (scrypty_memtouse(maxmem, maxmemfrac, &memlimit))
68
68
  return (1);
69
69
 
70
70
  /* Figure out how fast the CPU is. */
71
- if ((rc = scryptenc_cpuperf(&opps)) != 0)
71
+ if ((rc = scrypty_scryptenc_cpuperf(&opps)) != 0)
72
72
  return (rc);
73
73
  opslimit = opps * maxtime;
74
74
 
@@ -131,11 +131,11 @@ checkparams(size_t maxmem, double maxmemfrac, double maxtime,
131
131
  int rc;
132
132
 
133
133
  /* Figure out the maximum amount of memory we can use. */
134
- if (memtouse(maxmem, maxmemfrac, &memlimit))
134
+ if (scrypty_memtouse(maxmem, maxmemfrac, &memlimit))
135
135
  return (1);
136
136
 
137
137
  /* Figure out how fast the CPU is. */
138
- if ((rc = scryptenc_cpuperf(&opps)) != 0)
138
+ if ((rc = scrypty_scryptenc_cpuperf(&opps)) != 0)
139
139
  return (rc);
140
140
  opslimit = opps * maxtime;
141
141
 
@@ -209,9 +209,9 @@ scryptenc_setup(uint8_t header[96], uint8_t dk[64],
209
209
  uint64_t N;
210
210
  uint32_t r;
211
211
  uint32_t p;
212
- SHA256_CTX ctx;
212
+ scrypty_SHA256_CTX ctx;
213
213
  uint8_t * key_hmac = &dk[32];
214
- HMAC_SHA256_CTX hctx;
214
+ scrypty_HMAC_SHA256_CTX hctx;
215
215
  int rc;
216
216
 
217
217
  /* Pick values for N, r, p. */
@@ -225,7 +225,7 @@ scryptenc_setup(uint8_t header[96], uint8_t dk[64],
225
225
  return (rc);
226
226
 
227
227
  /* Generate the derived keys. */
228
- if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
228
+ if (scrypty_crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
229
229
  return (3);
230
230
 
231
231
  /* Construct the file header. */
@@ -237,15 +237,15 @@ scryptenc_setup(uint8_t header[96], uint8_t dk[64],
237
237
  memcpy(&header[16], salt, 32);
238
238
 
239
239
  /* Add header checksum. */
240
- SHA256_Init(&ctx);
241
- SHA256_Update(&ctx, header, 48);
242
- SHA256_Final(hbuf, &ctx);
240
+ scrypty_SHA256_Init(&ctx);
241
+ scrypty_SHA256_Update(&ctx, header, 48);
242
+ scrypty_SHA256_Final(hbuf, &ctx);
243
243
  memcpy(&header[48], hbuf, 16);
244
244
 
245
245
  /* Add header signature (used for verifying password). */
246
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
247
- HMAC_SHA256_Update(&hctx, header, 64);
248
- HMAC_SHA256_Final(hbuf, &hctx);
246
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
247
+ scrypty_HMAC_SHA256_Update(&hctx, header, 64);
248
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
249
249
  memcpy(&header[64], hbuf, 32);
250
250
 
251
251
  /* Success! */
@@ -263,9 +263,9 @@ scryptdec_setup(const uint8_t header[96], uint8_t dk[64],
263
263
  uint32_t r;
264
264
  uint32_t p;
265
265
  uint64_t N;
266
- SHA256_CTX ctx;
266
+ scrypty_SHA256_CTX ctx;
267
267
  uint8_t * key_hmac = &dk[32];
268
- HMAC_SHA256_CTX hctx;
268
+ scrypty_HMAC_SHA256_CTX hctx;
269
269
  int rc;
270
270
 
271
271
  /* Parse N, r, p, salt. */
@@ -275,9 +275,9 @@ scryptdec_setup(const uint8_t header[96], uint8_t dk[64],
275
275
  memcpy(salt, &header[16], 32);
276
276
 
277
277
  /* Verify header checksum. */
278
- SHA256_Init(&ctx);
279
- SHA256_Update(&ctx, header, 48);
280
- SHA256_Final(hbuf, &ctx);
278
+ scrypty_SHA256_Init(&ctx);
279
+ scrypty_SHA256_Update(&ctx, header, 48);
280
+ scrypty_SHA256_Final(hbuf, &ctx);
281
281
  if (memcmp(&header[48], hbuf, 16))
282
282
  return (7);
283
283
 
@@ -291,13 +291,13 @@ scryptdec_setup(const uint8_t header[96], uint8_t dk[64],
291
291
 
292
292
  /* Compute the derived keys. */
293
293
  N = (uint64_t)(1) << logN;
294
- if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
294
+ if (scrypty_crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
295
295
  return (3);
296
296
 
297
297
  /* Check header signature (i.e., verify password). */
298
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
299
- HMAC_SHA256_Update(&hctx, header, 64);
300
- HMAC_SHA256_Final(hbuf, &hctx);
298
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
299
+ scrypty_HMAC_SHA256_Update(&hctx, header, 64);
300
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
301
301
  if (memcmp(hbuf, &header[64], 32))
302
302
  return (11);
303
303
 
@@ -306,13 +306,13 @@ scryptdec_setup(const uint8_t header[96], uint8_t dk[64],
306
306
  }
307
307
 
308
308
  /**
309
- * scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
309
+ * scrypty_scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
310
310
  * maxmem, maxmemfrac, maxtime):
311
311
  * Encrypt inbuflen bytes from inbuf, writing the resulting inbuflen + 128
312
312
  * bytes to outbuf.
313
313
  */
314
314
  int
315
- scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
315
+ scrypty_scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
316
316
  const uint8_t * passwd, size_t passwdlen,
317
317
  size_t maxmem, double maxmemfrac, double maxtime)
318
318
  {
@@ -322,7 +322,7 @@ scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
322
322
  uint8_t * key_enc = dk;
323
323
  uint8_t * key_hmac = &dk[32];
324
324
  int rc;
325
- HMAC_SHA256_CTX hctx;
325
+ scrypty_HMAC_SHA256_CTX hctx;
326
326
  AES_KEY key_enc_exp;
327
327
  struct crypto_aesctr * AES;
328
328
 
@@ -337,15 +337,15 @@ scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
337
337
  /* Encrypt data. */
338
338
  if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
339
339
  return (5);
340
- if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
340
+ if ((AES = scrypty_crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
341
341
  return (6);
342
- crypto_aesctr_stream(AES, inbuf, &outbuf[96], inbuflen);
343
- crypto_aesctr_free(AES);
342
+ scrypty_crypto_aesctr_stream(AES, inbuf, &outbuf[96], inbuflen);
343
+ scrypty_crypto_aesctr_free(AES);
344
344
 
345
345
  /* Add signature. */
346
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
347
- HMAC_SHA256_Update(&hctx, outbuf, 96 + inbuflen);
348
- HMAC_SHA256_Final(hbuf, &hctx);
346
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
347
+ scrypty_HMAC_SHA256_Update(&hctx, outbuf, 96 + inbuflen);
348
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
349
349
  memcpy(&outbuf[96 + inbuflen], hbuf, 32);
350
350
 
351
351
  /* Zero sensitive data. */
@@ -357,14 +357,14 @@ scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
357
357
  }
358
358
 
359
359
  /**
360
- * scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
360
+ * scrypty_scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
361
361
  * maxmem, maxmemfrac, maxtime):
362
362
  * Decrypt inbuflen bytes fro inbuf, writing the result into outbuf and the
363
363
  * decrypted data length to outlen. The allocated length of outbuf must
364
364
  * be at least inbuflen.
365
365
  */
366
366
  int
367
- scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
367
+ scrypty_scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
368
368
  size_t * outlen, const uint8_t * passwd, size_t passwdlen,
369
369
  size_t maxmem, double maxmemfrac, double maxtime)
370
370
  {
@@ -373,7 +373,7 @@ scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
373
373
  uint8_t * key_enc = dk;
374
374
  uint8_t * key_hmac = &dk[32];
375
375
  int rc;
376
- HMAC_SHA256_CTX hctx;
376
+ scrypty_HMAC_SHA256_CTX hctx;
377
377
  AES_KEY key_enc_exp;
378
378
  struct crypto_aesctr * AES;
379
379
 
@@ -400,16 +400,16 @@ scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
400
400
  /* Decrypt data. */
401
401
  if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
402
402
  return (5);
403
- if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
403
+ if ((AES = scrypty_crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
404
404
  return (6);
405
- crypto_aesctr_stream(AES, &inbuf[96], outbuf, inbuflen - 128);
406
- crypto_aesctr_free(AES);
405
+ scrypty_crypto_aesctr_stream(AES, &inbuf[96], outbuf, inbuflen - 128);
406
+ scrypty_crypto_aesctr_free(AES);
407
407
  *outlen = inbuflen - 128;
408
408
 
409
409
  /* Verify signature. */
410
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
411
- HMAC_SHA256_Update(&hctx, inbuf, inbuflen - 32);
412
- HMAC_SHA256_Final(hbuf, &hctx);
410
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
411
+ scrypty_HMAC_SHA256_Update(&hctx, inbuf, inbuflen - 32);
412
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
413
413
  if (memcmp(hbuf, &inbuf[inbuflen - 32], 32))
414
414
  return (7);
415
415
 
@@ -422,13 +422,13 @@ scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
422
422
  }
423
423
 
424
424
  /**
425
- * scryptenc_file(infile, outfile, passwd, passwdlen,
425
+ * scrypty_scryptenc_file(infile, outfile, passwd, passwdlen,
426
426
  * maxmem, maxmemfrac, maxtime):
427
427
  * Read a stream from infile and encrypt it, writing the resulting stream to
428
428
  * outfile.
429
429
  */
430
430
  int
431
- scryptenc_file(FILE * infile, FILE * outfile,
431
+ scrypty_scryptenc_file(FILE * infile, FILE * outfile,
432
432
  const uint8_t * passwd, size_t passwdlen,
433
433
  size_t maxmem, double maxmemfrac, double maxtime)
434
434
  {
@@ -439,7 +439,7 @@ scryptenc_file(FILE * infile, FILE * outfile,
439
439
  uint8_t * key_enc = dk;
440
440
  uint8_t * key_hmac = &dk[32];
441
441
  size_t readlen;
442
- HMAC_SHA256_CTX hctx;
442
+ scrypty_HMAC_SHA256_CTX hctx;
443
443
  AES_KEY key_enc_exp;
444
444
  struct crypto_aesctr * AES;
445
445
  int rc;
@@ -450,8 +450,8 @@ scryptenc_file(FILE * infile, FILE * outfile,
450
450
  return (rc);
451
451
 
452
452
  /* Hash and write the header. */
453
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
454
- HMAC_SHA256_Update(&hctx, header, 96);
453
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
454
+ scrypty_HMAC_SHA256_Update(&hctx, header, 96);
455
455
  if (fwrite(header, 96, 1, outfile) != 1)
456
456
  return (12);
457
457
 
@@ -461,24 +461,24 @@ scryptenc_file(FILE * infile, FILE * outfile,
461
461
  */
462
462
  if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
463
463
  return (5);
464
- if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
464
+ if ((AES = scrypty_crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
465
465
  return (6);
466
466
  do {
467
467
  if ((readlen = fread(buf, 1, ENCBLOCK, infile)) == 0)
468
468
  break;
469
- crypto_aesctr_stream(AES, buf, buf, readlen);
470
- HMAC_SHA256_Update(&hctx, buf, readlen);
469
+ scrypty_crypto_aesctr_stream(AES, buf, buf, readlen);
470
+ scrypty_HMAC_SHA256_Update(&hctx, buf, readlen);
471
471
  if (fwrite(buf, 1, readlen, outfile) < readlen)
472
472
  return (12);
473
473
  } while (1);
474
- crypto_aesctr_free(AES);
474
+ scrypty_crypto_aesctr_free(AES);
475
475
 
476
476
  /* Did we exit the loop due to a read error? */
477
477
  if (ferror(infile))
478
478
  return (13);
479
479
 
480
480
  /* Compute the final HMAC and output it. */
481
- HMAC_SHA256_Final(hbuf, &hctx);
481
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
482
482
  if (fwrite(hbuf, 32, 1, outfile) != 1)
483
483
  return (12);
484
484
 
@@ -491,13 +491,13 @@ scryptenc_file(FILE * infile, FILE * outfile,
491
491
  }
492
492
 
493
493
  /**
494
- * scryptdec_file(infile, outfile, passwd, passwdlen,
494
+ * scrypty_scryptdec_file(infile, outfile, passwd, passwdlen,
495
495
  * maxmem, maxmemfrac, maxtime):
496
496
  * Read a stream from infile and decrypt it, writing the resulting stream to
497
497
  * outfile.
498
498
  */
499
499
  int
500
- scryptdec_file(FILE * infile, FILE * outfile,
500
+ scrypty_scryptdec_file(FILE * infile, FILE * outfile,
501
501
  const uint8_t * passwd, size_t passwdlen,
502
502
  size_t maxmem, double maxmemfrac, double maxtime)
503
503
  {
@@ -509,7 +509,7 @@ scryptdec_file(FILE * infile, FILE * outfile,
509
509
  uint8_t * key_hmac = &dk[32];
510
510
  size_t buflen = 0;
511
511
  size_t readlen;
512
- HMAC_SHA256_CTX hctx;
512
+ scrypty_HMAC_SHA256_CTX hctx;
513
513
  AES_KEY key_enc_exp;
514
514
  struct crypto_aesctr * AES;
515
515
  int rc;
@@ -548,8 +548,8 @@ scryptdec_file(FILE * infile, FILE * outfile,
548
548
  return (rc);
549
549
 
550
550
  /* Start hashing with the header. */
551
- HMAC_SHA256_Init(&hctx, key_hmac, 32);
552
- HMAC_SHA256_Update(&hctx, header, 96);
551
+ scrypty_HMAC_SHA256_Init(&hctx, key_hmac, 32);
552
+ scrypty_HMAC_SHA256_Update(&hctx, header, 96);
553
553
 
554
554
  /*
555
555
  * We don't know how long the encrypted data block is (we can't know,
@@ -559,7 +559,7 @@ scryptdec_file(FILE * infile, FILE * outfile,
559
559
  */
560
560
  if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
561
561
  return (5);
562
- if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
562
+ if ((AES = scrypty_crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
563
563
  return (6);
564
564
  do {
565
565
  /* Read data until we have more than 32 bytes of it. */
@@ -574,8 +574,8 @@ scryptdec_file(FILE * infile, FILE * outfile,
574
574
  * Decrypt, hash, and output everything except the last 32
575
575
  * bytes out of what we have in our buffer.
576
576
  */
577
- HMAC_SHA256_Update(&hctx, buf, buflen - 32);
578
- crypto_aesctr_stream(AES, buf, buf, buflen - 32);
577
+ scrypty_HMAC_SHA256_Update(&hctx, buf, buflen - 32);
578
+ scrypty_crypto_aesctr_stream(AES, buf, buf, buflen - 32);
579
579
  if (fwrite(buf, 1, buflen - 32, outfile) < buflen - 32)
580
580
  return (12);
581
581
 
@@ -583,7 +583,7 @@ scryptdec_file(FILE * infile, FILE * outfile,
583
583
  memmove(buf, &buf[buflen - 32], 32);
584
584
  buflen = 32;
585
585
  } while (1);
586
- crypto_aesctr_free(AES);
586
+ scrypty_crypto_aesctr_free(AES);
587
587
 
588
588
  /* Did we exit the loop due to a read error? */
589
589
  if (ferror(infile))
@@ -594,7 +594,7 @@ scryptdec_file(FILE * infile, FILE * outfile,
594
594
  return (7);
595
595
 
596
596
  /* Verify signature. */
597
- HMAC_SHA256_Final(hbuf, &hctx);
597
+ scrypty_HMAC_SHA256_Final(hbuf, &hctx);
598
598
  if (memcmp(hbuf, buf, 32))
599
599
  return (7);
600
600
 
data/ext/scryptenc.h CHANGED
@@ -73,40 +73,40 @@
73
73
  */
74
74
 
75
75
  /**
76
- * scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
76
+ * scrypty_scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
77
77
  * maxmem, maxmemfrac, maxtime):
78
78
  * Encrypt inbuflen bytes from inbuf, writing the resulting inbuflen + 128
79
79
  * bytes to outbuf.
80
80
  */
81
- int scryptenc_buf(const uint8_t *, size_t, uint8_t *,
81
+ int scrypty_scryptenc_buf(const uint8_t *, size_t, uint8_t *,
82
82
  const uint8_t *, size_t, size_t, double, double);
83
83
 
84
84
  /**
85
- * scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
85
+ * scrypty_scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
86
86
  * maxmem, maxmemfrac, maxtime):
87
87
  * Decrypt inbuflen bytes from inbuf, writing the result into outbuf and the
88
88
  * decrypted data length to outlen. The allocated length of outbuf must
89
89
  * be at least inbuflen.
90
90
  */
91
- int scryptdec_buf(const uint8_t *, size_t, uint8_t *, size_t *,
91
+ int scrypty_scryptdec_buf(const uint8_t *, size_t, uint8_t *, size_t *,
92
92
  const uint8_t *, size_t, size_t, double, double);
93
93
 
94
94
  /**
95
- * scryptenc_file(infile, outfile, passwd, passwdlen,
95
+ * scrypty_scryptenc_file(infile, outfile, passwd, passwdlen,
96
96
  * maxmem, maxmemfrac, maxtime):
97
97
  * Read a stream from infile and encrypt it, writing the resulting stream to
98
98
  * outfile.
99
99
  */
100
- int scryptenc_file(FILE *, FILE *, const uint8_t *, size_t,
100
+ int scrypty_scryptenc_file(FILE *, FILE *, const uint8_t *, size_t,
101
101
  size_t, double, double);
102
102
 
103
103
  /**
104
- * scryptdec_file(infile, outfile, passwd, passwdlen,
104
+ * scrypty_scryptdec_file(infile, outfile, passwd, passwdlen,
105
105
  * maxmem, maxmemfrac, maxtime):
106
106
  * Read a stream from infile and decrypt it, writing the resulting stream to
107
107
  * outfile.
108
108
  */
109
- int scryptdec_file(FILE *, FILE *, const uint8_t *, size_t,
109
+ int scrypty_scryptdec_file(FILE *, FILE *, const uint8_t *, size_t,
110
110
  size_t, double, double);
111
111
 
112
112
  #endif /* !_SCRYPTENC_H_ */
@@ -122,12 +122,12 @@ getclockdiff(struct timespec * st, double * diffd)
122
122
  }
123
123
 
124
124
  /**
125
- * scryptenc_cpuperf(opps):
125
+ * scrypty_scryptenc_cpuperf(opps):
126
126
  * Estimate the number of salsa20/8 cores which can be executed per second,
127
127
  * and return the value via opps.
128
128
  */
129
129
  int
130
- scryptenc_cpuperf(double * opps)
130
+ scrypty_scryptenc_cpuperf(double * opps)
131
131
  {
132
132
  struct timespec st;
133
133
  double resd, diffd;
@@ -146,7 +146,7 @@ scryptenc_cpuperf(double * opps)
146
146
  return (2);
147
147
  do {
148
148
  /* Do an scrypt. */
149
- if (crypto_scrypt(NULL, 0, NULL, 0, 16, 1, 1, NULL, 0))
149
+ if (scrypty_crypto_scrypt(NULL, 0, NULL, 0, 16, 1, 1, NULL, 0))
150
150
  return (3);
151
151
 
152
152
  /* Has the clock ticked? */
@@ -161,7 +161,7 @@ scryptenc_cpuperf(double * opps)
161
161
  return (2);
162
162
  do {
163
163
  /* Do an scrypt. */
164
- if (crypto_scrypt(NULL, 0, NULL, 0, 128, 1, 1, NULL, 0))
164
+ if (scrypty_crypto_scrypt(NULL, 0, NULL, 0, 128, 1, 1, NULL, 0))
165
165
  return (3);
166
166
 
167
167
  /* We invoked the salsa20/8 core 512 times. */
@@ -30,10 +30,10 @@
30
30
  #define _SCRYPTENC_CPUPERF_H_
31
31
 
32
32
  /**
33
- * scryptenc_cpuperf(opps):
33
+ * scrypty_scryptenc_cpuperf(opps):
34
34
  * Estimate the number of salsa20/8 cores which can be executed per second,
35
35
  * and return the value via opps.
36
36
  */
37
- int scryptenc_cpuperf(double *);
37
+ int scrypty_scryptenc_cpuperf(double *);
38
38
 
39
39
  #endif /* !_SCRYPTENC_CPUPERF_H_ */
data/ext/sha256.c CHANGED
@@ -190,7 +190,7 @@ static unsigned char PAD[64] = {
190
190
 
191
191
  /* Add padding and terminating bit-count. */
192
192
  static void
193
- SHA256_Pad(SHA256_CTX * ctx)
193
+ SHA256_Pad(scrypty_SHA256_CTX * ctx)
194
194
  {
195
195
  unsigned char len[8];
196
196
  uint32_t r, plen;
@@ -204,15 +204,15 @@ SHA256_Pad(SHA256_CTX * ctx)
204
204
  /* Add 1--64 bytes so that the resulting length is 56 mod 64 */
205
205
  r = (ctx->count[1] >> 3) & 0x3f;
206
206
  plen = (r < 56) ? (56 - r) : (120 - r);
207
- SHA256_Update(ctx, PAD, (size_t)plen);
207
+ scrypty_SHA256_Update(ctx, PAD, (size_t)plen);
208
208
 
209
209
  /* Add the terminating bit-count */
210
- SHA256_Update(ctx, len, 8);
210
+ scrypty_SHA256_Update(ctx, len, 8);
211
211
  }
212
212
 
213
213
  /* SHA-256 initialization. Begins a SHA-256 operation. */
214
214
  void
215
- SHA256_Init(SHA256_CTX * ctx)
215
+ scrypty_SHA256_Init(scrypty_SHA256_CTX * ctx)
216
216
  {
217
217
 
218
218
  /* Zero bits processed so far */
@@ -231,7 +231,7 @@ SHA256_Init(SHA256_CTX * ctx)
231
231
 
232
232
  /* Add bytes into the hash */
233
233
  void
234
- SHA256_Update(SHA256_CTX * ctx, const void *in, size_t len)
234
+ scrypty_SHA256_Update(scrypty_SHA256_CTX * ctx, const void *in, size_t len)
235
235
  {
236
236
  uint32_t bitlen[2];
237
237
  uint32_t r;
@@ -277,7 +277,7 @@ SHA256_Update(SHA256_CTX * ctx, const void *in, size_t len)
277
277
  * and clears the context state.
278
278
  */
279
279
  void
280
- SHA256_Final(unsigned char digest[32], SHA256_CTX * ctx)
280
+ scrypty_SHA256_Final(unsigned char digest[32], scrypty_SHA256_CTX * ctx)
281
281
  {
282
282
 
283
283
  /* Add padding */
@@ -292,7 +292,7 @@ SHA256_Final(unsigned char digest[32], SHA256_CTX * ctx)
292
292
 
293
293
  /* Initialize an HMAC-SHA256 operation with the given key. */
294
294
  void
295
- HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
295
+ scrypty_HMAC_SHA256_Init(scrypty_HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
296
296
  {
297
297
  unsigned char pad[64];
298
298
  unsigned char khash[32];
@@ -301,26 +301,26 @@ HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
301
301
 
302
302
  /* If Klen > 64, the key is really SHA256(K). */
303
303
  if (Klen > 64) {
304
- SHA256_Init(&ctx->ictx);
305
- SHA256_Update(&ctx->ictx, K, Klen);
306
- SHA256_Final(khash, &ctx->ictx);
304
+ scrypty_SHA256_Init(&ctx->ictx);
305
+ scrypty_SHA256_Update(&ctx->ictx, K, Klen);
306
+ scrypty_SHA256_Final(khash, &ctx->ictx);
307
307
  K = khash;
308
308
  Klen = 32;
309
309
  }
310
310
 
311
311
  /* Inner SHA256 operation is SHA256(K xor [block of 0x36] || data). */
312
- SHA256_Init(&ctx->ictx);
312
+ scrypty_SHA256_Init(&ctx->ictx);
313
313
  memset(pad, 0x36, 64);
314
314
  for (i = 0; i < Klen; i++)
315
315
  pad[i] ^= K[i];
316
- SHA256_Update(&ctx->ictx, pad, 64);
316
+ scrypty_SHA256_Update(&ctx->ictx, pad, 64);
317
317
 
318
318
  /* Outer SHA256 operation is SHA256(K xor [block of 0x5c] || hash). */
319
- SHA256_Init(&ctx->octx);
319
+ scrypty_SHA256_Init(&ctx->octx);
320
320
  memset(pad, 0x5c, 64);
321
321
  for (i = 0; i < Klen; i++)
322
322
  pad[i] ^= K[i];
323
- SHA256_Update(&ctx->octx, pad, 64);
323
+ scrypty_SHA256_Update(&ctx->octx, pad, 64);
324
324
 
325
325
  /* Clean the stack. */
326
326
  memset(khash, 0, 32);
@@ -328,42 +328,42 @@ HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
328
328
 
329
329
  /* Add bytes to the HMAC-SHA256 operation. */
330
330
  void
331
- HMAC_SHA256_Update(HMAC_SHA256_CTX * ctx, const void *in, size_t len)
331
+ scrypty_HMAC_SHA256_Update(scrypty_HMAC_SHA256_CTX * ctx, const void *in, size_t len)
332
332
  {
333
333
 
334
334
  /* Feed data to the inner SHA256 operation. */
335
- SHA256_Update(&ctx->ictx, in, len);
335
+ scrypty_SHA256_Update(&ctx->ictx, in, len);
336
336
  }
337
337
 
338
338
  /* Finish an HMAC-SHA256 operation. */
339
339
  void
340
- HMAC_SHA256_Final(unsigned char digest[32], HMAC_SHA256_CTX * ctx)
340
+ scrypty_HMAC_SHA256_Final(unsigned char digest[32], scrypty_HMAC_SHA256_CTX * ctx)
341
341
  {
342
342
  unsigned char ihash[32];
343
343
 
344
344
  /* Finish the inner SHA256 operation. */
345
- SHA256_Final(ihash, &ctx->ictx);
345
+ scrypty_SHA256_Final(ihash, &ctx->ictx);
346
346
 
347
347
  /* Feed the inner hash to the outer SHA256 operation. */
348
- SHA256_Update(&ctx->octx, ihash, 32);
348
+ scrypty_SHA256_Update(&ctx->octx, ihash, 32);
349
349
 
350
350
  /* Finish the outer SHA256 operation. */
351
- SHA256_Final(digest, &ctx->octx);
351
+ scrypty_SHA256_Final(digest, &ctx->octx);
352
352
 
353
353
  /* Clean the stack. */
354
354
  memset(ihash, 0, 32);
355
355
  }
356
356
 
357
357
  /**
358
- * PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
358
+ * scrypty_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
359
359
  * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
360
360
  * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
361
361
  */
362
362
  void
363
- PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
363
+ scrypty_PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
364
364
  size_t saltlen, uint64_t c, uint8_t * buf, size_t dkLen)
365
365
  {
366
- HMAC_SHA256_CTX PShctx, hctx;
366
+ scrypty_HMAC_SHA256_CTX PShctx, hctx;
367
367
  size_t i;
368
368
  uint8_t ivec[4];
369
369
  uint8_t U[32];
@@ -373,8 +373,8 @@ PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
373
373
  size_t clen;
374
374
 
375
375
  /* Compute HMAC state after processing P and S. */
376
- HMAC_SHA256_Init(&PShctx, passwd, passwdlen);
377
- HMAC_SHA256_Update(&PShctx, salt, saltlen);
376
+ scrypty_HMAC_SHA256_Init(&PShctx, passwd, passwdlen);
377
+ scrypty_HMAC_SHA256_Update(&PShctx, salt, saltlen);
378
378
 
379
379
  /* Iterate through the blocks. */
380
380
  for (i = 0; i * 32 < dkLen; i++) {
@@ -382,18 +382,18 @@ PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
382
382
  be32enc(ivec, (uint32_t)(i + 1));
383
383
 
384
384
  /* Compute U_1 = PRF(P, S || INT(i)). */
385
- memcpy(&hctx, &PShctx, sizeof(HMAC_SHA256_CTX));
386
- HMAC_SHA256_Update(&hctx, ivec, 4);
387
- HMAC_SHA256_Final(U, &hctx);
385
+ memcpy(&hctx, &PShctx, sizeof(scrypty_HMAC_SHA256_CTX));
386
+ scrypty_HMAC_SHA256_Update(&hctx, ivec, 4);
387
+ scrypty_HMAC_SHA256_Final(U, &hctx);
388
388
 
389
389
  /* T_i = U_1 ... */
390
390
  memcpy(T, U, 32);
391
391
 
392
392
  for (j = 2; j <= c; j++) {
393
393
  /* Compute U_j. */
394
- HMAC_SHA256_Init(&hctx, passwd, passwdlen);
395
- HMAC_SHA256_Update(&hctx, U, 32);
396
- HMAC_SHA256_Final(U, &hctx);
394
+ scrypty_HMAC_SHA256_Init(&hctx, passwd, passwdlen);
395
+ scrypty_HMAC_SHA256_Update(&hctx, U, 32);
396
+ scrypty_HMAC_SHA256_Final(U, &hctx);
397
397
 
398
398
  /* ... xor U_j ... */
399
399
  for (k = 0; k < 32; k++)
@@ -408,5 +408,5 @@ PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
408
408
  }
409
409
 
410
410
  /* Clean PShctx, since we never called _Final on it. */
411
- memset(&PShctx, 0, sizeof(HMAC_SHA256_CTX));
411
+ memset(&PShctx, 0, sizeof(scrypty_HMAC_SHA256_CTX));
412
412
  }
data/ext/sha256.h CHANGED
@@ -33,30 +33,30 @@
33
33
 
34
34
  #include <stdint.h>
35
35
 
36
- typedef struct SHA256Context {
36
+ typedef struct scrypty_SHA256Context {
37
37
  uint32_t state[8];
38
38
  uint32_t count[2];
39
39
  unsigned char buf[64];
40
- } SHA256_CTX;
40
+ } scrypty_SHA256_CTX;
41
41
 
42
- typedef struct HMAC_SHA256Context {
43
- SHA256_CTX ictx;
44
- SHA256_CTX octx;
45
- } HMAC_SHA256_CTX;
42
+ typedef struct scrypty_HMAC_SHA256Context {
43
+ scrypty_SHA256_CTX ictx;
44
+ scrypty_SHA256_CTX octx;
45
+ } scrypty_HMAC_SHA256_CTX;
46
46
 
47
- void SHA256_Init(SHA256_CTX *);
48
- void SHA256_Update(SHA256_CTX *, const void *, size_t);
49
- void SHA256_Final(unsigned char [32], SHA256_CTX *);
50
- void HMAC_SHA256_Init(HMAC_SHA256_CTX *, const void *, size_t);
51
- void HMAC_SHA256_Update(HMAC_SHA256_CTX *, const void *, size_t);
52
- void HMAC_SHA256_Final(unsigned char [32], HMAC_SHA256_CTX *);
47
+ void scrypty_SHA256_Init(scrypty_SHA256_CTX *);
48
+ void scrypty_SHA256_Update(scrypty_SHA256_CTX *, const void *, size_t);
49
+ void scrypty_SHA256_Final(unsigned char [32], scrypty_SHA256_CTX *);
50
+ void scrypty_HMAC_SHA256_Init(scrypty_HMAC_SHA256_CTX *, const void *, size_t);
51
+ void scrypty_HMAC_SHA256_Update(scrypty_HMAC_SHA256_CTX *, const void *, size_t);
52
+ void scrypty_HMAC_SHA256_Final(unsigned char [32], scrypty_HMAC_SHA256_CTX *);
53
53
 
54
54
  /**
55
- * PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
55
+ * scrypty_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
56
56
  * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
57
57
  * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
58
58
  */
59
- void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
59
+ void scrypty_PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
60
60
  uint64_t, uint8_t *, size_t);
61
61
 
62
62
  #endif /* !_SHA256_H_ */
@@ -1,3 +1,3 @@
1
1
  module Scrypty
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrypty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2012-12-10 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Uses the scrypt algorithm by Colin Percival to encrypt/decrypt data
15
15
  email: