| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BIOD_BIOMETRICS_MANAGER_RECORD_H_ |
| #define BIOD_BIOMETRICS_MANAGER_RECORD_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include <base/base64.h> |
| #include <base/logging.h> |
| #include <base/strings/string_util.h> |
| |
| namespace biod { |
| |
| // Represents a record previously registered with this BiometricsManager in an |
| // EnrollSession. These objects can be retrieved with GetRecords. |
| class BiometricsManagerRecord { |
| public: |
| virtual ~BiometricsManagerRecord() = default; |
| virtual const std::string& GetId() const = 0; |
| virtual const std::string& GetUserId() const = 0; |
| virtual const std::string& GetLabel() const = 0; |
| virtual const std::vector<uint8_t>& GetValidationVal() const = 0; |
| |
| // Returns true on success. |
| virtual bool SetLabel(std::string label) = 0; |
| |
| // Whether the BiometricsManager's device supports positive match secret. |
| virtual bool SupportsPositiveMatchSecret() const = 0; |
| |
| // Returns true on success. |
| virtual bool Remove() = 0; |
| |
| virtual const std::string GetValidationValBase64() const { |
| const auto& validation_val_bytes = GetValidationVal(); |
| std::string validation_val(validation_val_bytes.begin(), |
| validation_val_bytes.end()); |
| base::Base64Encode(validation_val, &validation_val); |
| return validation_val; |
| } |
| |
| virtual bool IsValidUTF8() const { |
| if (!base::IsStringUTF8(GetLabel())) { |
| LOG(ERROR) << "Label is not valid UTF8"; |
| return false; |
| } |
| |
| if (!base::IsStringUTF8(GetId())) { |
| LOG(ERROR) << "Record ID is not valid UTF8"; |
| return false; |
| } |
| |
| if (!base::IsStringUTF8(GetValidationValBase64())) { |
| LOG(ERROR) << "Validation value is not valid UTF8"; |
| return false; |
| } |
| |
| if (!base::IsStringUTF8(GetUserId())) { |
| LOG(ERROR) << "User ID is not valid UTF8"; |
| return false; |
| } |
| |
| return true; |
| } |
| }; |
| |
| } // namespace biod |
| |
| #endif // BIOD_BIOMETRICS_MANAGER_RECORD_H_ |