authfs: create a chunked reader with fs-verity verification

The new chunked reader uses a Merkle tree to verify each chunk read of
the corresponding backing file. The reader also accepts an
autheneticator for signature verification, though it is currently a fake
implementation due to the lack of PKCS#7 signature support in BoringSSL
(b/170494765).

Test: atest authfs_host_test_src_lib
Bug: 171310075

Change-Id: Ibf4151ab2a93f7515ad8c9c0462df6c21c10d767
diff --git a/authfs/testdata/key.pem b/authfs/testdata/key.pem
new file mode 100644
index 0000000..c8520f8
--- /dev/null
+++ b/authfs/testdata/key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+wjfm06+rqBcJkr1MUXfmT0i3YEKL9uA=
+-----END PRIVATE KEY-----