blob: 314ec4309334439f326495aeea1a12a45ba61184 [file] [log] [blame]
/*
*
* Copyright (c) 2016-2017 Nest Labs, Inc.
* All rights reserved.
*
* 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.
*/
/**
* @file
* This file contains definitions of test certificates used by various unit tests.
*
*/
#ifndef TESTWEAVECERTDATA_H_
#define TESTWEAVECERTDATA_H_
namespace nl {
namespace TestCerts {
using namespace nl::Weave::Profiles::Security;
enum
{
kTestCert_Mask = 0x000FF000,
kTestCertLoadFlag_Mask = 0x0FF00000,
kDecodeFlag_Mask = 0x0000000F, // values defined in WeaveCert.h
// Available test cert types.
kTestCert_None = 0x00000000,
kTestCert_Root = 0x00001000,
kTestCert_RootKey = 0x00002000,
kTestCert_Root_SHA256 = 0x00003000,
kTestCert_CA = 0x00004000,
kTestCert_CA_SHA256 = 0x00005000,
kTestCert_Dev = 0x00006000,
kTestCert_Dev_SHA256 = 0x00007000,
kTestCert_SelfSigned = 0x00008000,
kTestCert_SelfSigned_SHA256 = 0x00009000,
kTestCert_ServiceEndpoint = 0x0000A000,
kTestCert_ServiceEndpoint_SHA256 = 0x0000B000,
kTestCert_FirmwareSigning = 0x0000C000,
kTestCert_FirmwareSigning_SHA256 = 0x0000D000,
// Special flags to alter how certificates are fetched/loaded.
kTestCertLoadFlag_DERForm = 0x00100000,
kTestCertLoadFlag_SuppressIsCA = 0x00200000,
kTestCertLoadFlag_SuppressKeyUsage = 0x00400000,
kTestCertLoadFlag_SuppressKeyCertSign = 0x00800000,
kTestCertLoadFlag_SetPathLenConstZero = 0x01000000,
kTestCertLoadFlag_SetAppDefinedCertType = 0x02000000,
kTestCertBufSize = 1024, // Size of buffer needed to hold any of the test certificates
// (in either Weave or DER form), or to decode the certificates.
};
extern void GetTestCert(int selector, const uint8_t *& certData, size_t& certDataLen);
extern const char *GetTestCertName(int selector);
extern void LoadTestCert(WeaveCertificateSet& certSet, int selector);
extern const int gTestCerts[];
extern const size_t gNumTestCerts;
extern const uint8_t sTestCert_Root_Weave[];
extern const size_t sTestCertLength_Root_Weave;
extern const uint8_t sTestCert_Root_DER[];
extern const size_t sTestCertLength_Root_DER;
extern const uint8_t sTestCert_Root_PublicKey[];
extern const size_t sTestCertLength_Root_PublicKey;
extern const uint8_t sTestCert_Root_SubjectKeyId[];
extern const size_t sTestCertLength_Root_SubjectKeyId;
extern const uint32_t sTestCert_Root_CurveOID;
extern const uint64_t sTestCert_Root_Id;
extern const uint8_t sTestCert_Root_SHA256_Weave[];
extern const size_t sTestCertLength_Root_SHA256_Weave;
extern const uint8_t sTestCert_Root_SHA256_DER[];
extern const size_t sTestCertLength_Root_SHA256_DER;
extern const uint8_t sTestCert_CA_Weave[];
extern const size_t sTestCertLength_CA_Weave;
extern const uint8_t sTestCert_CA_DER[];
extern const size_t sTestCertLength_CA_DER;
extern const uint8_t sTestCert_CA_SHA256_Weave[];
extern const size_t sTestCertLength_CA_SHA256_Weave;
extern const uint8_t sTestCert_CA_SHA256_DER[];
extern const size_t sTestCertLength_CA_SHA256_DER;
extern const uint8_t sTestCert_Dev_Weave[];
extern const size_t sTestCertLength_Dev_Weave;
extern const uint8_t sTestCert_Dev_DER[];
extern const size_t sTestCertLength_Dev_DER;
extern const uint8_t sTestCert_Dev_SHA256_Weave[];
extern const size_t sTestCertLength_Dev_SHA256_Weave;
extern const uint8_t sTestCert_Dev_SHA256_DER[];
extern const size_t sTestCertLength_Dev_SHA256_DER;
extern const uint8_t sTestCert_SelfSigned_Weave[];
extern const size_t sTestCertLength_SelfSigned_Weave;
extern const uint8_t sTestCert_SelfSigned_DER[];
extern const size_t sTestCertLength_SelfSigned_DER;
extern const uint8_t sTestCert_SelfSigned_SHA256_Weave[];
extern const size_t sTestCertLength_SelfSigned_SHA256_Weave;
extern const uint8_t sTestCert_SelfSigned_SHA256_DER[];
extern const size_t sTestCertLength_SelfSigned_SHA256_DER;
extern const uint8_t sTestCert_ServiceEndpoint_Weave[];
extern const size_t sTestCertLength_ServiceEndpoint_Weave;
extern const uint8_t sTestCert_ServiceEndpoint_DER[];
extern const size_t sTestCertLength_ServiceEndpoint_DER;
extern const uint8_t sTestCert_ServiceEndpoint_SHA256_Weave[];
extern const size_t sTestCertLength_ServiceEndpoint_SHA256_Weave;
extern const uint8_t sTestCert_ServiceEndpoint_SHA256_DER[];
extern const size_t sTestCertLength_ServiceEndpoint_SHA256_DER;
extern const uint8_t sTestCert_FirmwareSigning_Weave[];
extern const size_t sTestCertLength_FirmwareSigning_Weave;
extern const uint8_t sTestCert_FirmwareSigning_DER[];
extern const size_t sTestCertLength_FirmwareSigning_DER;
extern const uint8_t sTestCert_FirmwareSigning_SHA256_Weave[];
extern const size_t sTestCertLength_FirmwareSigning_SHA256_Weave;
extern const uint8_t sTestCert_FirmwareSigning_SHA256_DER[];
extern const size_t sTestCertLength_FirmwareSigning_SHA256_DER;
} // namespace TestCerts
} // namespace nl
#endif /* TESTWEAVECERTDATA_H_ */