You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.2 KiB
82 lines
3.2 KiB
// |
|
// Copyright (C) 2015 The Android Open Source Project |
|
// |
|
// 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. |
|
// |
|
|
|
#ifndef ATTESTATION_SERVER_KEY_STORE_H_ |
|
#define ATTESTATION_SERVER_KEY_STORE_H_ |
|
|
|
#include <string> |
|
|
|
#include <base/macros.h> |
|
|
|
#include "attestation/common/common.pb.h" |
|
|
|
namespace attestation { |
|
|
|
// A mock-able key storage interface. |
|
class KeyStore { |
|
public: |
|
KeyStore() {} |
|
virtual ~KeyStore() {} |
|
|
|
// Reads key data from the store for the key identified by |key_label| and by |
|
// |username|. On success true is returned and |key_data| is populated. |
|
virtual bool Read(const std::string& username, |
|
const std::string& key_label, |
|
std::string* key_data) = 0; |
|
|
|
// Writes key data to the store for the key identified by |key_label| and by |
|
// |username|. If such a key already exists the existing data will be |
|
// overwritten. |
|
virtual bool Write(const std::string& username, |
|
const std::string& key_label, |
|
const std::string& key_data) = 0; |
|
|
|
// Deletes key data for the key identified by |key_label| and by |username|. |
|
// Returns false if key data exists but could not be deleted. |
|
virtual bool Delete(const std::string& username, |
|
const std::string& key_label) = 0; |
|
|
|
// Deletes key data for all keys identified by |key_prefix| and by |username| |
|
// Returns false if key data exists but could not be deleted. |
|
virtual bool DeleteByPrefix(const std::string& username, |
|
const std::string& key_prefix) = 0; |
|
|
|
// Registers a key to be associated with |username|. |
|
// The provided |label| will be associated with all registered objects. |
|
// |private_key_blob| holds the private key in some opaque format and |
|
// |public_key_der| holds the public key in PKCS #1 RSAPublicKey format. |
|
// If a non-empty |certificate| is provided it will be registered along with |
|
// the key. Returns true on success. |
|
virtual bool Register(const std::string& username, |
|
const std::string& label, |
|
KeyType key_type, |
|
KeyUsage key_usage, |
|
const std::string& private_key_blob, |
|
const std::string& public_key_der, |
|
const std::string& certificate) = 0; |
|
|
|
// Registers a |certificate| that is not associated to a registered key. The |
|
// certificate will be associated with |username|. |
|
virtual bool RegisterCertificate(const std::string& username, |
|
const std::string& certificate) = 0; |
|
|
|
private: |
|
DISALLOW_COPY_AND_ASSIGN(KeyStore); |
|
}; |
|
|
|
} // namespace attestation |
|
|
|
#endif // ATTESTATION_SERVER_KEY_STORE_H_
|
|
|