2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 /* standard library header */
19 /* SLP library header */
23 #include "APDUHelper.h"
27 namespace smartcard_service_api
29 static unsigned char aid[] = { 0xA0, 0x00, 0x00, 0x00, 0x63, 0x50,
30 0x4B, 0x43, 0x53, 0x2D, 0x31, 0x35 };
31 const ByteArray PKCS15::PKCS15_AID(ARRAY_AND_SIZE(aid));
33 PKCS15::PKCS15(Channel *channel) :
34 PKCS15Object(channel), odf(NULL)
38 PKCS15::PKCS15(Channel *channel, const ByteArray &selectResponse) :
39 PKCS15Object(channel, selectResponse), odf(NULL)
56 ret = PKCS15Object::select(PKCS15_AID);
57 if (ret >= SCARD_ERROR_OK) {
58 _DBG("response : %s", selectResponse.toString().c_str());
59 } else if (ret == ResponseHelper::ERROR_FILE_NOT_FOUND) {
60 _ERR("PKCS15 AID not found, search in EF DIR");
62 ret = selectFromEFDIR();
63 if (ret >= SCARD_ERROR_OK) {
64 _DBG("response : %s", selectResponse.toString().c_str());
66 _ERR("PKCS15 select failed, [%d]", ret);
69 _ERR("PKCS15 select failed, [%d]", ret);
75 int PKCS15::selectFromEFDIR()
82 if (ret >= SCARD_ERROR_OK) {
83 path = dir.getPathByAID(PKCS15_AID);
84 if (path.size() > 0) {
85 ret = PKCS15Object::select(path, false);
86 if (ret < SCARD_ERROR_OK) {
87 _ERR("PKCS15 select failed, [%d]", ret);
90 _ERR("PKCS15 path is not found");
91 ret = SCARD_ERROR_NOT_SUPPORTED;
94 _ERR("select EFDIR failed, [%x]", -ret);
100 PKCS15ODF *PKCS15::getODF()
104 odf = new PKCS15ODF(channel);
106 if (odf != NULL && odf->isClosed() == true)
108 _ERR("failed to open ODF");
115 _DBG("odf [%p]", odf);
119 } /* namespace smartcard_service_api */