opensk: initial integration. (#5355)

* opensk: initial integration.

* fix up project.yaml in opensk.

* Fix opensk build.

* Updated build.sh

* updated project yaml.

* enable coverage.

* disable coverage.
diff --git a/projects/opensk/Dockerfile b/projects/opensk/Dockerfile
new file mode 100644
index 0000000..d8a9e5b
--- /dev/null
+++ b/projects/opensk/Dockerfile
@@ -0,0 +1,26 @@
+# Copyright 2021 Google LLC
+#
+# 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.
+#
+################################################################################
+FROM gcr.io/oss-fuzz-base/base-builder
+RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang uuid-runtime
+
+RUN git clone --recurse-submodules https://github.com/google/OpenSK  && \
+    cd OpenSK && \
+    ./setup.sh && \
+    ./fuzzing_setup.sh
+
+WORKDIR $SRC
+
+COPY build.sh $SRC/
diff --git a/projects/opensk/build.sh b/projects/opensk/build.sh
new file mode 100755
index 0000000..6ca211b
--- /dev/null
+++ b/projects/opensk/build.sh
@@ -0,0 +1,32 @@
+#!/bin/bash -eu
+# Copyright 2021 Google LLC
+#
+# 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.
+#
+################################################################################
+if [ "$SANITIZER" = "coverage" ]
+then
+    exit 0 
+fi
+
+cd OpenSK
+cargo fuzz build
+
+# Copy fuzzers to out
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap1 $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap2_client_pin $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap2_get_assertion $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap2_make_credential $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap_command $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_split_assemble $OUT/
+cp ./fuzz/target/x86_64-unknown-linux-gnu/release/fuzz_target_process_ctap1 $OUT/
diff --git a/projects/opensk/project.yaml b/projects/opensk/project.yaml
new file mode 100644
index 0000000..4599e89
--- /dev/null
+++ b/projects/opensk/project.yaml
@@ -0,0 +1,10 @@
+homepage: "https://github.com/google/OpenSK"
+main_repo: "https://github.com/google/OpenSK"
+primary_contact: "opensk@google.com"
+sanitizers:
+  - address
+fuzzing_engines:
+  - libfuzzer
+language: rust
+auto_ccs:
+  - "david@adalogics.com"