mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Prepare Kyber encryption code for more variants.
* common/openpgp-oid.c (oidtable): Add field kem_algo. (openpgp_oid_to_kem_algo): New. * g10/pkglue.c (do_encrypt_kem): Add support for Kyber1024. -- GnuPG-bug-id: 6815
This commit is contained in:
parent
7d6ad28667
commit
ba3c873934
3 changed files with 94 additions and 25 deletions
|
@ -45,14 +45,15 @@ static struct {
|
|||
const char *alias; /* NULL or alternative name of the curve. */
|
||||
const char *abbr; /* NULL or abbreviated name of the curve. */
|
||||
int pubkey_algo; /* Required OpenPGP algo or 0 for ECDSA/ECDH. */
|
||||
enum gcry_kem_algos kem_algo; /* 0 or the KEM algorithm for PQC. */
|
||||
} oidtable[] = {
|
||||
|
||||
{ "Curve25519", "1.3.6.1.4.1.3029.1.5.1", 255, "cv25519", NULL,
|
||||
PUBKEY_ALGO_ECDH },
|
||||
PUBKEY_ALGO_ECDH, GCRY_KEM_RAW_X25519 /* only during development */},
|
||||
{ "Ed25519", "1.3.6.1.4.1.11591.15.1", 255, "ed25519", NULL,
|
||||
PUBKEY_ALGO_EDDSA },
|
||||
{ "Curve25519", "1.3.101.110", 255, "cv25519", NULL,
|
||||
PUBKEY_ALGO_ECDH },
|
||||
PUBKEY_ALGO_ECDH, GCRY_KEM_RAW_X25519 },
|
||||
{ "Ed25519", "1.3.101.112", 255, "ed25519", NULL,
|
||||
PUBKEY_ALGO_EDDSA },
|
||||
{ "X448", "1.3.101.111", 448, "cv448", NULL,
|
||||
|
@ -542,6 +543,29 @@ openpgp_oid_or_name_to_curve (const char *oidname, int canon)
|
|||
}
|
||||
|
||||
|
||||
/* Return the KEM algorithm id for the curve with OIDNAME. */
|
||||
enum gcry_kem_algos
|
||||
openpgp_oid_to_kem_algo (const char *oidname)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!oidname)
|
||||
return 0;
|
||||
|
||||
for (i=0; oidtable[i].name; i++)
|
||||
if (!strcmp (oidtable[i].oidstr, oidname))
|
||||
return oidtable[i].kem_algo;
|
||||
|
||||
for (i=0; oidtable[i].name; i++)
|
||||
if (!ascii_strcasecmp (oidtable[i].name, oidname)
|
||||
|| (oidtable[i].alias
|
||||
&& !ascii_strcasecmp (oidtable[i].alias, oidname)))
|
||||
return oidtable[i].kem_algo;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Return true if the curve with NAME is supported. */
|
||||
static int
|
||||
curve_supported_p (const char *name)
|
||||
|
|
|
@ -227,6 +227,7 @@ int openpgp_oidbuf_is_cv25519 (const void *buf, size_t len);
|
|||
int openpgp_oid_is_cv25519 (gcry_mpi_t a);
|
||||
int openpgp_oid_is_cv448 (gcry_mpi_t a);
|
||||
int openpgp_oid_is_ed448 (gcry_mpi_t a);
|
||||
enum gcry_kem_algos openpgp_oid_to_kem_algo (const char *oidname);
|
||||
const char *openpgp_curve_to_oid (const char *name,
|
||||
unsigned int *r_nbits, int *r_algo);
|
||||
const char *openpgp_oid_to_curve (const char *oid, int mode);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue