]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
abstract: plumb RSA-OAEP in the abstract key types API
authorDaiki Ueno <ueno@gnu.org>
Thu, 8 Feb 2024 09:39:41 +0000 (18:39 +0900)
committerDaiki Ueno <ueno@gnu.org>
Sun, 3 Mar 2024 02:07:31 +0000 (11:07 +0900)
Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/gnutls_int.h
lib/pkcs11_write.c
lib/privkey.c
lib/pubkey.c

index e9ec36d5855450ffeb3b2808f3ac314421863f0a..d8561ebe3aa04c288b2ba46de6c42a4ee71d2170 100644 (file)
@@ -453,8 +453,9 @@ typedef enum content_type_t {
 #define GNUTLS_PK_ANY (gnutls_pk_algorithm_t) - 1
 #define GNUTLS_PK_NONE (gnutls_pk_algorithm_t) - 2
 
-#define GNUTLS_PK_IS_RSA(pk) \
-       ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS)
+#define GNUTLS_PK_IS_RSA(pk)                                   \
+       ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS || \
+        (pk) == GNUTLS_PK_RSA_OAEP)
 
 /* Message buffers (mbuffers) structures */
 
index a3201ddebaf8e20ace3d21b3a15de38dafa5ef70..bde413713699510cb8c59bacd9c941a1699f735f 100644 (file)
@@ -280,6 +280,7 @@ static int add_pubkey(gnutls_pubkey_t pubkey, struct ck_attribute *a,
 
        switch (pk) {
        case GNUTLS_PK_RSA_PSS:
+       case GNUTLS_PK_RSA_OAEP:
        case GNUTLS_PK_RSA: {
                gnutls_datum_t m, e;
 
@@ -823,7 +824,8 @@ int gnutls_pkcs11_copy_x509_privkey2(const char *token_url,
 
        switch (pk) {
        case GNUTLS_PK_RSA:
-       case GNUTLS_PK_RSA_PSS: {
+       case GNUTLS_PK_RSA_PSS:
+       case GNUTLS_PK_RSA_OAEP: {
                ret = _gnutls_params_get_rsa_raw(&key->params, &m, &e, &d, &p,
                                                 &q, &u, &exp1, &exp2,
                                                 GNUTLS_EXPORT_FLAG_NO_LZ);
@@ -983,6 +985,7 @@ int gnutls_pkcs11_copy_x509_privkey2(const char *token_url,
 cleanup:
        switch (pk) {
        case GNUTLS_PK_RSA_PSS:
+       case GNUTLS_PK_RSA_OAEP:
        case GNUTLS_PK_RSA: {
                gnutls_free(m.data);
                gnutls_free(e.data);
index 59caa6b8aff079657113cb934ea646e0c18961b0..d231bb70ef2392b9df4b594849d03c1f4e1cdf1f 100644 (file)
@@ -171,6 +171,7 @@ static int privkey_to_pubkey(gnutls_pk_algorithm_t pk,
 
        switch (pk) {
        case GNUTLS_PK_RSA_PSS:
+       case GNUTLS_PK_RSA_OAEP:
        case GNUTLS_PK_RSA:
                pub->params[0] = _gnutls_mpi_copy(priv->params[0]);
                pub->params[1] = _gnutls_mpi_copy(priv->params[1]);
index 095f6dee396919dc03b85c408ae64379f049cb93..083e8f02166df72416b8fa055a14ee521830ec27 100644 (file)
@@ -54,6 +54,7 @@ unsigned pubkey_to_bits(const gnutls_pk_params_st *params)
        switch (params->algo) {
        case GNUTLS_PK_RSA:
        case GNUTLS_PK_RSA_PSS:
+       case GNUTLS_PK_RSA_OAEP:
                return _gnutls_mpi_get_nbits(params->params[RSA_MODULUS]);
        case GNUTLS_PK_DSA:
                return _gnutls_mpi_get_nbits(params->params[DSA_P]);