author | April Chin <april.chin@oracle.com> |
Wed, 30 May 2012 10:46:29 -0700 | |
changeset 840 | 926eb95ceab3 |
parent 346 | d28be18217b8 |
permissions | -rw-r--r-- |
346
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
1 |
--- otp_src_R12B-5/lib/ssh/src/ssh_connection_handler.erl Mon Sep 1 14:51:52 2008 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
2 |
+++ otp_src_R12B-5-patch/lib/ssh/src/ssh_connection_handler.erl Thu Jun 23 10:56:21 2011 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
3 |
@@ -94,8 +94,6 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
4 |
%% initialize. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
5 |
%%-------------------------------------------------------------------- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
6 |
init([Role, Manager, Socket, SshOpts]) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
7 |
- {A,B,C} = erlang:now(), |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
8 |
- random:seed(A, B, C), |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
9 |
{NumVsn, StrVsn} = ssh_transport:versions(Role, SshOpts), |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
10 |
ssh_bits:install_messages(ssh_transport:transport_messages(NumVsn)), |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
11 |
{Protocol, Callback, CloseTag} = |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
12 |
--- otp_src_R12B-5/lib/crypto/c_src/crypto_drv.c Tue Nov 4 11:52:34 2008 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
13 |
+++ otp_src_R12B-5-patch/lib/crypto/c_src/crypto_drv.c Thu Jun 23 11:33:31 2011 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
14 |
@@ -208,6 +208,9 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
15 |
#define DRV_SHA512_FINAL 58 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
16 |
#endif |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
17 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
18 |
+#define DRV_STRONG_RAND_BYTES 59 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
19 |
+#define DRV_STRONG_RAND_MPINT 60 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
20 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
21 |
/* #define DRV_CBC_IDEA_ENCRYPT 34 */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
22 |
/* #define DRV_CBC_IDEA_DECRYPT 35 */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
23 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
24 |
@@ -604,7 +607,39 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
25 |
bin->orig_bytes[0] |= or_mask; /* bottommask */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
26 |
return rlen; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
27 |
break; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
28 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
29 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
30 |
+ case DRV_STRONG_RAND_BYTES: |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
31 |
+ /* buf = <<rlen:32/integer>> */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
32 |
+ if (len != 4) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
33 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
34 |
+ rlen = get_int32(buf); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
35 |
+ *rbuf = (char *)(bin = driver_alloc_binary(rlen)); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
36 |
+ if (bin==NULL) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
37 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
38 |
+ if (RAND_bytes(bin->orig_bytes,rlen) != 1) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
39 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
40 |
+ return rlen; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
41 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
42 |
+ case DRV_STRONG_RAND_MPINT: |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
43 |
+ /* buf = <<rlen:32/integer,topmask:8/integer,bottommask:8/integer>> */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
44 |
+ if (len != 6) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
45 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
46 |
+ bn_rand = BN_new(); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
47 |
+ if (! bn_rand ) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
48 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
49 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
50 |
+ if (!BN_rand(bn_rand, get_int32(buf), buf[4], buf[5])) { |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
51 |
+ BN_free(bn_rand); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
52 |
+ return -1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
53 |
+ } |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
54 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
55 |
+ dlen = BN_num_bytes(bn_rand); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
56 |
+ *rbuf = (char *)(bin = driver_alloc_binary(dlen)); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
57 |
+ put_int32(bin->orig_bytes, dlen); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
58 |
+ BN_bn2bin(bn_rand, bin->orig_bytes+4); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
59 |
+ BN_free(bn_rand); |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
60 |
+ return 1; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
61 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
62 |
case DRV_RAND_UNIFORM: |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
63 |
/* buf = <<from_len:32/integer,bn_from:from_len/binary, * |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
64 |
* to_len:32/integer,bn_to:to_len/binary>> */ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
65 |
--- otp_src_R12B-5/lib/crypto/src/crypto.erl Tue Nov 4 11:52:34 2008 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
66 |
+++ otp_src_R12B-5-patch/lib/crypto/src/crypto.erl Thu Jun 23 11:35:29 2011 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
67 |
@@ -40,6 +40,7 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
68 |
-export([rsa_private_encrypt/3, rsa_public_decrypt/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
69 |
-export([dh_generate_key/1, dh_generate_key/2, dh_compute_key/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
70 |
-export([rand_bytes/1, rand_bytes/3, rand_uniform/2]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
71 |
+-export([strong_rand_bytes/1, strong_rand_mpint/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
72 |
-export([mod_exp/3, mpint/1, erlint/1]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
73 |
%% -export([idea_cbc_encrypt/3, idea_cbc_decrypt/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
74 |
-export([aes_cbc_128_encrypt/3, aes_cbc_128_decrypt/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
75 |
@@ -110,6 +111,8 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
76 |
%% -define(SHA512_UPDATE, 57). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
77 |
%% -define(SHA512_FINAL, 58). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
78 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
79 |
+-define(STRONG_RAND_BYTES, 59). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
80 |
+-define(STRONG_RAND_MPINT, 60). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
81 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
82 |
%% -define(IDEA_CBC_ENCRYPT, 34). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
83 |
%% -define(IDEA_CBC_DECRYPT, 35). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
84 |
@@ -125,6 +128,8 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
85 |
des_ede3_cbc_encrypt, des_ede3_cbc_decrypt, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
86 |
aes_cfb_128_encrypt, aes_cfb_128_decrypt, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
87 |
rand_bytes, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
88 |
+ strong_rand_bytes, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
89 |
+ strong_rand_mpint, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
90 |
rand_uniform, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
91 |
mod_exp, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
92 |
dss_verify,dss_sign, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
93 |
@@ -321,10 +326,19 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
94 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
95 |
rand_bytes(Bytes) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
96 |
rand_bytes(Bytes, 0, 0). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
97 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
98 |
+strong_rand_bytes(Bytes) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
99 |
+ control(?STRONG_RAND_BYTES,[<<Bytes:32/integer>>]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
100 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
101 |
rand_bytes(Bytes, Topmask, Bottommask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
102 |
control(?RAND_BYTES,[<<Bytes:32/integer, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
103 |
Topmask:8/integer, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
104 |
Bottommask:8/integer>>]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
105 |
+ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
106 |
+strong_rand_mpint(Bits, Top, Bottom) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
107 |
+ control(?STRONG_RAND_MPINT,[<<Bits:32/integer, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
108 |
+ Top:8/integer, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
109 |
+ Bottom:8/integer>>]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
110 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
111 |
rand_uniform(From,To) when is_binary(From), is_binary(To) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
112 |
case control(?RAND_UNIFORM,[From,To]) of |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
113 |
--- otp_src_R12B-5/lib/ssh/src/ssh_bits.erl Mon Sep 1 14:51:49 2008 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
114 |
+++ otp_src_R12B-5-patch/lib/ssh/src/ssh_bits.erl Thu Jun 23 10:56:25 2011 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
115 |
@@ -33,7 +33,7 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
116 |
%% integer utils |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
117 |
-export([isize/1]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
118 |
-export([irandom/1, irandom/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
119 |
--export([random/1, random/3]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
120 |
+-export([random/1]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
121 |
-export([xor_bits/2, fill_bits/2]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
122 |
-export([i2bin/2, bin2i/1]). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
123 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
124 |
@@ -400,9 +400,6 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
125 |
irandom(Bits) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
126 |
irandom(Bits, 1, 0). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
127 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
128 |
-%% irandom_odd(Bits) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
129 |
-%% irandom(Bits, 1, 1). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
130 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
131 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
132 |
%% irandom(N, Top, Bottom) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
133 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
134 |
@@ -413,22 +410,8 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
135 |
%% Bot = 0 - do not set the least signifcant bit |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
136 |
%% Bot = 1 - set the least signifcant bit (i.e always odd) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
137 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
138 |
-irandom(0, _Top, _Bottom) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
139 |
- 0; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
140 |
-irandom(Bits, Top, Bottom) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
141 |
- Bytes = (Bits+7) div 8, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
142 |
- Skip = (8-(Bits rem 8)) rem 8, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
143 |
- TMask = case Top of |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
144 |
- 0 -> 0; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
145 |
- 1 -> 16#80; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
146 |
- 2 -> 16#c0 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
147 |
- end, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
148 |
- BMask = case Bottom of |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
149 |
- 0 -> 0; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
150 |
- 1 -> (1 bsl Skip) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
151 |
- end, |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
152 |
- <<X:Bits/big-unsigned-integer, _:Skip>> = random(Bytes, TMask, BMask), |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
153 |
- X. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
154 |
+irandom(Bits, Top, Bottom) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
155 |
+ crypto:erlint(crypto:strong_rand_mpint(Bits, Top - 1, Bottom)). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
156 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
157 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
158 |
%% random/1 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
159 |
@@ -435,37 +419,9 @@ |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
160 |
%% Generate N random bytes |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
161 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
162 |
random(N) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
163 |
- random(N, 0, 0). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
164 |
+ crypto:strong_rand_bytes(N). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
165 |
|
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
166 |
-random(N, TMask, BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
167 |
- list_to_binary(rnd(N, TMask, BMask)). |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
168 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
169 |
-%% random/3 |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
170 |
-%% random(Bytes, TopMask, BotMask) |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
171 |
-%% where |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
172 |
-%% Bytes is the number of bytes to generate |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
173 |
-%% TopMask is bitwised or'ed to the first byte |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
174 |
-%% BotMask is bitwised or'ed to the last byte |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
175 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
176 |
-rnd(0, _TMask, _BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
177 |
- []; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
178 |
-rnd(1, TMask, BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
179 |
- [(rand8() bor TMask) bor BMask]; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
180 |
-rnd(N, TMask, BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
181 |
- [(rand8() bor TMask) | rnd_n(N-1, BMask)]. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
182 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
183 |
-rnd_n(1, BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
184 |
- [rand8() bor BMask]; |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
185 |
-rnd_n(I, BMask) -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
186 |
- [rand8() | rnd_n(I-1, BMask)]. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
187 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
188 |
-rand8() -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
189 |
- (rand32() bsr 8) band 16#ff. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
190 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
191 |
-rand32() -> |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
192 |
- random:uniform(16#100000000) -1. |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
193 |
- |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
194 |
-%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
195 |
%% Base 64 encode/decode |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
196 |
%% |
d28be18217b8
7056876 move erlang to userland
Milan Jurik <Milan.Jurik@oracle.com>
parents:
diff
changeset
|
197 |