Add capabilities query

Add a simple function to query the bootloader for capabilities.
Ultimately, this API should be available to the running app, but the
simulator can use this to determine what to test.
diff --git a/boot/bootutil/include/bootutil/caps.h b/boot/bootutil/include/bootutil/caps.h
new file mode 100644
index 0000000..a0c324a
--- /dev/null
+++ b/boot/bootutil/include/bootutil/caps.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2017 Linaro Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef H_BOOTUTIL_CAPS_H_
+#define H_BOOTUTIL_CAPS_H_
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The bootloader can be compile with different capabilities selected
+ * at compile time.  This function provides runtime access to these
+ * capabilities.  This is intended primarily for testing, although
+ * these will possibly be available at runtime to the application
+ * running within the bootloader.
+ */
+uint32_t bootutil_get_caps(void);
+
+#define BOOTUTIL_CAP_RSA2048            (1<<0)
+#define BOOTUTIL_CAP_ECDSA_P224         (1<<1)
+#define BOOTUTIL_CAP_ECDSA_P256         (1<<2)
+#define BOOTUTIL_CAP_SWAP_UPGRADE       (1<<3)
+#define BOOTUTIL_CAP_OVERWRITE_UPGRADE  (1<<4)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/boot/bootutil/src/Makefile b/boot/bootutil/src/Makefile
index 8a69d87..cd38b0f 100644
--- a/boot/bootutil/src/Makefile
+++ b/boot/bootutil/src/Makefile
@@ -3,3 +3,4 @@
 include $(ZEPHYR_BASE)/ext/lib/crypto/mbedtls/Makefile.include
 
 obj-y += loader.o bootutil_misc.o image_validate.o image_rsa.o image_ec256.o
+obj-y += caps.o
diff --git a/boot/bootutil/src/caps.c b/boot/bootutil/src/caps.c
new file mode 100644
index 0000000..ae67939
--- /dev/null
+++ b/boot/bootutil/src/caps.c
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017 Linaro Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bootutil/caps.h>
+
+uint32_t bootutil_get_caps(void)
+{
+        uint32_t res = 0;
+
+#ifdef BOOTUTIL_SIGN_RSA
+        res |= BOOTUTIL_CAP_RSA2048;
+#endif
+#ifdef BOOTUTIL_SIGN_EC
+        res |= BOOTUTIL_CAP_ECDSA_P224;
+#endif
+#ifdef BOOTUTIL_SIGN_EC256
+        res |= BOOTUTIL_CAP_ECDSA_P256;
+#endif
+#ifdef BOOTUTIL_OVERWRITE_ONLY
+        res |= BOOTUTIL_CAP_OVERWRITE_UPGRADE;
+#else
+        res |= BOOTUTIL_CAP_SWAP_UPGRADE;
+#endif
+
+        return res;
+}