diff --git a/pkg/libcose/Makefile b/pkg/libcose/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5771706bb1176ed5503473dfb83d7e47f3eea7c3
--- /dev/null
+++ b/pkg/libcose/Makefile
@@ -0,0 +1,12 @@
+PKG_NAME=libcose
+PKG_URL=https://github.com/bergzand/libcose
+PKG_VERSION=v0.3.1
+PKG_LICENSE=LGPL
+
+.PHONY: all
+
+all: git-download
+	"$(MAKE)" -C $(PKG_BUILDDIR)/src -f $(CURDIR)/Makefile.libcose
+	"$(MAKE)" -C $(PKG_BUILDDIR)/src/crypt -f $(CURDIR)/Makefile.libcose_crypt
+
+include $(RIOTBASE)/pkg/pkg.mk
diff --git a/pkg/libcose/Makefile.dep b/pkg/libcose/Makefile.dep
new file mode 100644
index 0000000000000000000000000000000000000000..33718ac8f94660183c430948cfb0ea18e8c1fde2
--- /dev/null
+++ b/pkg/libcose/Makefile.dep
@@ -0,0 +1,10 @@
+USEPKG += cn-cbor
+
+USEMODULE += libcose_crypt
+
+ifneq (,$(filter libcose_crypt_tweetnacl,$(USEMODULE)))
+  USEPKG += tweetnacl
+endif
+ifneq (,$(filter libcose_crypt_hacl,$(USEMODULE)))
+  USEPKG += hacl
+endif
diff --git a/pkg/libcose/Makefile.include b/pkg/libcose/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..744210a85393aed700a112ee796e7585066c9b9d
--- /dev/null
+++ b/pkg/libcose/Makefile.include
@@ -0,0 +1,12 @@
+INCLUDES += -I$(PKGDIRBASE)/libcose/include
+CFLAGS += -DUSE_CBOR_CONTEXT
+
+ifneq (,$(filter libcose_crypt_tweetnacl,$(USEMODULE)))
+  CFLAGS += -DCRYPTO_TWEETNACL
+endif
+ifneq (,$(filter libcose_crypt_hacl,$(USEMODULE)))
+  CFLAGS += -DCRYPTO_HACL
+endif
+
+# Declare pseudomodules here to be selfcontained
+PSEUDOMODULES += libcose_crypt_%
diff --git a/pkg/libcose/Makefile.libcose b/pkg/libcose/Makefile.libcose
new file mode 100644
index 0000000000000000000000000000000000000000..0adb43d408bf800ab805bc98244853fe1ca5d346
--- /dev/null
+++ b/pkg/libcose/Makefile.libcose
@@ -0,0 +1,3 @@
+MODULE := libcose
+
+include $(RIOTBASE)/Makefile.base
diff --git a/pkg/libcose/Makefile.libcose_crypt b/pkg/libcose/Makefile.libcose_crypt
new file mode 100644
index 0000000000000000000000000000000000000000..a381cb2df3db6bfd18d934421c1ff199d8a301f2
--- /dev/null
+++ b/pkg/libcose/Makefile.libcose_crypt
@@ -0,0 +1,4 @@
+MODULE := libcose_crypt
+SUBMODULES = 1
+
+include $(RIOTBASE)/Makefile.base