return 0;
}
+static const char alphanum_plain_table[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+
+int gen_rand_alphanumeric_plain(CephContext *cct, char *dest, int size) /* size should be the required string size + 1 */
+{
+ int ret = get_random_bytes(dest, size);
+ if (ret < 0) {
+ lderr(cct) << "cannot get random bytes: " << cpp_strerror(-ret) << dendl;
+ return ret;
+ }
+
+ int i;
+ for (i=0; i<size - 1; i++) {
+ int pos = (unsigned)dest[i];
+ dest[i] = alphanum_plain_table[pos % (sizeof(alphanum_plain_table) - 1)];
+ }
+ dest[i] = '\0';
+
+ return 0;
+}
+
int NameVal::parse()
{
int delim_pos = str.find('=');
extern int gen_rand_alphanumeric_lower(CephContext *cct, char *dest, int size);
extern int gen_rand_alphanumeric_upper(CephContext *cct, char *dest, int size);
extern int gen_rand_alphanumeric_no_underscore(CephContext *cct, char *dest, int size);
+extern int gen_rand_alphanumeric_plain(CephContext *cct, char *dest, int size);
extern int gen_rand_alphanumeric_lower(CephContext *cct, string *str, int length);
} else if (gen_secret) {
char secret_key_buf[SECRET_KEY_LEN + 1];
- ret = gen_rand_base64(g_ceph_context, secret_key_buf, sizeof(secret_key_buf));
+ ret = gen_rand_alphanumeric_plain(g_ceph_context, secret_key_buf, sizeof(secret_key_buf));
if (ret < 0) {
set_err_msg(err_msg, "unable to generate secret key");
return ret;
int ret;
int key_buf_size = sizeof(secret_key_buf);
- ret = gen_rand_base64(g_ceph_context, secret_key_buf, key_buf_size);
+ ret = gen_rand_alphanumeric_plain(g_ceph_context, secret_key_buf, key_buf_size);
if (ret < 0) {
set_err_msg(err_msg, "unable to generate secret key");
return ret;