1  /*
2   * Copyright (c) 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  
16  #include "key_agreement_impl.h"
17  
18  namespace OHOS {
19  namespace CryptoFramework {
KeyAgreementImpl(HcfKeyAgreement * keyAgreement)20  KeyAgreementImpl::KeyAgreementImpl(HcfKeyAgreement *keyAgreement)
21  {
22      this->keyAgreement_ = keyAgreement;
23  }
24  
~KeyAgreementImpl()25  KeyAgreementImpl::~KeyAgreementImpl()
26  {
27      HcfObjDestroy(this->keyAgreement_);
28      this->keyAgreement_ = nullptr;
29  }
30  
GetKeyAgreement()31  HcfKeyAgreement *KeyAgreementImpl::GetKeyAgreement()
32  {
33      return this->keyAgreement_;
34  }
35  
GenerateSecret(HcfPriKey * priKey,HcfPubKey * pubKey,int32_t * errCode)36  HcfBlob KeyAgreementImpl::GenerateSecret(HcfPriKey *priKey, HcfPubKey *pubKey, int32_t *errCode)
37  {
38      HcfBlob returnSecret = { .data = nullptr, .len = 0 };
39      if (this->keyAgreement_ == nullptr || priKey == nullptr || pubKey == nullptr)  {
40          *errCode = HCF_INVALID_PARAMS;
41          return returnSecret;
42      }
43      *errCode = this->keyAgreement_->generateSecret(keyAgreement_, priKey, pubKey, &returnSecret);
44      return returnSecret;
45  }
46  }
47  }