1 /*
2  * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef SINATURETOOLS_LOCAL_SIGNER_H
16 #define SINATURETOOLS_LOCAL_SIGNER_H
17 
18 #include "openssl/x509.h"
19 #include "signer.h"
20 
21 namespace OHOS {
22 namespace SignatureTools {
23 
24 class LocalSigner : public Signer {
25 public:
26     /**
27     * Create local signer.
28     *
29     * @param keyPair   Private key to sign
30     * @param certificates Cert chain to sign
31     */
32     LocalSigner(EVP_PKEY* keyPair, STACK_OF(X509)* certificates);
33     ~LocalSigner()override;
34     /**
35     * GetCrls.
36     *
37     * @return crls
38     */
39     STACK_OF(X509_CRL)* GetCrls()const override;
40     /**
41     * GetCertificates.
42     *
43     * @return Certificates
44     */
45     STACK_OF(X509)* GetCertificates()const  override;
46     std::string GetSignature(const std::string& data, const std::string& signAlg)const override;
47 
48 private:
49     /**
50     * key pair.
51     */
52     EVP_PKEY* m_keyPair;
53     /**
54     * certchain.
55     */
56     STACK_OF(X509)* m_certificates;
57 };
58 } // namespace SignatureTools
59 } // namespace OHOS
60 #endif // SINATURETOOLS_LOCAL_SIGNER_H