Changeset 5187:30e52659b213 in roaraudio for roarclients/roarctl.c
- Timestamp:
- 10/22/11 22:58:02 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roarclients/roarctl.c
r5185 r5187 68 68 " --list-libstandards - Gets list of library (libroar) supported standards\n" 69 69 " --enum-servers - Show a list of possible servers\n" 70 " --hash-password - Hash a password and exit\n" 70 71 ); 71 72 … … 139 140 } 140 141 142 static void _bin2hex(char * out, char * in, size_t inlen, int uppercase) { 143 const char * tab = uppercase ? "0123456789ABCDEF" : "0123456789abcdef"; 144 unsigned char c; 145 int nib0, nib1; 146 147 for (; inlen; inlen--) { 148 c = *(in++); 149 nib0 = (c & 0x0F) >> 0; 150 nib1 = (c & 0xF0) >> 4; 151 // printf("inlen=%zu, c=%u, nibs={%i, %i}\n", inlen, (unsigned)c, nib1, nib0); 152 *(out++) = tab[nib1]; 153 *(out++) = tab[nib0]; 154 } 155 *out = 0; 156 } 157 158 int hash_password (void) { 159 char * pw = NULL; 160 char salt[8]; 161 char digest[24]; 162 char out[2*(8+24)+3+5+1] = "tiger:"; 163 164 if ( roar_passwd_simple_ask_pw(&pw, "Password to hash?", NULL) == -1 ) 165 return -1; 166 167 roar_random_gen_nonce(salt, sizeof(salt)); 168 169 roar_hash_salted_buffer(digest, pw, roar_mm_strlen(pw), ROAR_HT_TIGER, salt, sizeof(salt)); 170 171 roar_mm_free(pw); 172 173 _bin2hex(out+6, salt, sizeof(salt), 0); 174 out[6+16] = ':'; 175 _bin2hex(out+6+16+1, digest, sizeof(digest), 0); 176 177 out[sizeof(out)-1] = 0; 178 179 printf("Password: %s\n", out); 180 181 return 0; 182 } 183 141 184 int enum_servers (void) { 142 185 struct roar_server * list; … … 1102 1145 enum_servers(); 1103 1146 return 0; 1147 } else if ( strcmp(k, "--hash-password") == 0 ) { 1148 hash_password(); 1149 return 0; 1104 1150 } else if ( *k == '-' ) { 1105 1151 fprintf(stderr, "Error: unknown argument: %s\n", k);
Note: See TracChangeset
for help on using the changeset viewer.