|
|
|
@ -436,28 +436,28 @@ pgp_sprint_keydata(pgp_io_t *io, const pgp_keyring_t *keyring,
|
|
|
|
|
(psigs) ? " " : " ",
|
|
|
|
|
key->uids[i],
|
|
|
|
|
(isrevoked(key, i) >= 0) ? " [REVOKED]" : "");
|
|
|
|
|
for (j = 0 ; j < key->subsigc ; j++) {
|
|
|
|
|
for (j = 0 ; j < key->uidsigc ; j++) {
|
|
|
|
|
if (psigs) {
|
|
|
|
|
if (key->subsigs[j].uid != i) {
|
|
|
|
|
if (key->uidsigs[j].uid != i) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!(key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
if (!(key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
i == key->uidc - 1)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
from = 0;
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->subsigs[j].sig.info.signer_id, &from, NULL);
|
|
|
|
|
if (key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->uidsigs[j].siginfo.signer_id, &from, NULL);
|
|
|
|
|
if (key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
psubkeybinding(&uidbuf[n], sizeof(uidbuf) - n, key, expired);
|
|
|
|
|
} else {
|
|
|
|
|
n += snprintf(&uidbuf[n], sizeof(uidbuf) - n,
|
|
|
|
|
"sig %s %s %s\n",
|
|
|
|
|
strhexdump(keyid, key->subsigs[j].sig.info.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
ptimestr(t, sizeof(t), key->subsigs[j].sig.info.birthtime),
|
|
|
|
|
strhexdump(keyid, key->uidsigs[j].siginfo.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
ptimestr(t, sizeof(t), key->uidsigs[j].siginfo.birthtime),
|
|
|
|
|
(trustkey) ? (char *)trustkey->uids[trustkey->uid0] : "[unknown]");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -512,22 +512,22 @@ pgp_sprint_mj(pgp_io_t *io, const pgp_keyring_t *keyring,
|
|
|
|
|
mj_append(&sub_obj, "string", (r >= 0) ? "[REVOKED]" : "", -1);
|
|
|
|
|
mj_append_field(keyjson, "uid", "array", &sub_obj);
|
|
|
|
|
mj_delete(&sub_obj);
|
|
|
|
|
for (j = 0 ; j < key->subsigc ; j++) {
|
|
|
|
|
for (j = 0 ; j < key->uidsigc ; j++) {
|
|
|
|
|
if (psigs) {
|
|
|
|
|
if (key->subsigs[j].uid != i) {
|
|
|
|
|
if (key->uidsigs[j].uid != i) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!(key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
if (!(key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
i == key->uidc - 1)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
(void) memset(&sub_obj, 0x0, sizeof(sub_obj));
|
|
|
|
|
mj_create(&sub_obj, "array");
|
|
|
|
|
if (key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
if (key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
mj_append(&sub_obj, "integer", (int64_t)numkeybits(&key->enckey));
|
|
|
|
|
mj_append(&sub_obj, "string",
|
|
|
|
|
(const char *)pgp_show_pka(key->enckey.alg), -1);
|
|
|
|
@ -538,11 +538,11 @@ pgp_sprint_mj(pgp_io_t *io, const pgp_keyring_t *keyring,
|
|
|
|
|
mj_delete(&sub_obj);
|
|
|
|
|
} else {
|
|
|
|
|
mj_append(&sub_obj, "string",
|
|
|
|
|
strhexdump(keyid, key->subsigs[j].sig.info.signer_id, PGP_KEY_ID_SIZE, ""), -1);
|
|
|
|
|
strhexdump(keyid, key->uidsigs[j].siginfo.signer_id, PGP_KEY_ID_SIZE, ""), -1);
|
|
|
|
|
mj_append(&sub_obj, "integer",
|
|
|
|
|
(int64_t)(key->subsigs[j].sig.info.birthtime));
|
|
|
|
|
(int64_t)(key->uidsigs[j].siginfo.birthtime));
|
|
|
|
|
from = 0;
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->subsigs[j].sig.info.signer_id, &from, NULL);
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->uidsigs[j].siginfo.signer_id, &from, NULL);
|
|
|
|
|
mj_append(&sub_obj, "string",
|
|
|
|
|
(trustkey) ? (char *)trustkey->uids[trustkey->uid0] : "[unknown]", -1);
|
|
|
|
|
mj_append_field(keyjson, "sig", "array", &sub_obj);
|
|
|
|
@ -583,33 +583,33 @@ pgp_hkp_sprint_keydata(pgp_io_t *io, const pgp_keyring_t *keyring,
|
|
|
|
|
(long long)pubkey->birthtime,
|
|
|
|
|
(long long)pubkey->duration,
|
|
|
|
|
key->uids[i]);
|
|
|
|
|
for (j = 0 ; j < key->subsigc ; j++) {
|
|
|
|
|
for (j = 0 ; j < key->uidsigc ; j++) {
|
|
|
|
|
if (psigs) {
|
|
|
|
|
if (key->subsigs[j].uid != i) {
|
|
|
|
|
if (key->uidsigs[j].uid != i) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!(key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
if (!(key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY &&
|
|
|
|
|
i == key->uidc - 1)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
from = 0;
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->subsigs[j].sig.info.signer_id, &from, NULL);
|
|
|
|
|
if (key->subsigs[j].sig.info.version == 4 &&
|
|
|
|
|
key->subsigs[j].sig.info.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
trustkey = pgp_getkeybyid(io, keyring, key->uidsigs[j].siginfo.signer_id, &from, NULL);
|
|
|
|
|
if (key->uidsigs[j].siginfo.version == 4 &&
|
|
|
|
|
key->uidsigs[j].siginfo.type == PGP_SIG_SUBKEY) {
|
|
|
|
|
n += snprintf(&uidbuf[n], sizeof(uidbuf) - n, "sub:%d:%d:%s:%lld:%lld\n",
|
|
|
|
|
numkeybits(pubkey),
|
|
|
|
|
key->subsigs[j].sig.info.key_alg,
|
|
|
|
|
strhexdump(keyid, key->subsigs[j].sig.info.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
(long long)(key->subsigs[j].sig.info.birthtime),
|
|
|
|
|
key->uidsigs[j].siginfo.key_alg,
|
|
|
|
|
strhexdump(keyid, key->uidsigs[j].siginfo.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
(long long)(key->uidsigs[j].siginfo.birthtime),
|
|
|
|
|
(long long)pubkey->duration);
|
|
|
|
|
} else {
|
|
|
|
|
n += snprintf(&uidbuf[n], sizeof(uidbuf) - n,
|
|
|
|
|
"sig:%s:%lld:%s\n",
|
|
|
|
|
strhexdump(keyid, key->subsigs[j].sig.info.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
(long long)key->subsigs[j].sig.info.birthtime,
|
|
|
|
|
strhexdump(keyid, key->uidsigs[j].siginfo.signer_id, PGP_KEY_ID_SIZE, ""),
|
|
|
|
|
(long long)key->uidsigs[j].siginfo.birthtime,
|
|
|
|
|
(trustkey) ? (char *)trustkey->uids[trustkey->uid0] : "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|