blob: 2dc169c2b678374c41d04b23749933bdc56b4982 [file] [log] [blame]
/*
*
* Copyright (c) 2024 Project CHIP Authors
*
* 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.
*/
#pragma once
#include <credentials/attestation_verifier/DeviceAttestationVerifier.h>
#include <lib/support/Span.h>
#include <string>
namespace chip {
namespace Credentials {
class TestDACRevocationDelegateImpl : public DeviceAttestationRevocationDelegate
{
public:
TestDACRevocationDelegateImpl() = default;
~TestDACRevocationDelegateImpl() = default;
/**
* @brief Verify whether or not the given DAC chain is revoked.
*
* @param[in] info All of the information required to check for revoked DAC chain.
* @param[in] onCompletion Callback handler to provide Attestation Information Verification result to the caller of
* CheckForRevokedDACChain().
*/
void CheckForRevokedDACChain(
const DeviceAttestationVerifier::AttestationInfo & info,
Callback::Callback<DeviceAttestationVerifier::OnAttestationInformationVerification> * onCompletion) override;
// Set the path to the device attestation revocation set JSON file.
// revocation set can be generated using credentials/generate-revocation-set.py script
// This API returns CHIP_ERROR_INVALID_ARGUMENT if the path is null.
CHIP_ERROR SetDeviceAttestationRevocationSetPath(std::string_view path);
// Clear the path to the device attestation revocation set JSON file.
// This can be used to skip the revocation check
void ClearDeviceAttestationRevocationSetPath();
private:
CHIP_ERROR GetAKIDHexStr(const ByteSpan & certDer, MutableCharSpan & outAKIDHexStr);
CHIP_ERROR GetSerialNumberHexStr(const ByteSpan & certDer, MutableCharSpan & outSerialNumberHexStr);
CHIP_ERROR GetIssuerNameBase64Str(const ByteSpan & certDer, MutableCharSpan & outIssuerNameBase64String);
bool IsEntryInRevocationSet(const CharSpan & akidHexStr, const CharSpan & issuerNameBase64Str,
const CharSpan & serialNumberHexStr);
bool IsCertificateRevoked(const ByteSpan & certDer);
std::string mDeviceAttestationRevocationSetPath;
};
} // namespace Credentials
} // namespace chip