mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
kbx: Change X.509 S/N search definition.
* kbx/keybox-search-desc.h (struct keydb_search_desc): Do not overload SNLLEN with a hex flag. Add SNHEX. * kbx/keybox-search.c (keybox_search): Adjust. * common/userids.c (classify_user_id): Adjust. * sm/keydb.c (keydb_search_desc_dump): Adjust. * g10/keydb.c (keydb_search_desc_dump): Adjust. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
2bc1ec2944
commit
adec6a84f6
@ -192,7 +192,8 @@ classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc, int openpgp_hack)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
desc->sn = (const unsigned char*)s;
|
desc->sn = (const unsigned char*)s;
|
||||||
desc->snlen = -1;
|
desc->snlen = si - s;
|
||||||
|
desc->snhex = 1;
|
||||||
if (!*si)
|
if (!*si)
|
||||||
mode = KEYDB_SEARCH_MODE_SN;
|
mode = KEYDB_SEARCH_MODE_SN;
|
||||||
else
|
else
|
||||||
|
12
g10/keydb.c
12
g10/keydb.c
@ -487,15 +487,11 @@ keydb_search_desc_dump (struct keydb_search_desc *desc)
|
|||||||
case KEYDB_SEARCH_MODE_ISSUER:
|
case KEYDB_SEARCH_MODE_ISSUER:
|
||||||
return xasprintf ("ISSUER: '%s'", desc->u.name);
|
return xasprintf ("ISSUER: '%s'", desc->u.name);
|
||||||
case KEYDB_SEARCH_MODE_ISSUER_SN:
|
case KEYDB_SEARCH_MODE_ISSUER_SN:
|
||||||
return xasprintf ("ISSUER_SN: '%*s'",
|
return xasprintf ("ISSUER_SN: '#%.*s/%s'",
|
||||||
(int) (desc->snlen == -1
|
(int)desc->snlen,desc->sn, desc->u.name);
|
||||||
? strlen (desc->sn) : desc->snlen),
|
|
||||||
desc->sn);
|
|
||||||
case KEYDB_SEARCH_MODE_SN:
|
case KEYDB_SEARCH_MODE_SN:
|
||||||
return xasprintf ("SN: '%*s'",
|
return xasprintf ("SN: '%.*s'",
|
||||||
(int) (desc->snlen == -1
|
(int)desc->snlen, desc->sn);
|
||||||
? strlen (desc->sn) : desc->snlen),
|
|
||||||
desc->sn);
|
|
||||||
case KEYDB_SEARCH_MODE_SUBJECT:
|
case KEYDB_SEARCH_MODE_SUBJECT:
|
||||||
return xasprintf ("SUBJECT: '%s'", desc->u.name);
|
return xasprintf ("SUBJECT: '%s'", desc->u.name);
|
||||||
case KEYDB_SEARCH_MODE_KEYGRIP:
|
case KEYDB_SEARCH_MODE_KEYGRIP:
|
||||||
|
@ -75,7 +75,7 @@ struct keydb_search_desc
|
|||||||
int (*skipfnc)(void *, u32 *, int);
|
int (*skipfnc)(void *, u32 *, int);
|
||||||
void *skipfncvalue;
|
void *skipfncvalue;
|
||||||
const unsigned char *sn;
|
const unsigned char *sn;
|
||||||
int snlen; /* -1 := sn is a hex string */
|
unsigned short snlen;
|
||||||
union {
|
union {
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned char fpr[32];
|
unsigned char fpr[32];
|
||||||
@ -83,6 +83,7 @@ struct keydb_search_desc
|
|||||||
unsigned char grip[KEYGRIP_LEN];
|
unsigned char grip[KEYGRIP_LEN];
|
||||||
unsigned char ubid[UBID_LEN];
|
unsigned char ubid[UBID_LEN];
|
||||||
} u;
|
} u;
|
||||||
|
byte snhex; /* SN above is a hexstring and not binary. */
|
||||||
byte fprlen; /* Only used with KEYDB_SEARCH_MODE_FPR. */
|
byte fprlen; /* Only used with KEYDB_SEARCH_MODE_FPR. */
|
||||||
int exact; /* Use exactly this key ('!' suffix in gpg). */
|
int exact; /* Use exactly this key ('!' suffix in gpg). */
|
||||||
};
|
};
|
||||||
|
@ -982,7 +982,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
|
|||||||
}
|
}
|
||||||
if (desc[n].skipfnc)
|
if (desc[n].skipfnc)
|
||||||
any_skip = 1;
|
any_skip = 1;
|
||||||
if (desc[n].snlen == -1 && !sn_array)
|
if (desc[n].snhex && !sn_array)
|
||||||
{
|
{
|
||||||
sn_array = xtrycalloc (ndesc, sizeof *sn_array);
|
sn_array = xtrycalloc (ndesc, sizeof *sn_array);
|
||||||
if (!sn_array)
|
if (!sn_array)
|
||||||
@ -1042,12 +1042,12 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
|
|||||||
{
|
{
|
||||||
if (!desc[n].sn)
|
if (!desc[n].sn)
|
||||||
;
|
;
|
||||||
else if (desc[n].snlen == -1)
|
else if (desc[n].snhex)
|
||||||
{
|
{
|
||||||
unsigned char *sn;
|
unsigned char *sn;
|
||||||
|
|
||||||
s = desc[n].sn;
|
s = desc[n].sn;
|
||||||
for (i=0; *s && *s != '/'; s++, i++)
|
for (i=0; *s && *s != '/' && i < desc[n].snlen; s++, i++)
|
||||||
;
|
;
|
||||||
odd = (i & 1);
|
odd = (i & 1);
|
||||||
snlen = (i+1)/2;
|
snlen = (i+1)/2;
|
||||||
|
12
sm/keydb.c
12
sm/keydb.c
@ -1385,15 +1385,11 @@ keydb_search_desc_dump (struct keydb_search_desc *desc)
|
|||||||
case KEYDB_SEARCH_MODE_ISSUER:
|
case KEYDB_SEARCH_MODE_ISSUER:
|
||||||
return xasprintf ("ISSUER: '%s'", desc->u.name);
|
return xasprintf ("ISSUER: '%s'", desc->u.name);
|
||||||
case KEYDB_SEARCH_MODE_ISSUER_SN:
|
case KEYDB_SEARCH_MODE_ISSUER_SN:
|
||||||
return xasprintf ("ISSUER_SN: '%*s'",
|
return xasprintf ("ISSUER_SN: '#%.*s/%s'",
|
||||||
(int) (desc->snlen == -1
|
(int)desc->snlen,desc->sn, desc->u.name);
|
||||||
? strlen (desc->sn) : desc->snlen),
|
|
||||||
desc->sn);
|
|
||||||
case KEYDB_SEARCH_MODE_SN:
|
case KEYDB_SEARCH_MODE_SN:
|
||||||
return xasprintf ("SN: '%*s'",
|
return xasprintf ("SN: '%.*s'",
|
||||||
(int) (desc->snlen == -1
|
(int)desc->snlen, desc->sn);
|
||||||
? strlen (desc->sn) : desc->snlen),
|
|
||||||
desc->sn);
|
|
||||||
case KEYDB_SEARCH_MODE_SUBJECT:
|
case KEYDB_SEARCH_MODE_SUBJECT:
|
||||||
return xasprintf ("SUBJECT: '%s'", desc->u.name);
|
return xasprintf ("SUBJECT: '%s'", desc->u.name);
|
||||||
case KEYDB_SEARCH_MODE_KEYGRIP:
|
case KEYDB_SEARCH_MODE_KEYGRIP:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user