libidav/utils.c

changeset 349
0b4ecadaf3f9
parent 344
72791e299d64
child 372
2e15ff88a0ab
equal deleted inserted replaced
348:b79fb94f9e0a 349:0b4ecadaf3f9
44 #else 44 #else
45 #include <termios.h> 45 #include <termios.h>
46 #define getpasswordchar() getchar() 46 #define getpasswordchar() getchar()
47 #endif 47 #endif
48 48
49 #include "webdav.h"
50 #include "utils.h"
51 #include "crypto.h"
52 #include "session.h"
53
54 /*
49 #include <openssl/hmac.h> 55 #include <openssl/hmac.h>
50 #include <openssl/evp.h> 56 #include <openssl/evp.h>
51 #include <openssl/bio.h> 57 #include <openssl/bio.h>
52 #include <openssl/buffer.h> 58 #include <openssl/buffer.h>
53 #include <openssl/rand.h> 59 #include <openssl/rand.h>
54 60 */
55 #include "webdav.h"
56 #include "utils.h"
57 #include "crypto.h"
58 #include "session.h"
59 61
60 static size_t extractval(sstr_t str, char *result, char delim) { 62 static size_t extractval(sstr_t str, char *result, char delim) {
61 size_t n = 0; 63 size_t n = 0;
62 for(size_t i = 0; i < str.length ; i++) { 64 for(size_t i = 0; i < str.length ; i++) {
63 if(isdigit(str.ptr[i])) { 65 if(isdigit(str.ptr[i])) {
488 size_t inlen = strlen(in); 490 size_t inlen = strlen(in);
489 size_t bufsize = (inlen*3) / 4; 491 size_t bufsize = (inlen*3) / 4;
490 char *outbuf = malloc(bufsize+1); 492 char *outbuf = malloc(bufsize+1);
491 *outlen = -1; 493 *outlen = -1;
492 494
493 unsigned char *out = outbuf; 495 unsigned char *out = (unsigned char*)outbuf;
494 496
495 char *end = in + inlen; 497 char *end = in + inlen;
496 char iter = 0; 498 char iter = 0;
497 uint32_t buf = 0; 499 uint32_t buf = 0;
498 size_t len = 0; 500 size_t len = 0;
651 "01234567890" 653 "01234567890"
652 "abcdefghijklmnopqrstuvwxyz" 654 "abcdefghijklmnopqrstuvwxyz"
653 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 655 "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
654 const unsigned char *table = (const unsigned char*)t.ptr; 656 const unsigned char *table = (const unsigned char*)t.ptr;
655 657
658 #ifdef DAV_USE_OPENSSL
656 RAND_bytes(str, 24); 659 RAND_bytes(str, 24);
660 #else
661 dav_rand_bytes(str, 24);
662 #endif
657 for(int i=0;i<24;i++) { 663 for(int i=0;i<24;i++) {
658 int c = str[i] % t.length; 664 int c = str[i] % t.length;
659 str[i] = table[c]; 665 str[i] = table[c];
660 } 666 }
661 667

mercurial