Changeset 5187:30e52659b213 in roaraudio for roarclients


Ignore:
Timestamp:
10/22/11 22:58:02 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added --hash-password

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roarclients/roarctl.c

    r5185 r5187  
    6868        "  --list-libstandards     - Gets list of library (libroar) supported standards\n" 
    6969        "  --enum-servers          - Show a list of possible servers\n" 
     70        "  --hash-password         - Hash a password and exit\n" 
    7071       ); 
    7172 
     
    139140} 
    140141 
     142static 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 
     158int 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 
    141184int enum_servers (void) { 
    142185 struct roar_server * list; 
     
    11021145   enum_servers(); 
    11031146   return 0; 
     1147  } else if ( strcmp(k, "--hash-password") == 0 ) { 
     1148   hash_password(); 
     1149   return 0; 
    11041150  } else if ( *k == '-' ) { 
    11051151   fprintf(stderr, "Error: unknown argument: %s\n", k); 
Note: See TracChangeset for help on using the changeset viewer.