From 6635734c4c3d8847b0c8d18592a943878449b8b9 Mon Sep 17 00:00:00 2001 From: Kyungwook Tak Date: Mon, 7 Sep 2015 13:41:13 +0900 Subject: [PATCH] Remove certsvc_certificate_search API The API doesn't needed anymore because storing data in cert-svc repo is removed. It was in cert-svc library. Change-Id: Id7365ebd7a24db67c04fa57b1f2689629672f68b Signed-off-by: Kyungwook Tak --- tests/capi/test-certificate.cpp | 36 -- vcore/CMakeLists.txt | 1 - vcore/orig/cert-service-process.c | 949 -------------------------------------- vcore/orig/cert-service-process.h | 40 -- vcore/orig/cert-service-util.c | 137 +++++- vcore/orig/cert-service-util.h | 5 + vcore/orig/cert-service.c | 25 - vcore/orig/cert-service.h | 25 - vcore/vcore/api.cpp | 96 +--- 9 files changed, 152 insertions(+), 1162 deletions(-) delete mode 100644 vcore/orig/cert-service-process.c delete mode 100644 vcore/orig/cert-service-process.h diff --git a/tests/capi/test-certificate.cpp b/tests/capi/test-certificate.cpp index c43574b..7223d05 100644 --- a/tests/capi/test-certificate.cpp +++ b/tests/capi/test-certificate.cpp @@ -87,42 +87,6 @@ RUNNER_TEST(T0101_certificate_new_from_file) certsvc_certificate_free(cert); } -RUNNER_TEST(T0102_certificate_search) -{ - CertSvcCertificateList handler; - int result = certsvc_certificate_search( - vinstance, - CERTSVC_SUBJECT_COMMON_NAME, - "WAC Application Services Ltd", - &handler); - - RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, - "Error in search method. errcode : " << result); - - CertSvcCertificate cert; - - result = certsvc_certificate_list_get_one(handler, 0, &cert); - - RUNNER_ASSERT_MSG(CERTSVC_TRUE == result, - "Error reading certificate. errcode : " << result); - - CertSvcString string; - - certsvc_certificate_get_string_field( - cert, - CERTSVC_SUBJECT_COUNTRY_NAME, - &string); - - const char *ptr = "GB"; - const char *buffer; - - certsvc_string_to_cstring(string, &buffer, NULL); - - result = strncmp(buffer, ptr, strlen(ptr)); - - RUNNER_ASSERT_MSG(0 == result, "Country does not match. result : " << result); -} - RUNNER_TEST(T0103_is_signed_by) { CertSvcCertificate cert1, cert2; diff --git a/vcore/CMakeLists.txt b/vcore/CMakeLists.txt index 1d34f6b..7e7405e 100644 --- a/vcore/CMakeLists.txt +++ b/vcore/CMakeLists.txt @@ -16,7 +16,6 @@ SET(VCORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) SET(VCORE_SOURCES ${VCORE_DIR}/orig/cert-service.c ${VCORE_DIR}/orig/cert-service-util.c - ${VCORE_DIR}/orig/cert-service-process.c ${VCORE_DIR}/dpl/core/src/assert.cpp ${VCORE_DIR}/dpl/core/src/exception.cpp diff --git a/vcore/orig/cert-service-process.c b/vcore/orig/cert-service-process.c deleted file mode 100644 index 655e57c..0000000 --- a/vcore/orig/cert-service-process.c +++ /dev/null @@ -1,949 +0,0 @@ -/* - * certification service - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Contact: Kidong Kim - * - * 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. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "orig/cert-service.h" -#include "orig/cert-service-util.h" -#include "orig/cert-service-debug.h" -#include "orig/cert-service-process.h" - -#define get_ASN1_INTEGER(x) ASN1_INTEGER_get((x)) -#define get_ASN1_OBJECT(x) OBJ_nid2ln(OBJ_obj2nid((x))) -#define get_X509_NAME(x) X509_NAME_oneline((x), NULL, 0) - -static unsigned char** __get_field_by_tag(unsigned char* str, int *tag_len, cert_svc_name_fld_data* fld) -{ - const struct { - const char* name; - int len; - unsigned char **field; - } tags[] = { - {"C=", 2, &(fld->countryName)}, - {"ST=", 3, &(fld->stateOrProvinceName)}, - {"L=", 2, &(fld->localityName)}, - {"O=", 2, &(fld->organizationName)}, - {"OU=", 3, &(fld->organizationUnitName)}, - {"CN=", 3, &(fld->commonName)}, - {"emailAddress=", 13, &(fld->emailAddress)} - }; - unsigned char **field = NULL; - if (str[0] == '/') { - int i = sizeof(tags) / sizeof(tags[0]) - 1; - while (i >= 0 && strncmp((const char*)(str + 1), (const char*)(tags[i].name), tags[i].len)) { - i--; - } - if (i >= 0) { - *tag_len = tags[i].len + 1; - field = tags[i].field; - } - } - return field; -} - -static X509 *_d2i_X509(cert_svc_mem_buff *certBuf, X509 **out) -{ - const unsigned char *certContent = certBuf->data; - return d2i_X509(out, &certContent, certBuf->size); -} - -/*SURC k.astrakhant 2011.07.14 : this version can parse info string with any order of tags*/ -int parse_name_fld_data(unsigned char* str, cert_svc_name_fld_data* fld) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - unsigned char **prev_field = NULL; - int i = 0, l = 0; - if (fld == NULL) { - ret = CERT_SVC_ERR_INVALID_PARAMETER; - return ret; - } - memset(fld, 0, sizeof(cert_svc_name_fld_data)); - while (str[i] != '\0') { - int tag_len; - unsigned char **field = __get_field_by_tag(str + i, &tag_len, fld); - while (field == NULL && str[i] != '\0') { - i++; - field = __get_field_by_tag(str + i, &tag_len, fld); - } - if (prev_field != NULL) { - *prev_field = (unsigned char*)strndup((const char*)(str + l), i - l); - } - if (field != NULL) { - i += tag_len; - l = i; - prev_field = field; - } - } - return ret; -} - -int parse_time_fld_data(unsigned char* before, unsigned char* after, cert_svc_validity_fld_data* fld) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - char* index = NULL; - char year[5] = {0, }; - char month[3] = {0, }; - char day[3] = {0, }; - char hour[3] = {0, }; - char minute[3] = {0, }; - char second[3] = {0, }; - - if((strlen((char*)before) < 15) || (strlen((char*)after) < 15)) { - SLOGE("[ERR][%s] Fail to parse time fld.", __func__); - ret = CERT_SVC_ERR_INVALID_CERTIFICATE; - goto err; - } - - // first(before) - index = (char*)before; - strncpy(year, index, 4); - (*fld).firstYear = (unsigned int)(strtoul(year, NULL, 10)); - strncpy(month, (index + 4), 2); - (*fld).firstMonth = (unsigned int)(strtoul(month, NULL, 10)); - strncpy(day, (index + 6), 2); - (*fld).firstDay = (unsigned int)(strtoul(day, NULL, 10)); - strncpy(hour, (index + 8), 2); - (*fld).firstHour = (unsigned int)(strtoul(hour, NULL, 10)); - strncpy(minute, (index + 10), 2); - (*fld).firstMinute = (unsigned int)(strtoul(minute, NULL, 10)); - strncpy(second, (index + 12), 2); - (*fld).firstSecond = (unsigned int)(strtoul(second, NULL, 10)); - - // second(after) - index = (char*)after; - strncpy(year, index, 4); - (*fld).secondYear = (unsigned int)(strtoul(year, NULL, 10)); - strncpy(month, (index + 4), 2); - (*fld).secondMonth = (unsigned int)(strtoul(month, NULL, 10)); - strncpy(day, (index + 6), 2); - (*fld).secondDay = (unsigned int)(strtoul(day, NULL, 10)); - strncpy(hour, (index + 8), 2); - (*fld).secondHour = (unsigned int)(strtoul(hour, NULL, 10)); - strncpy(minute, (index + 10), 2); - (*fld).secondMinute = (unsigned int)(strtoul(minute, NULL, 10)); - strncpy(second, (index + 12), 2); - (*fld).secondSecond = (unsigned int)(strtoul(second, NULL, 10)); - -err: - return ret; -} - -int _extract_certificate_data(cert_svc_mem_buff* cert, cert_svc_cert_descriptor* certDesc) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - X509* x = NULL; - int i = 0; - // get signature algorithm - char* signatureAlgo = NULL; - int sigLen = 0; - // get issuer - int issuerStrLen = 0; - unsigned char* tmpIssuerStr = NULL; - // get time - ASN1_GENERALIZEDTIME* timeNotBefore = NULL; - ASN1_GENERALIZEDTIME* timeNotAfter = NULL; - // get subject - int subjectStrLen = 0; - unsigned char* tmpSubjectStr = NULL; - // get public key algorithm - char* publicKeyAlgo = NULL; - int publicKeyAlgoLen = 0; - // get public key - unsigned char* pubkeyTmp = NULL; - int pkeyLen = 0; - EVP_PKEY* evp = NULL; - int issuerUidLen = 0, subjectUidLen = 0; - // get extension values - X509_EXTENSION* ext = NULL; - char* extObject = NULL; - int extObjLen = 0; - char* extValue = NULL; - int extValLen = 0; - - // get signature algorithm and signature - char* sigAlgo = NULL; - int sigAlgoLen = 0, sigDataLen = 0; - - memset(certDesc, 0x00, sizeof(cert_svc_cert_descriptor)); - - _d2i_X509(cert, &x); - if(x == NULL) { - SLOGE("[ERR][%s] Fail to allocate X509 structure.", __func__); - ret = CERT_SVC_ERR_INVALID_CERTIFICATE; - goto err; - } - - /* get type */ - strncpy(certDesc->type, cert->type, 3); - certDesc->type[3] = '\0'; - /* get version and serial number */ - certDesc->info.version = get_ASN1_INTEGER(x->cert_info->version) + 1; // default is 0 --> version 1 - certDesc->info.serialNumber = get_ASN1_INTEGER(x->cert_info->serialNumber); - /* get signature algorithm */ - signatureAlgo = (char*)get_ASN1_OBJECT(x->cert_info->signature->algorithm); - if(signatureAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - sigLen = strlen((const char*)signatureAlgo); - certDesc->info.sigAlgo = (unsigned char*)malloc(sizeof(unsigned char) * (sigLen + 1)); - if(certDesc->info.sigAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.sigAlgo, 0x00, (sigLen + 1)); - memcpy(certDesc->info.sigAlgo, signatureAlgo, sigLen); - /* get issuer */ - tmpIssuerStr = (unsigned char*)get_X509_NAME(x->cert_info->issuer); - issuerStrLen = strlen((const char*)tmpIssuerStr); - certDesc->info.issuerStr = (unsigned char*)malloc(sizeof(unsigned char) * (issuerStrLen + 1)); - if(certDesc->info.issuerStr == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.issuerStr, 0x00, (issuerStrLen + 1)); - memcpy(certDesc->info.issuerStr, tmpIssuerStr, issuerStrLen); - - if((ret = parse_name_fld_data(tmpIssuerStr, &(certDesc->info.issuer))) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to parse cert_svc_name_fld_data.", __func__); - goto err; - } - /* get time */ - ASN1_TIME_to_generalizedtime(x->cert_info->validity->notBefore, &timeNotBefore); - ASN1_TIME_to_generalizedtime(x->cert_info->validity->notAfter, &timeNotAfter); - if((ret = parse_time_fld_data(timeNotBefore->data, timeNotAfter->data, &(certDesc->info.validPeriod))) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to parse cert_svc_validity_fld_data.", __func__); - goto err; - } - /* get subject */ - tmpSubjectStr = (unsigned char*)get_X509_NAME(x->cert_info->subject); - subjectStrLen = strlen((const char*)tmpSubjectStr); - certDesc->info.subjectStr = (unsigned char*)malloc(sizeof(unsigned char) * (subjectStrLen + 1)); - if(certDesc->info.subjectStr == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.subjectStr, 0x00, (subjectStrLen + 1)); - memcpy(certDesc->info.subjectStr, tmpSubjectStr, subjectStrLen); - - if((ret = parse_name_fld_data(tmpSubjectStr, &(certDesc->info.subject))) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to parse cert_svc_name_fld_data.", __func__); - goto err; - } - /* get public key algorithm */ - publicKeyAlgo = (char*)get_ASN1_OBJECT(x->cert_info->key->algor->algorithm); - if(publicKeyAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - - publicKeyAlgoLen = strlen((const char*)publicKeyAlgo); - certDesc->info.pubKeyAlgo = (unsigned char*)malloc(sizeof(unsigned char) * (publicKeyAlgoLen + 1)); - if(certDesc->info.pubKeyAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.pubKeyAlgo, 0x00, (publicKeyAlgoLen + 1)); - memcpy(certDesc->info.pubKeyAlgo, publicKeyAlgo, publicKeyAlgoLen); - /* get public key */ - if((evp = X509_get_pubkey(x)) == NULL) { - SLOGE("[ERR][%s] Public key is null.", __func__); - ret = CERT_SVC_ERR_INVALID_CERTIFICATE; - goto err; - } - pkeyLen = i2d_PublicKey(x->cert_info->key->pkey, NULL); - certDesc->info.pubKey = (unsigned char*)malloc(sizeof(unsigned char) * (pkeyLen + 1)); - if(certDesc->info.pubKey == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - pubkeyTmp = certDesc->info.pubKey; - i2d_PublicKey(x->cert_info->key->pkey, &pubkeyTmp); - certDesc->info.pubKeyLen = pkeyLen; - /* get issuer UID */ - if(x->cert_info->issuerUID != NULL) { - issuerUidLen = x->cert_info->issuerUID->length; - certDesc->info.issuerUID = (unsigned char*)malloc(sizeof(unsigned char) * (issuerUidLen + 1)); - if(certDesc->info.issuerUID == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.issuerUID, 0x00, (issuerUidLen + 1)); - memcpy(certDesc->info.issuerUID, x->cert_info->issuerUID->data, issuerUidLen); - } - else - certDesc->info.issuerUID = NULL; - - /* get subject UID */ - if(x->cert_info->subjectUID != NULL) { - subjectUidLen = x->cert_info->subjectUID->length; - certDesc->info.subjectUID = (unsigned char*)malloc(sizeof(unsigned char) * (subjectUidLen + 1)); - if(certDesc->info.subjectUID == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->info.subjectUID, 0x00, (subjectUidLen + 1)); - memcpy(certDesc->info.subjectUID, x->cert_info->subjectUID->data, subjectUidLen); - } - else - certDesc->info.subjectUID = NULL; - /* get extension fields */ - if(x->cert_info->extensions != NULL) { -// certDesc->ext.numOfFields = x->cert_info->extensions->num; - certDesc->ext.numOfFields = sk_X509_EXTENSION_num(x->cert_info->extensions); - certDesc->ext.fields = (cert_svc_cert_fld_desc*)malloc(sizeof(cert_svc_cert_fld_desc) * certDesc->ext.numOfFields); - if(certDesc->ext.fields == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - - for(i = 0; i < (int)certDesc->ext.numOfFields; i++) { - ext = sk_X509_EXTENSION_value(x->cert_info->extensions, i); - if(ext != NULL) { - extObject = (char*)get_ASN1_OBJECT(ext->object); - if(extObject == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - extObjLen = strlen((const char*)extObject); - certDesc->ext.fields[i].name = (unsigned char*)malloc(sizeof(unsigned char) * (extObjLen + 1)); - if(certDesc->ext.fields[i].name == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->ext.fields[i].name, 0x00, (extObjLen + 1)); - memcpy(certDesc->ext.fields[i].name, extObject, extObjLen); - - extValue = (char*)ext->value->data; - extValLen = ext->value->length; - certDesc->ext.fields[i].data = (unsigned char*)malloc(sizeof(unsigned char) * (extValLen + 1)); - if(certDesc->ext.fields[i].data == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->ext.fields[i].data, 0x00, (extValLen + 1)); - memcpy(certDesc->ext.fields[i].data, extValue, extValLen); - - certDesc->ext.fields[i].datasize = extValLen; - } - } - } - /* get signature algorithm and signature */ - sigAlgo = (char*)get_ASN1_OBJECT(x->sig_alg->algorithm); - if(sigAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - sigAlgoLen = strlen((const char*)sigAlgo); - certDesc->signatureAlgo = (unsigned char*)malloc(sizeof(unsigned char) * (sigAlgoLen + 1)); - if(certDesc->signatureAlgo == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->signatureAlgo, 0x00, (sigAlgoLen + 1)); - memcpy(certDesc->signatureAlgo, sigAlgo, sigAlgoLen); - - sigDataLen = x->signature->length; - certDesc->signatureLen = sigDataLen; - certDesc->signatureData = (unsigned char*)malloc(sizeof(unsigned char) * (sigDataLen + 1)); - if(certDesc->signatureData == NULL) { - SLOGE("[ERR][%s] Failed to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - memset(certDesc->signatureData, 0x00, (sigDataLen + 1)); - memcpy(certDesc->signatureData, x->signature->data, sigDataLen); - -err: - if(x != NULL) X509_free(x); - if(evp != NULL) EVP_PKEY_free(evp); - - if(tmpIssuerStr != NULL) OPENSSL_free(tmpIssuerStr); - if(tmpSubjectStr != NULL) OPENSSL_free(tmpSubjectStr); - - if(timeNotBefore != NULL) ASN1_GENERALIZEDTIME_free(timeNotBefore); - if(timeNotAfter != NULL) ASN1_GENERALIZEDTIME_free(timeNotAfter); - - return ret; -} - -int search_data_field(search_field fldName, char* fldData, cert_svc_cert_descriptor* certDesc) -{ - int ret = -1; - int len = 0; - - switch(fldName) { - case ISSUER_COUNTRY: - if(certDesc->info.issuer.countryName) { - len = strlen((const char*)(certDesc->info.issuer.countryName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.countryName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_STATEORPROVINCE: - if(certDesc->info.issuer.stateOrProvinceName) { - len = strlen((const char*)(certDesc->info.issuer.stateOrProvinceName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.stateOrProvinceName), len)) { - if((int)strlen(fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_LOCALITY: - if(certDesc->info.issuer.localityName) { - len = strlen((const char*)(certDesc->info.issuer.localityName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.localityName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_ORGANIZATION: - if(certDesc->info.issuer.organizationName) { - len = strlen((const char*)(certDesc->info.issuer.organizationName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.organizationName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_ORGANIZATIONUNIT: - if(certDesc->info.issuer.organizationUnitName) { - len = strlen((const char*)(certDesc->info.issuer.organizationUnitName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.organizationUnitName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_COMMONNAME: - if(certDesc->info.issuer.commonName) { - len = strlen((const char*)(certDesc->info.issuer.commonName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.commonName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_EMAILADDRESS: - if(certDesc->info.issuer.emailAddress) { - len = strlen((const char*)(certDesc->info.issuer.emailAddress)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuer.emailAddress), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case ISSUER_STR: - if(certDesc->info.issuerStr) { - len = strlen((const char*)(certDesc->info.issuerStr)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.issuerStr), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_COUNTRY: - if(certDesc->info.subject.countryName) { - len = strlen((const char*)(certDesc->info.subject.countryName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.countryName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_STATEORPROVINCE: - if(certDesc->info.subject.stateOrProvinceName) { - len = strlen((const char*)(certDesc->info.subject.stateOrProvinceName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.stateOrProvinceName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_LOCALITY: - if(certDesc->info.subject.localityName) { - len = strlen((const char*)(certDesc->info.subject.localityName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.localityName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_ORGANIZATION: - if(certDesc->info.subject.organizationName) { - len = strlen((const char*)(certDesc->info.subject.organizationName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.organizationName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_ORGANIZATIONUNIT: - if(certDesc->info.subject.organizationUnitName) { - len = strlen((const char*)(certDesc->info.subject.organizationUnitName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.organizationUnitName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_COMMONNAME: - if(certDesc->info.subject.commonName) { - len = strlen((const char*)(certDesc->info.subject.commonName)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.commonName), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_EMAILADDRESS: - if(certDesc->info.subject.emailAddress) { - len = strlen((const char*)(certDesc->info.subject.emailAddress)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subject.emailAddress), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - case SUBJECT_STR: - if(certDesc->info.subjectStr) { - len = strlen((const char*)(certDesc->info.subjectStr)); - if(!strncmp((const char*)fldData, (const char*)(certDesc->info.subjectStr), len)) { - if((int)strlen((const char*)fldData) == len) ret = 1; - else ret = 0; - } - else ret = 0; - } - else ret = 0; - break; - default: - ret = 0; - } - - return ret; -} - -int _get_all_certificates(char *const *paths, cert_svc_filename_list **lst) { - int ret = CERT_SVC_ERR_NO_ERROR; - FTS *fts = NULL; - FTSENT *ftsent; - - char tmp[10]; - int len; - cert_svc_filename_list *local = NULL; - cert_svc_filename_list *el; - - if (NULL == (fts = fts_open(paths, FTS_LOGICAL, NULL))) { - ret = CERT_SVC_ERR_FILE_IO; - SLOGE("[ERR][%s] Fail to open directories.", __func__); - goto out; - } - - while ((ftsent = fts_read(fts)) != NULL) { - - if (ftsent->fts_info == FTS_ERR || ftsent->fts_info == FTS_NS) { - ret = CERT_SVC_ERR_FILE_IO; - SLOGE("[ERR][%s] Fail to read directories.", __func__); - goto out; - } - - if (ftsent->fts_info != FTS_F) - continue; - - if (-1 != readlink(ftsent->fts_path, tmp, 10)) - continue; - - len = strlen((const char *)(ftsent->fts_path)); - if (strcmp((ftsent->fts_path + len - strlen(".pem")), ".pem") != 0 - && strcmp((ftsent->fts_path + len - strlen(".der")), ".der") != 0) - continue; - - el = (cert_svc_filename_list*)malloc(sizeof(cert_svc_filename_list)); - if (!el) { - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - goto out; - } - el->next = local; - local = el; - - local->filename = (char*)malloc(len+1); - if (!local->filename) { - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - goto out; - } - strncpy(local->filename, ftsent->fts_path, len+1); - } - - *lst = local; - local = NULL; - -out: - while (local) { - el = local; - local = local->next; - free(el->filename); - free(el); - } - - if (fts != NULL) - fts_close(fts); - return ret; -} - -int get_all_certificates(cert_svc_filename_list** allCerts) -{ - int ret; - char *buffer[4]; - - buffer[0] = ROOT_CA_CERTS_DIR; - buffer[1] = CERTSVC_DIR; - buffer[2] = SYSTEM_CERT_DIR; - buffer[3] = NULL; - - if (!allCerts) { - SLOGE("[ERR][%s] Invalid argument.", __func__); - return CERT_SVC_ERR_INVALID_PARAMETER; - } - - if ((ret = _get_all_certificates(buffer, allCerts)) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to get filelist.", __func__); - return ret; - } - - return CERT_SVC_ERR_NO_ERROR; -} - -int _search_certificate(cert_svc_filename_list** fileNames, search_field fldName, char* fldData) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - cert_svc_filename_list* allCerts = NULL; - cert_svc_filename_list* p = NULL; - cert_svc_filename_list* q = NULL; - cert_svc_filename_list* newNode = NULL; - cert_svc_mem_buff* certBuf = NULL; - cert_svc_cert_descriptor* certDesc = NULL; - int matched = 0; - struct stat file_info; - - if((ret = get_all_certificates(&allCerts)) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to get all certificate file list, ret: [%d]", __func__, ret); - goto err; - } - - /* if match, store certificate file path into fileNames */ - p = allCerts; - - while(1) { - if((lstat(p->filename, &file_info)) < 0) { // get file information - SLOGE("[ERR][%s] Fail to get file(%s) information.", __func__, p->filename); - ret = CERT_SVC_ERR_INVALID_OPERATION; - goto err; - } - if((file_info.st_mode & S_IFLNK) == S_IFLNK) { // if symbolic link, continue - SLOGD("[LOG][%s] %s is symbolic link, ignored.", __func__, p->filename); - goto fail_to_load_file; - } - - // allocate memory - if(!(certBuf = (cert_svc_mem_buff*)malloc(sizeof(cert_svc_mem_buff)))) { - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - - // load content into buffer - if((ret = cert_svc_util_load_file_to_buffer(p->filename, certBuf)) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to load file to buffer, filename: [%s], ret: [%d]", __func__, p->filename, ret); - free(certBuf); - certBuf = NULL; - goto fail_to_load_file; - } - - // allocate memory - if(!(certDesc = (cert_svc_cert_descriptor*)malloc(sizeof(cert_svc_cert_descriptor)))) { - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - - // load content into descriptor buffer - if((ret = _extract_certificate_data(certBuf, certDesc)) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to extract certificate data, filename: [%s], ret: [%d]", __func__, p->filename, ret); - goto fail_to_extract_file; - } - - // search - if(search_data_field(fldName, fldData, certDesc) == 1) { // found!! - matched = 1; - - if(!(newNode = (cert_svc_filename_list*)malloc(sizeof(cert_svc_filename_list)))) { - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - goto err; - } - if(!(newNode->filename = (char*)malloc(sizeof(char) * CERT_SVC_MAX_FILE_NAME_SIZE))) { - SLOGE("[ERR][%s] Fail to allocate memory.", __func__); - ret = CERT_SVC_ERR_MEMORY_ALLOCATION; - free(newNode); - goto err; - } - memset(newNode->filename, 0x00, CERT_SVC_MAX_FILE_NAME_SIZE); - - strncpy(newNode->filename, p->filename, CERT_SVC_MAX_FILE_NAME_SIZE - 1); - newNode->filename[CERT_SVC_MAX_FILE_NAME_SIZE - 1] = '\0'; - - newNode->next = NULL; - - if((*fileNames) == NULL) - (*fileNames) = newNode; - else { - q = (*fileNames); - while(q->next != NULL) - q = q->next; - - q->next = newNode; - } - } - -fail_to_extract_file: - // free allocated memory - certBuf, certDesc - release_certificate_buf(certBuf); - certBuf = NULL; - release_certificate_data(certDesc); - certDesc = NULL; - -fail_to_load_file: - if(p->next == NULL) - break; - p = p->next; - } - - if(matched != 1) { // not founded - SLOGE("[ERR][%s] Cannot find any certificate you want.", __func__); - ret = CERT_SVC_ERR_NO_MORE_CERTIFICATE; - } - else - ret = CERT_SVC_ERR_NO_ERROR; - -err: - release_certificate_buf(certBuf); - release_certificate_data(certDesc); - release_filename_list(allCerts); - - return ret; -} - -int release_certificate_buf(cert_svc_mem_buff* certBuf) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - - if(certBuf == NULL) - return ret; - - if(certBuf->data != NULL) { - free(certBuf->data); - certBuf->data = NULL; - } - free(certBuf); - certBuf = NULL; - - return ret; -} - -int release_certificate_data(cert_svc_cert_descriptor* certDesc) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - int i = 0; - - if(certDesc == NULL) - return ret; - - /* parse cert descriptor information fields */ - if(certDesc->info.sigAlgo != NULL) free(certDesc->info.sigAlgo); - if(certDesc->info.issuerStr != NULL) free(certDesc->info.issuerStr); - if(certDesc->info.issuer.countryName != NULL) free(certDesc->info.issuer.countryName); - if(certDesc->info.issuer.localityName != NULL) free(certDesc->info.issuer.localityName); - if(certDesc->info.issuer.stateOrProvinceName != NULL) free(certDesc->info.issuer.stateOrProvinceName); - if(certDesc->info.issuer.organizationName != NULL) free(certDesc->info.issuer.organizationName); - if(certDesc->info.issuer.organizationUnitName != NULL) free(certDesc->info.issuer.organizationUnitName); - if(certDesc->info.issuer.commonName != NULL) free(certDesc->info.issuer.commonName); - if(certDesc->info.issuer.emailAddress != NULL) free(certDesc->info.issuer.emailAddress); - if(certDesc->info.subjectStr != NULL) free(certDesc->info.subjectStr); - if(certDesc->info.subject.countryName != NULL) free(certDesc->info.subject.countryName); - if(certDesc->info.subject.localityName != NULL) free(certDesc->info.subject.localityName); - if(certDesc->info.subject.stateOrProvinceName != NULL) free(certDesc->info.subject.stateOrProvinceName); - if(certDesc->info.subject.organizationName != NULL) free(certDesc->info.subject.organizationName); - if(certDesc->info.subject.organizationUnitName != NULL) free(certDesc->info.subject.organizationUnitName); - if(certDesc->info.subject.commonName != NULL) free(certDesc->info.subject.commonName); - if(certDesc->info.subject.emailAddress != NULL) free(certDesc->info.subject.emailAddress); - if(certDesc->info.pubKeyAlgo != NULL) free(certDesc->info.pubKeyAlgo); - if(certDesc->info.pubKey != NULL) free(certDesc->info.pubKey); - if(certDesc->info.issuerUID != NULL) free(certDesc->info.issuerUID); - if(certDesc->info.subjectUID != NULL) free(certDesc->info.subjectUID); - - /* parse cert descriptor extension fields */ - if(certDesc->ext.numOfFields > 0) { - for(i = 0; i < (int)certDesc->ext.numOfFields; i++) { - if(certDesc->ext.fields[i].name != NULL) free(certDesc->ext.fields[i].name); - if(certDesc->ext.fields[i].data != NULL) free(certDesc->ext.fields[i].data); - } - if(certDesc->ext.fields != NULL) free(certDesc->ext.fields); - } - - /* parse signature */ - if(certDesc->signatureAlgo != NULL) free(certDesc->signatureAlgo); - if(certDesc->signatureData != NULL) free(certDesc->signatureData); - - if(certDesc != NULL) free(certDesc); - - return ret; -} - -int release_cert_list(cert_svc_linked_list* certList) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - cert_svc_linked_list* startCert = NULL; - cert_svc_linked_list* curCert = NULL; - - if(certList == NULL) - return ret; - - startCert = certList; - - while(1) { - curCert = startCert; - startCert = startCert->next; - - if(curCert->certificate != NULL) { - if(curCert->certificate->data != NULL) { - free(curCert->certificate->data); - curCert->certificate->data = NULL; - } - free(curCert->certificate); - curCert->certificate = NULL; - } - - curCert->next = NULL; - - if(curCert != NULL) { - free(curCert); - curCert = NULL; - } - - if(startCert == NULL) - break; - } - - return ret; -} - -int release_filename_list(cert_svc_filename_list* fileNames) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - cert_svc_filename_list* startList = NULL; - cert_svc_filename_list* curList = NULL; - - if(fileNames == NULL) - return ret; - - startList = fileNames; - - while(1) { - curList = startList; - startList = startList->next; - - if(curList->filename != NULL) { - free(curList->filename); - curList->filename = NULL; - } - curList->next = NULL; - if(curList != NULL) { - free(curList); - curList = NULL; - } - - if(startList == NULL) - break; - } - - return ret; -} diff --git a/vcore/orig/cert-service-process.h b/vcore/orig/cert-service-process.h deleted file mode 100644 index 0817a89..0000000 --- a/vcore/orig/cert-service-process.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * certification service - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Contact: Kidong Kim - * - * 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. - * - */ - -#ifndef CERT_SERVICE_PROCESS_H -#define CERT_SERVICE_PROCESS_H - -#ifdef __cplusplus -extern "C" { -#endif - -int _search_certificate(cert_svc_filename_list** fileNames, search_field fldName, char* fldData); - -int release_certificate_buf(cert_svc_mem_buff* certBuf); -int release_certificate_data(cert_svc_cert_descriptor* certDesc); -int release_cert_list(cert_svc_linked_list* certList); -int release_filename_list(cert_svc_filename_list* fileNames); - -#ifdef __cplusplus -} -#endif - -#endif // CERT_SERVICE_PROCESS_H diff --git a/vcore/orig/cert-service-util.c b/vcore/orig/cert-service-util.c index 948fb7f..217dc50 100644 --- a/vcore/orig/cert-service-util.c +++ b/vcore/orig/cert-service-util.c @@ -30,7 +30,6 @@ #include "orig/cert-service.h" #include "orig/cert-service-util.h" #include "orig/cert-service-debug.h" -#include "orig/cert-service-process.h" #define CERT_BODY_PREFIX "-----BEGIN CERTIFICATE-----" @@ -322,3 +321,139 @@ err: return ret; } + +int release_certificate_buf(cert_svc_mem_buff* certBuf) +{ + int ret = CERT_SVC_ERR_NO_ERROR; + + if(certBuf == NULL) + return ret; + + if(certBuf->data != NULL) { + free(certBuf->data); + certBuf->data = NULL; + } + free(certBuf); + certBuf = NULL; + + return ret; +} + +int release_certificate_data(cert_svc_cert_descriptor* certDesc) +{ + int ret = CERT_SVC_ERR_NO_ERROR; + int i = 0; + + if(certDesc == NULL) + return ret; + + /* parse cert descriptor information fields */ + if(certDesc->info.sigAlgo != NULL) free(certDesc->info.sigAlgo); + if(certDesc->info.issuerStr != NULL) free(certDesc->info.issuerStr); + if(certDesc->info.issuer.countryName != NULL) free(certDesc->info.issuer.countryName); + if(certDesc->info.issuer.localityName != NULL) free(certDesc->info.issuer.localityName); + if(certDesc->info.issuer.stateOrProvinceName != NULL) free(certDesc->info.issuer.stateOrProvinceName); + if(certDesc->info.issuer.organizationName != NULL) free(certDesc->info.issuer.organizationName); + if(certDesc->info.issuer.organizationUnitName != NULL) free(certDesc->info.issuer.organizationUnitName); + if(certDesc->info.issuer.commonName != NULL) free(certDesc->info.issuer.commonName); + if(certDesc->info.issuer.emailAddress != NULL) free(certDesc->info.issuer.emailAddress); + if(certDesc->info.subjectStr != NULL) free(certDesc->info.subjectStr); + if(certDesc->info.subject.countryName != NULL) free(certDesc->info.subject.countryName); + if(certDesc->info.subject.localityName != NULL) free(certDesc->info.subject.localityName); + if(certDesc->info.subject.stateOrProvinceName != NULL) free(certDesc->info.subject.stateOrProvinceName); + if(certDesc->info.subject.organizationName != NULL) free(certDesc->info.subject.organizationName); + if(certDesc->info.subject.organizationUnitName != NULL) free(certDesc->info.subject.organizationUnitName); + if(certDesc->info.subject.commonName != NULL) free(certDesc->info.subject.commonName); + if(certDesc->info.subject.emailAddress != NULL) free(certDesc->info.subject.emailAddress); + if(certDesc->info.pubKeyAlgo != NULL) free(certDesc->info.pubKeyAlgo); + if(certDesc->info.pubKey != NULL) free(certDesc->info.pubKey); + if(certDesc->info.issuerUID != NULL) free(certDesc->info.issuerUID); + if(certDesc->info.subjectUID != NULL) free(certDesc->info.subjectUID); + + /* parse cert descriptor extension fields */ + if(certDesc->ext.numOfFields > 0) { + for(i = 0; i < (int)certDesc->ext.numOfFields; i++) { + if(certDesc->ext.fields[i].name != NULL) free(certDesc->ext.fields[i].name); + if(certDesc->ext.fields[i].data != NULL) free(certDesc->ext.fields[i].data); + } + if(certDesc->ext.fields != NULL) free(certDesc->ext.fields); + } + + /* parse signature */ + if(certDesc->signatureAlgo != NULL) free(certDesc->signatureAlgo); + if(certDesc->signatureData != NULL) free(certDesc->signatureData); + + if(certDesc != NULL) free(certDesc); + + return ret; +} + +int release_cert_list(cert_svc_linked_list* certList) +{ + int ret = CERT_SVC_ERR_NO_ERROR; + cert_svc_linked_list* startCert = NULL; + cert_svc_linked_list* curCert = NULL; + + if(certList == NULL) + return ret; + + startCert = certList; + + while(1) { + curCert = startCert; + startCert = startCert->next; + + if(curCert->certificate != NULL) { + if(curCert->certificate->data != NULL) { + free(curCert->certificate->data); + curCert->certificate->data = NULL; + } + free(curCert->certificate); + curCert->certificate = NULL; + } + + curCert->next = NULL; + + if(curCert != NULL) { + free(curCert); + curCert = NULL; + } + + if(startCert == NULL) + break; + } + + return ret; +} + +int release_filename_list(cert_svc_filename_list* fileNames) +{ + int ret = CERT_SVC_ERR_NO_ERROR; + cert_svc_filename_list* startList = NULL; + cert_svc_filename_list* curList = NULL; + + if(fileNames == NULL) + return ret; + + startList = fileNames; + + while(1) { + curList = startList; + startList = startList->next; + + if(curList->filename != NULL) { + free(curList->filename); + curList->filename = NULL; + } + curList->next = NULL; + if(curList != NULL) { + free(curList); + curList = NULL; + } + + if(startList == NULL) + break; + } + + return ret; +} diff --git a/vcore/orig/cert-service-util.h b/vcore/orig/cert-service-util.h index 10c3335..832016a 100755 --- a/vcore/orig/cert-service-util.h +++ b/vcore/orig/cert-service-util.h @@ -28,6 +28,11 @@ extern "C" { int cert_svc_util_load_file_to_buffer(const char* filePath, cert_svc_mem_buff* certBuf); +int release_certificate_buf(cert_svc_mem_buff* certBuf); +int release_certificate_data(cert_svc_cert_descriptor* certDesc); +int release_cert_list(cert_svc_linked_list* certList); +int release_filename_list(cert_svc_filename_list* fileNames); + #ifdef __cplusplus } #endif diff --git a/vcore/orig/cert-service.c b/vcore/orig/cert-service.c index 6f9e5c3..4923056 100644 --- a/vcore/orig/cert-service.c +++ b/vcore/orig/cert-service.c @@ -29,31 +29,6 @@ #include "orig/cert-service.h" #include "orig/cert-service-util.h" #include "orig/cert-service-debug.h" -#include "orig/cert-service-process.h" - -int cert_svc_search_certificate(CERT_CONTEXT* ctx, search_field fldName, char* fldData) -{ - int ret = CERT_SVC_ERR_NO_ERROR; - - if (!ctx || fldName > SEARCH_FIELD_END || !fldData) { - SLOGE("[ERR][%s] Invalid parameter. Check your parameter", __func__); - return CERT_SVC_ERR_INVALID_PARAMETER; - } - - if (ctx->fileNames != NULL) { - SLOGE("[ERR][%s] fileNames field already be used.", __func__); - return CERT_SVC_ERR_INVALID_OPERATION; - } - - if ((ret = _search_certificate(&(ctx->fileNames), fldName, fldData)) != CERT_SVC_ERR_NO_ERROR) { - SLOGE("[ERR][%s] Fail to search certificate.", ctx->fileNames); - return ret; - } - - SLOGD("[%s] Success to search certificate(s).", __func__); - - return CERT_SVC_ERR_NO_ERROR; -} CERT_CONTEXT* cert_svc_cert_context_init() { diff --git a/vcore/orig/cert-service.h b/vcore/orig/cert-service.h index 3b7107f..96ba165 100755 --- a/vcore/orig/cert-service.h +++ b/vcore/orig/cert-service.h @@ -57,29 +57,6 @@ extern "C" { #define CERT_SVC_ERR_INVALID_NO_DEVICE_PROFILE (-25) #define CERT_SVC_ERR_INVALID_DEVICE_UNIQUE_ID (-26) -#define CERT_SVC_STORE_PATH "/usr/share/cert-svc/certs/" - -typedef enum { - SEARCH_FIELD_START = 0, - ISSUER_COUNTRY = 0, - ISSUER_STATEORPROVINCE, - ISSUER_LOCALITY, - ISSUER_ORGANIZATION, - ISSUER_ORGANIZATIONUNIT, - ISSUER_COMMONNAME, - ISSUER_EMAILADDRESS, - ISSUER_STR, - SUBJECT_COUNTRY, - SUBJECT_STATEORPROVINCE, - SUBJECT_LOCALITY, - SUBJECT_ORGANIZATION, - SUBJECT_ORGANIZATIONUNIT, - SUBJECT_COMMONNAME, - SUBJECT_EMAILADDRESS, - SUBJECT_STR, - SEARCH_FIELD_END = 16, -} search_field; - typedef struct { unsigned int firstSecond; unsigned int firstMinute; @@ -169,8 +146,6 @@ int cert_svc_cert_context_final(CERT_CONTEXT* ctx); int cert_svc_load_file_to_context(CERT_CONTEXT* ctx, const char* filePath); -int cert_svc_search_certificate(CERT_CONTEXT* ctx, search_field fldName, char* fldData); - #ifdef __cplusplus } #endif diff --git a/vcore/vcore/api.cpp b/vcore/vcore/api.cpp index d418a03..b2633d3 100644 --- a/vcore/vcore/api.cpp +++ b/vcore/vcore/api.cpp @@ -42,23 +42,20 @@ #include #include #include +#include +#include -#include - -#include "orig/cert-service.h" - -#include -#include -#include -#include +#include "dpl/log/log.h" -#include -#include -#include -#include +#include "vcore/Base64.h" +#include "vcore/Certificate.h" +#include "vcore/CertificateCollection.h" +#include "vcore/pkcs12.h" -#include -#include +#include "cert-svc/cinstance.h" +#include "cert-svc/ccert.h" +#include "cert-svc/cpkcs12.h" +#include "cert-svc/cprimitives.h" #define START_CERT "-----BEGIN CERTIFICATE-----" #define END_CERT "-----END CERTIFICATE-----" @@ -69,8 +66,6 @@ using namespace ValidationCore; namespace { -typedef std::unique_ptr > ScopedCertCtx; - class CertSvcInstanceImpl { public: CertSvcInstanceImpl() @@ -397,61 +392,6 @@ public: } } - inline int certificateSearch( - CertSvcInstance instance, - CertSvcCertificateField field, - const char *value, - CertSvcCertificateList *handler) - { - search_field fieldId = SEARCH_FIELD_END; - - switch (field) { - case CERTSVC_SUBJECT: - fieldId = SUBJECT_STR; - break; - case CERTSVC_ISSUER: - fieldId = ISSUER_STR; - break; - case CERTSVC_SUBJECT_COMMON_NAME: - fieldId = SUBJECT_COMMONNAME; - break; - default: - LogError("Not implemented!"); - return CERTSVC_WRONG_ARGUMENT; - } - - ScopedCertCtx ctx(cert_svc_cert_context_init(), - cert_svc_cert_context_final); - - if (ctx.get() == NULL) { - LogWarning("Error in cert_svc_cert_context_init."); - return CERTSVC_FAIL; - } - - LogDebug("Match string : " << value); - int result = cert_svc_search_certificate(ctx.get(), fieldId, const_cast(value)); - LogDebug("Search finished!"); - - if (CERT_SVC_ERR_NO_ERROR != result) { - LogWarning("Error during certificate search"); - return CERTSVC_FAIL; - } - - - size_t listId = m_idListCounter++; - std::vector &list = m_idListMap[listId]; - handler->privateHandler = listId; - handler->privateInstance = instance; - - cert_svc_filename_list *fileList = ctx.get()->fileNames; - while (fileList) { - list.push_back(addCert(Certificate::createFromFile(fileList->filename))); - - fileList = fileList->next; - } - return CERTSVC_SUCCESS; - } - inline int sortCollection(CertSvcCertificate *certificate_array, size_t size) { if (size < 2) { return CERTSVC_WRONG_ARGUMENT; @@ -1173,20 +1113,6 @@ int certsvc_certificate_save_file( return impl(certificate.privateInstance)->saveToFile(certificate, location); } -int certsvc_certificate_search( - CertSvcInstance instance, - CertSvcCertificateField field, - const char *value, - CertSvcCertificateList *handler) -{ - try { - return impl(instance)->certificateSearch(instance, field, value, handler); - } catch (std::bad_alloc &) { - return CERTSVC_BAD_ALLOC; - } catch (...) {} - return CERTSVC_FAIL; -} - int certsvc_certificate_list_get_one( CertSvcCertificateList handler, size_t position, -- 2.7.4