botan: Fix build without specific asymmetric crypto
authorTobias Brunner <tobias@strongswan.org>
Thu, 25 Oct 2018 12:22:21 +0000 (14:22 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 26 Oct 2018 09:06:45 +0000 (11:06 +0200)
src/libstrongswan/plugins/botan/botan_util_keys.c

index 016c683..dc40314 100644 (file)
@@ -106,19 +106,27 @@ public_key_t *botan_public_key_load(key_type_t type, va_list args)
                return NULL;
        }
 
+#ifdef BOTAN_HAS_RSA
        if (streq(name, "RSA") && (type == KEY_ANY || type == KEY_RSA))
        {
                this = (public_key_t*)botan_rsa_public_key_adopt(pubkey);
        }
-       else if (streq(name, "ECDSA") && (type == KEY_ANY || type == KEY_ECDSA))
+       else
+#endif
+#ifdef BOTAN_HAS_ECDSA
+       if (streq(name, "ECDSA") && (type == KEY_ANY || type == KEY_ECDSA))
        {
                this = (public_key_t*)botan_ec_public_key_adopt(pubkey);
        }
-       else if (streq(name, "Ed25519") && (type == KEY_ANY || type == KEY_ED25519))
+       else
+#endif
+#ifdef BOTAN_HAS_ED25519
+       if (streq(name, "Ed25519") && (type == KEY_ANY || type == KEY_ED25519))
        {
                this = botan_ed_public_key_adopt(pubkey);
        }
        else
+#endif
        {
                botan_pubkey_destroy(pubkey);
        }
@@ -126,6 +134,7 @@ public_key_t *botan_public_key_load(key_type_t type, va_list args)
        return this;
 }
 
+#ifdef BOTAN_HAS_ECDSA
 /**
  * Determine the curve OID from a PKCS#8 structure
  */
@@ -145,6 +154,7 @@ static int determine_ec_oid(chunk_t pkcs8)
        }
        return oid;
 }
+#endif
 
 /*
  * Described in header
@@ -157,7 +167,6 @@ private_key_t *botan_private_key_load(key_type_t type, va_list args)
        chunk_t blob = chunk_empty;
        botan_rng_t rng;
        char *name;
-       int oid;
 
        while (TRUE)
        {
@@ -197,22 +206,32 @@ private_key_t *botan_private_key_load(key_type_t type, va_list args)
                botan_privkey_destroy(key);
                return NULL;
        }
+
+#ifdef BOTAN_HAS_RSA
        if (streq(name, "RSA") && (type == KEY_ANY || type == KEY_RSA))
        {
                this = (private_key_t*)botan_rsa_private_key_adopt(key);
        }
-       else if (streq(name, "ECDSA") && (type == KEY_ANY || type == KEY_ECDSA))
+       else
+#endif
+#ifdef BOTAN_HAS_ECDSA
+       if (streq(name, "ECDSA") && (type == KEY_ANY || type == KEY_ECDSA))
        {
-               oid = determine_ec_oid(blob);
+               int oid = determine_ec_oid(blob);
                if (oid != OID_UNKNOWN)
                {
                        this = (private_key_t*)botan_ec_private_key_adopt(key, oid);
                }
        }
-       else if (streq(name, "Ed25519") && (type == KEY_ANY || type == KEY_ED25519))
+       else
+#endif
+#ifdef BOTAN_HAS_ED25519
+       if (streq(name, "Ed25519") && (type == KEY_ANY || type == KEY_ED25519))
        {
                this = botan_ed_private_key_adopt(key);
        }
+#endif
+
        if (!this)
        {
                botan_privkey_destroy(key);