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#include "digest_parameter.h" 16#include "openssl/evp.h" 17 18namespace OHOS { 19namespace SignatureTools { 20DigestParameter::DigestParameter() : digestOutputSizeBytes(0), md(nullptr), ctxPtr(nullptr) 21{ 22} 23 24DigestParameter::~DigestParameter() 25{ 26 if (ctxPtr != nullptr) { 27 EVP_MD_CTX_destroy(ctxPtr); 28 ctxPtr = nullptr; 29 } 30 /* md points to the OpenSSL global static struct constant, no need to free. */ 31 md = nullptr; 32} 33 34DigestParameter::DigestParameter(const DigestParameter& other) 35{ 36 digestOutputSizeBytes = other.digestOutputSizeBytes; 37 md = other.md; 38 ctxPtr = EVP_MD_CTX_create(); 39 EVP_MD_CTX_copy(ctxPtr, other.ctxPtr); 40} 41 42DigestParameter& DigestParameter::operator = (const DigestParameter& other) 43{ 44 if (ctxPtr != nullptr) { 45 EVP_MD_CTX_destroy(ctxPtr); 46 ctxPtr = nullptr; 47 } 48 digestOutputSizeBytes = other.digestOutputSizeBytes; 49 md = other.md; 50 ctxPtr = EVP_MD_CTX_create(); 51 EVP_MD_CTX_copy(ctxPtr, other.ctxPtr); 52 return *this; 53} 54} 55}