diff options
author | Prabal Singh <prabalsingh@google.com> | 2023-11-13 18:07:22 +0000 |
---|---|---|
committer | Prabal Singh <prabalsingh@google.com> | 2023-11-13 20:36:25 +0000 |
commit | 26b2c690fcfc019b5a7ae55fec2d1fd117809c52 (patch) | |
tree | 22502fb41773fc4aa5a688f7d38da93e3391359b /act/fake_act.h | |
parent | ac7650269463beb0cfb4c26ebf79344f210d5da4 (diff) | |
parent | 3dea51443eaabde75c00cd325bc31e3b848a767f (diff) | |
download | anonymous-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.h | 124 |
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_ |