338 |
cmd_sent = 0; |
cmd_sent = 0; |
339 |
resval = 0; |
resval = 0; |
340 |
uid_index = sig_index = key_index = -1; |
uid_index = sig_index = key_index = -1; |
341 |
|
key_has_passwd = true; |
342 |
} |
} |
343 |
|
|
344 |
|
|
412 |
} |
} |
413 |
|
|
414 |
|
|
415 |
|
|
416 |
|
/* Inidicate that a key is protected by a passphrase or not. */ |
417 |
|
void |
418 |
|
GpgKeyEdit::setNoPassphrase (bool val) |
419 |
|
{ |
420 |
|
key_has_passwd = !val; |
421 |
|
} |
422 |
|
|
423 |
/* Set the passphrase to @pass. */ |
/* Set the passphrase to @pass. */ |
424 |
void |
void |
425 |
GpgKeyEdit::setPassphrase (const char *_pass) |
GpgKeyEdit::setPassphrase (const char *_pass) |
467 |
} |
} |
468 |
|
|
469 |
|
|
470 |
|
/* Return the amount of days the key is valid. */ |
471 |
|
int |
472 |
|
GpgKeyEdit::getValidDays (void) |
473 |
|
{ |
474 |
|
return valid; |
475 |
|
} |
476 |
|
|
477 |
|
|
478 |
int |
int |
479 |
GpgKeyEdit::getType (void) |
GpgKeyEdit::getType (void) |
487 |
gpgme_error_t |
gpgme_error_t |
488 |
GpgKeyEdit::signKey (int mode, int _sig_class, const char *_exp_date) |
GpgKeyEdit::signKey (int mode, int _sig_class, const char *_exp_date) |
489 |
{ |
{ |
490 |
if (!this->key || !this->pass) |
if (!this->key) |
491 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
492 |
|
if (key_has_passwd && !this->pass) |
493 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
494 |
|
|
495 |
type = mode; |
type = mode; |
496 |
this->exp_date = _exp_date; |
this->exp_date = _exp_date; |
506 |
GpgKeyEdit::signUserid (int _uid_idx, int mode, int _sig_class, |
GpgKeyEdit::signUserid (int _uid_idx, int mode, int _sig_class, |
507 |
const char *_exp_date) |
const char *_exp_date) |
508 |
{ |
{ |
509 |
if (!this->key || !this->pass) |
if (!this->key) |
510 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
511 |
|
if (key_has_passwd && !this->pass) |
512 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
513 |
|
|
514 |
this->uid_index = _uid_idx; |
this->uid_index = _uid_idx; |
515 |
type = mode; |
type = mode; |
516 |
this->exp_date = _exp_date; |
this->exp_date = _exp_date; |
539 |
gpgme_error_t |
gpgme_error_t |
540 |
GpgKeyEdit::addUserid (const char *_name, const char *_cmt, const char *_email) |
GpgKeyEdit::addUserid (const char *_name, const char *_cmt, const char *_email) |
541 |
{ |
{ |
542 |
if (!this->key || !this->pass) |
if (!this->key) |
543 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
544 |
|
if (key_has_passwd && !this->pass) |
545 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
546 |
|
|
547 |
type = GPG_EDITKEY_ADDUID; |
type = GPG_EDITKEY_ADDUID; |
548 |
free_if_alloc (this->name); |
free_if_alloc (this->name); |
593 |
GpgKeyEdit::addSubkey (gpgme_pubkey_algo_t _pubkey_algo, |
GpgKeyEdit::addSubkey (gpgme_pubkey_algo_t _pubkey_algo, |
594 |
unsigned int _pubkey_size, long _valid) |
unsigned int _pubkey_size, long _valid) |
595 |
{ |
{ |
596 |
if (!this->key || !this->pass) |
if (!this->key) |
597 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
598 |
|
if (key_has_passwd && !this->pass) |
599 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
600 |
|
|
601 |
type = GPG_EDITKEY_ADDKEY; |
type = GPG_EDITKEY_ADDKEY; |
602 |
this->pubkey_algo = _pubkey_algo; |
this->pubkey_algo = _pubkey_algo; |
611 |
gpgme_error_t |
gpgme_error_t |
612 |
GpgKeyEdit::changePassphrase (const char *_new_pass, int allow_empty) |
GpgKeyEdit::changePassphrase (const char *_new_pass, int allow_empty) |
613 |
{ |
{ |
614 |
if (!this->key || !this->pass) |
if (!this->key) |
615 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
616 |
|
if (key_has_passwd && !this->pass) |
617 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
618 |
|
|
619 |
type = GPG_EDITKEY_PASSWD; |
type = GPG_EDITKEY_PASSWD; |
620 |
this->new_pass = _new_pass; |
this->new_pass = _new_pass; |
628 |
gpgme_error_t |
gpgme_error_t |
629 |
GpgKeyEdit::setPrimaryUserid (int _uid_index) |
GpgKeyEdit::setPrimaryUserid (int _uid_index) |
630 |
{ |
{ |
631 |
if (!this->key || !this->pass) |
if (!this->key) |
632 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
633 |
|
if (key_has_passwd && !this->pass) |
634 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
635 |
|
|
636 |
type = GPG_EDITKEY_PRIMARY; |
type = GPG_EDITKEY_PRIMARY; |
637 |
this->uid_index = _uid_index; |
this->uid_index = _uid_index; |
646 |
GpgKeyEdit::setKeyExpireDate (int _key_index, long exp_timestamp, |
GpgKeyEdit::setKeyExpireDate (int _key_index, long exp_timestamp, |
647 |
bool exp_days) |
bool exp_days) |
648 |
{ |
{ |
649 |
if (!this->key || !this->pass) |
if (!this->key) |
650 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
651 |
|
if (key_has_passwd && !this->pass) |
652 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
653 |
if (!exp_days && exp_timestamp > 0 && exp_timestamp < time (NULL)) |
if (!exp_days && exp_timestamp > 0 && exp_timestamp < time (NULL)) |
654 |
return gpg_error (GPG_ERR_INV_ARG); |
return gpg_error (GPG_ERR_INV_ARG); |
655 |
|
|
669 |
gpgme_error_t |
gpgme_error_t |
670 |
GpgKeyEdit::revokeUserid (int _uid_index) |
GpgKeyEdit::revokeUserid (int _uid_index) |
671 |
{ |
{ |
672 |
if (!this->key || !this->pass) |
if (!this->key) |
673 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
674 |
|
if (key_has_passwd && !this->pass) |
675 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
676 |
|
|
677 |
type = GPG_EDITKEY_REVUID; |
type = GPG_EDITKEY_REVUID; |
678 |
this->uid_index = _uid_index; |
this->uid_index = _uid_index; |
686 |
gpgme_error_t |
gpgme_error_t |
687 |
GpgKeyEdit::revokeSignature (int _uid_index, int _sig_index) |
GpgKeyEdit::revokeSignature (int _uid_index, int _sig_index) |
688 |
{ |
{ |
689 |
if (!this->key || !this->pass) |
if (!this->key) |
690 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
691 |
|
if (key_has_passwd && !this->pass) |
692 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
693 |
|
|
694 |
type = GPG_EDITKEY_REVSIG; |
type = GPG_EDITKEY_REVSIG; |
695 |
this->uid_index = _uid_index; |
this->uid_index = _uid_index; |
705 |
gpgme_error_t |
gpgme_error_t |
706 |
GpgKeyEdit::revokeSubkey (int _key_index, int _reason, const char *_cmt) |
GpgKeyEdit::revokeSubkey (int _key_index, int _reason, const char *_cmt) |
707 |
{ |
{ |
708 |
if (!this->key || !this->pass) |
if (!this->key) |
709 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
710 |
|
if (key_has_passwd && !this->pass) |
711 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
712 |
|
|
713 |
type = GPG_EDITKEY_REVKEY; |
type = GPG_EDITKEY_REVKEY; |
714 |
this->key_index = _key_index; |
this->key_index = _key_index; |
728 |
gpgme_error_t |
gpgme_error_t |
729 |
GpgKeyEdit::addDesignatedRevoker (const char *uid) |
GpgKeyEdit::addDesignatedRevoker (const char *uid) |
730 |
{ |
{ |
731 |
if (!this->key || !this->pass) |
if (!this->key) |
732 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
733 |
|
if (key_has_passwd && !this->pass) |
734 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
735 |
|
|
736 |
type = GPG_EDITKEY_ADDREV; |
type = GPG_EDITKEY_ADDREV; |
737 |
free_if_alloc (this->name); |
free_if_alloc (this->name); |
745 |
gpgme_error_t |
gpgme_error_t |
746 |
GpgKeyEdit::addPhotoid (const char *jpg_file) |
GpgKeyEdit::addPhotoid (const char *jpg_file) |
747 |
{ |
{ |
748 |
if (!this->key || !this->pass) |
if (!this->key) |
749 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
750 |
|
if (key_has_passwd && !this->pass) |
751 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
752 |
|
|
753 |
type = GPG_EDITKEY_ADDPHOTO; |
type = GPG_EDITKEY_ADDPHOTO; |
754 |
this->url = jpg_file; |
this->url = jpg_file; |
793 |
gpgme_error_t |
gpgme_error_t |
794 |
GpgKeyEdit::setUseridPreferences (int _uid_index, const char *new_prefs) |
GpgKeyEdit::setUseridPreferences (int _uid_index, const char *new_prefs) |
795 |
{ |
{ |
796 |
if (!this->key || !this->pass) |
if (!this->key) |
797 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
798 |
|
if (key_has_passwd && !this->pass) |
799 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
800 |
return 0; |
return 0; |
801 |
} |
} |
802 |
|
|
820 |
gpgme_error_t |
gpgme_error_t |
821 |
GpgKeyEdit::setPreferredKeyserver (int _uid_index, const char *_url) |
GpgKeyEdit::setPreferredKeyserver (int _uid_index, const char *_url) |
822 |
{ |
{ |
823 |
if (!this->key || !this->pass) |
if (!this->key) |
824 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
825 |
if (!url) |
if (key_has_passwd && !this->pass) |
826 |
|
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
827 |
|
if (!_url) |
828 |
return gpg_error (GPG_ERR_INV_ARG); |
return gpg_error (GPG_ERR_INV_ARG); |
829 |
|
|
830 |
type = GPG_EDITKEY_KEYSERV; |
type = GPG_EDITKEY_KEYSERV; |
831 |
this->url = _url; |
this->url = _url; |
832 |
this->uid_index = _uid_index; |
this->uid_index = _uid_index; |