libidav/utils.c

changeset 228
c0175372c35d
parent 225
a297c2e28fa1
child 254
d7c4ba50b7d8
equal deleted inserted replaced
227:bf485439222a 228:c0175372c35d
659 char *str = buf->space; 659 char *str = buf->space;
660 free(buf); // only free the UcxBuffer struct 660 free(buf); // only free the UcxBuffer struct
661 return str; 661 return str;
662 } 662 }
663 663
664 void util_generate_key(DavKey *key, char *password) {
665 key->data = malloc(SHA256_DIGEST_LENGTH);
666 key->length = SHA256_DIGEST_LENGTH;
667 key->type = DAV_KEY_AES256;
668 #ifdef __sun
669 SHA256_CTX sha256;
670 SHA256Init(&sha256);
671 SHA256Update(&sha256, password, strlen(password));
672 SHA256Final(key->data, &sha256);
673 #else
674 SHA256_CTX sha256;
675 SHA256_Init(&sha256);
676 SHA256_Update(&sha256, password, strlen(password));
677 SHA256_Final(key->data, &sha256);
678 #endif
679 }
680
681 char* util_key_input(DavContext *ctx, DavKey *key) {
682 sstr_t prompt = ucx_sprintf("Enter password for key (%s): ", key->name);
683 char *password = util_password_input(prompt.ptr);
684 free(prompt.ptr);
685 return password;
686 }
687
688 664
689 char* util_hexstr(unsigned char *data, size_t len) { 665 char* util_hexstr(unsigned char *data, size_t len) {
690 size_t buflen = 2*len + 4; 666 size_t buflen = 2*len + 4;
691 UcxBuffer *buf = ucx_buffer_new(malloc(buflen), buflen + 1, 0); 667 UcxBuffer *buf = ucx_buffer_new(malloc(buflen), buflen + 1, 0);
692 for(int i=0;i<len;i++) { 668 for(int i=0;i<len;i++) {

mercurial