#include <XrdSutRndm.hh>
Definition at line 43 of file XrdSutRndm.hh.
◆ XrdSutRndm()
XrdSutRndm::XrdSutRndm |
( |
| ) |
|
|
inline |
◆ ~XrdSutRndm()
virtual XrdSutRndm::~XrdSutRndm |
( |
| ) |
|
|
inlinevirtual |
◆ GetBuffer()
char * XrdSutRndm::GetBuffer |
( |
int | len, |
|
|
int | opt = -1 ) |
|
static |
Definition at line 179 of file XrdSutRndm.cc.
180{
181
182
183
184
185
186
187
188
189
190 EPNAME(
"Rndm::GetBuffer");
191
192 DEBUG(
"enter: len: " <<len);
193
194
198 }
199
200
201 char *buf = new char[len];
202 if (!buf) {
203 errno = ENOSPC;
204 return 0;
205 }
206
207
208 bool filter = (opt >= 0 && opt <= 3);
209
212 while (k < len) {
213 frnd = rand();
214 for (m = 0; m < 32; m += 8) {
215 i = 0xFF & (frnd >> m);
216 bool keep = 1;
217 if (filter) {
218 j = i / 32;
219 l = i - j * 32;
221 }
222 if (keep) {
223 buf[k] = i;
224 k++;
225 }
226 if (k == len)
227 break;
228 }
229 }
230
231 return buf;
232}
static kXR_int32 XrdSutCharMsk[4][4]
References DEBUG, EPNAME, fgInit, Init(), and XrdSutCharMsk.
Referenced by XrdCryptosslCipher::XrdCryptosslCipher(), and XrdCryptosslFactory::XrdCryptosslFactory().
◆ GetRndmTag()
Definition at line 235 of file XrdSutRndm.cc.
236{
237
238
239
240
241
243}
static int GetString(int opt, int len, XrdOucString &s)
References GetString().
◆ GetString() [1/2]
int XrdSutRndm::GetString |
( |
const char * | copt, |
|
|
int | len, |
|
|
XrdOucString & | s ) |
|
static |
Definition at line 97 of file XrdSutRndm.cc.
98{
99
100
101
102
103
104
105
106
107
108 int opt = 0;
109 if (!strncasecmp(copt,"LetNum",6))
110 opt = 1;
111 else if (!strncasecmp(copt,"Hex",3))
112 opt = 2;
113 else if (!strncasecmp(copt,"Crypt",5))
114 opt = 3;
115
117}
References GetString().
◆ GetString() [2/2]
int XrdSutRndm::GetString |
( |
int | opt, |
|
|
int | len, |
|
|
XrdOucString & | s ) |
|
static |
Definition at line 120 of file XrdSutRndm.cc.
121{
122
123
124
125
126
127
128 EPNAME(
"Rndm::GetString");
129
130 const char *cOpt[4] = { "Any", "LetNum", "Hex", "Crypt" };
131
132
133 if (opt < 0 || opt > 3) {
134 opt = 0;
135 DEBUG(
"unknown option: " <<opt <<
": assume 0");
136 }
137 DEBUG(
"enter: len: " <<len <<
" (type: " <<cOpt[opt] <<
")");
138
139
142
143
144 char *buf = new char[len+1];
145 if (!buf) {
146 errno = ENOSPC;
147 return -1;
148 }
149
152 while (k < len) {
153 frnd = rand();
154 for (m = 7; m < 32; m += 7) {
155 i = 0x7F & (frnd >> m);
156 j = i / 32;
157 l = i - j * 32;
159 buf[k] = i;
160 k++;
161 }
162 if (k == len)
163 break;
164 }
165 }
166
167
168 buf[len] = 0;
169 DEBUG(
"got: " <<buf);
170
171
172 str = buf;
173 delete[] buf;
174
175 return 0;
176}
References DEBUG, EPNAME, fgInit, Init(), and XrdSutCharMsk.
Referenced by AddPassword(), GetRndmTag(), GetString(), main(), ParseArguments(), and XrdSutResolve().
◆ GetUInt()
unsigned int XrdSutRndm::GetUInt |
( |
| ) |
|
|
static |
◆ Init()
bool XrdSutRndm::Init |
( |
bool | force = 0 | ) |
|
|
static |
Definition at line 62 of file XrdSutRndm.cc.
63{
64
65
66
68
69 const char *randdev = "/dev/urandom";
70 bool rc = 0;
71
72
74 return 1;
75
76 int fd;
77 unsigned int seed = 0;
78 if ((fd =
open(randdev, O_RDONLY)) != -1) {
79 DEBUG(
"taking seed from " <<randdev);
80 if (
read(fd, &seed,
sizeof(seed)) ==
sizeof(seed)) rc = 1;
82 }
83 if (rc == 0) {
84 DEBUG(randdev <<
" not available: using time()");
85 seed = time(0);
86 rc = 1;
87 }
88 srand(seed);
89
90
92
93 return rc;
94}
References close, DEBUG, EPNAME, fgInit, open, and read.
Referenced by XrdSutRndm(), GetBuffer(), GetString(), GetUInt(), main(), and ParseArguments().
◆ fgInit
bool XrdSutRndm::fgInit = 0 |
|
static |
The documentation for this class was generated from the following files: