aboutsummaryrefslogtreecommitdiff
path: root/act/fake_act.h
diff options
context:
space:
mode:
authorPrabal Singh <prabalsingh@google.com>2023-11-13 18:07:22 +0000
committerPrabal Singh <prabalsingh@google.com>2023-11-13 20:36:25 +0000
commit26b2c690fcfc019b5a7ae55fec2d1fd117809c52 (patch)
tree22502fb41773fc4aa5a688f7d38da93e3391359b /act/fake_act.h
parentac7650269463beb0cfb4c26ebf79344f210d5da4 (diff)
parent3dea51443eaabde75c00cd325bc31e3b848a767f (diff)
downloadanonymous-counting-tokens-26b2c690fcfc019b5a7ae55fec2d1fd117809c52.tar.gz
Merge remote-tracking branch 'origin/upstream-main'
Change-Id: I180a85b5132d9a086533ca7824c6bf92173b195c
Diffstat (limited to 'act/fake_act.h')
-rw-r--r--act/fake_act.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/act/fake_act.h b/act/fake_act.h
new file mode 100644
index 0000000..c90aead
--- /dev/null
+++ b/act/fake_act.h
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2023 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
+ *
+ * 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.
+ */
+
+#ifndef PRIVATE_JOIN_AND_COMPUTE_ANONYMOUS_COUNTING_TOKENS_FAKE_ACT_H_
+#define PRIVATE_JOIN_AND_COMPUTE_ANONYMOUS_COUNTING_TOKENS_FAKE_ACT_H_
+
+#include <memory>
+#include <string>
+#include <tuple>
+#include <vector>
+
+#include "act/act.h"
+#include "act/act.pb.h"
+#include "private_join_and_compute/util/status.inc"
+
+namespace private_join_and_compute {
+namespace anonymous_counting_tokens {
+
+// A fake, insecure implementation of Anonymous Counting Tokens for
+// testing/stubbing purposes only. This should NOT be used in production: it
+// doesn't have any of the desired security properties.
+class FakeAnonymousCountingTokens : public AnonymousCountingTokens {
+ public:
+ static const size_t kFakeTokenNonceLengthBits = 256;
+
+ // Returns an instance of FakeAnonymousCountingTokens.
+ static std::unique_ptr<AnonymousCountingTokens> Create();
+
+ ~FakeAnonymousCountingTokens() override = default;
+
+ // Returns empty Server parameters.
+ StatusOr<ServerParameters> GenerateServerParameters(
+ const SchemeParameters& scheme_parameters) override;
+
+ // Returns empty Client parameters.
+ StatusOr<ClientParameters> GenerateClientParameters(
+ const SchemeParameters& scheme_parameters,
+ const ServerPublicParameters& server_public_parameters) override;
+
+ // Always returns "Ok".
+ Status CheckClientParameters(
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ServerPublicParameters& server_public_parameters,
+ const ServerPrivateParameters& server_private_parameters) override;
+
+ // For this fake implementation, the client fingerprints are the same as the
+ // messages (this is insecure).
+ StatusOr<std::tuple<std::vector<std::string>, TokensRequest,
+ TokensRequestPrivateState>>
+ GenerateTokensRequest(
+ absl::Span<const std::string> messages,
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ClientPrivateParameters& client_private_parameters,
+ const ServerPublicParameters& server_public_parameters) override;
+
+ // Always returns "Ok".
+ Status CheckTokensRequest(
+ absl::Span<const std::string> client_fingerprints,
+ const TokensRequest& tokens_request,
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ServerPublicParameters& server_public_parameters,
+ const ServerPrivateParameters& server_private_parameters) override;
+
+ // Returns an empty TokensResponse.
+ StatusOr<TokensResponse> GenerateTokensResponse(
+ const TokensRequest& tokens_request,
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ServerPublicParameters& server_public_parameters,
+ const ServerPrivateParameters& server_private_parameters) override;
+
+ // Always returns "Ok".
+ Status VerifyTokensResponse(
+ absl::Span<const std::string> messages,
+ const TokensRequest& tokens_request,
+ const TokensRequestPrivateState& tokens_request_private_state,
+ const TokensResponse& tokens_response,
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ClientPrivateParameters& client_private_parameters,
+ const ServerPublicParameters& server_public_parameters) override;
+
+ // Returns a set of tokens containing randomly generated "nonce" values, and
+ // all other fields empty.
+ StatusOr<std::vector<Token>> RecoverTokens(
+ absl::Span<const std::string> messages,
+ const TokensRequest& tokens_request,
+ const TokensRequestPrivateState& tokens_request_private_state,
+ const TokensResponse& tokens_response,
+ const SchemeParameters& scheme_parameters,
+ const ClientPublicParameters& client_public_parameters,
+ const ClientPrivateParameters& client_private_parameters,
+ const ServerPublicParameters& server_public_parameters) override;
+
+ // Always returns "Ok".
+ Status VerifyToken(
+ std::string m, const Token& token,
+ const SchemeParameters& scheme_parameters,
+ const ServerPublicParameters& server_public_parameters,
+ const ServerPrivateParameters& server_private_parameters) override;
+
+ protected:
+ FakeAnonymousCountingTokens() = default;
+};
+
+} // namespace anonymous_counting_tokens
+} // namespace private_join_and_compute
+
+#endif // PRIVATE_JOIN_AND_COMPUTE_ANONYMOUS_COUNTING_TOKENS_FAKE_ACT_H_