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++) { |