pw_package: Add mbedtls to pw package

Add support for downloading mbedtls library in `pw package`. Upstream
doesn't provide a gn build script. It will need to be added in
//third_party/mbedtls. To avoid breaking the build, the install locks
on a commit and we'll manually bump it.

Change-Id: I0cd16e352aead5c90340be582bf54de357c99252
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/44280
Reviewed-by: Ali Zhang <alizhang@google.com>
Reviewed-by: Varun Sharma <vars@google.com>
Commit-Queue: Yecheng Zhao <zyecheng@google.com>
diff --git a/pw_package/py/BUILD.gn b/pw_package/py/BUILD.gn
index cc385c7..78056dc 100644
--- a/pw_package/py/BUILD.gn
+++ b/pw_package/py/BUILD.gn
@@ -24,6 +24,7 @@
     "pw_package/package_manager.py",
     "pw_package/packages/__init__.py",
     "pw_package/packages/arduino_core.py",
+    "pw_package/packages/mbedtls.py",
     "pw_package/packages/nanopb.py",
     "pw_package/packages/stm32cube.py",
     "pw_package/pigweed_packages.py",
diff --git a/pw_package/py/pw_package/packages/mbedtls.py b/pw_package/py/pw_package/packages/mbedtls.py
new file mode 100644
index 0000000..a320efb
--- /dev/null
+++ b/pw_package/py/pw_package/packages/mbedtls.py
@@ -0,0 +1,43 @@
+# Copyright 2021 The Pigweed Authors
+#
+# 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
+#
+#     https://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.
+"""Install and check status of MbedTLS."""
+
+import pathlib
+from typing import Sequence
+
+import pw_package.git_repo
+import pw_package.package_manager
+
+
+class MbedTLS(pw_package.git_repo.GitRepo):
+    """Install and check status of MbedTLS."""
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args,
+                         name='mbedtls',
+                         url="".join([
+                             "https://pigweed.googlesource.com",
+                             "/third_party/github/ARMmbed/mbedtls",
+                         ]),
+                         commit='e483a77c85e1f9c1dd2eb1c5a8f552d2617fe400',
+                         **kwargs)
+
+    def info(self, path: pathlib.Path) -> Sequence[str]:
+        return (
+            f'{self.name} installed in: {path}',
+            "Enable by running 'gn args out' and adding this line:",
+            f'  dir_pw_third_party_mbedtls = "{path}"',
+        )
+
+
+pw_package.package_manager.register(MbedTLS)
diff --git a/pw_package/py/pw_package/pigweed_packages.py b/pw_package/py/pw_package/pigweed_packages.py
index 5c90120..c92f735 100644
--- a/pw_package/py/pw_package/pigweed_packages.py
+++ b/pw_package/py/pw_package/pigweed_packages.py
@@ -19,6 +19,7 @@
 from pw_package.packages import nanopb
 from pw_package.packages import arduino_core  # pylint: disable=unused-import
 from pw_package.packages import stm32cube  # pylint: disable=unused-import
+from pw_package.packages import mbedtls  # pylint: disable=unused-import
 
 
 def initialize():