Merge PR#184

This commit is contained in:
Alessio Di Mauro
2019-02-20 16:09:32 +01:00
2 changed files with 15 additions and 3 deletions
+4 -1
View File
@@ -26,7 +26,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PACKAGE=yubico-piv-tool PACKAGE=yubico-piv-tool
OPENSSLVERSION=1.0.2p OPENSSLVERSION=1.0.2q
CHECKVERSION=0.12.0 CHECKVERSION=0.12.0
all: usage 32bit 64bit all: usage 32bit 64bit
@@ -72,6 +72,9 @@ doit:
rm -rf $(PWD)/tmp$(ARCH)/root/lib/pkgconfig/ && \ rm -rf $(PWD)/tmp$(ARCH)/root/lib/pkgconfig/ && \
cp COPYING $(PWD)/tmp$(ARCH)/root/licenses/$(PACKAGE).txt && \ cp COPYING $(PWD)/tmp$(ARCH)/root/licenses/$(PACKAGE).txt && \
cd .. && \ cd .. && \
cd check-$(CHECKVERSION) && \
make uninstall && \
cd .. && \
cd root && \ cd root && \
zip -r ../../$(PACKAGE)-$(VERSION)-win$(ARCH).zip * zip -r ../../$(PACKAGE)-$(VERSION)-win$(ARCH).zip *
+11 -2
View File
@@ -306,7 +306,7 @@ static void make_base128(unsigned long l, int first, CK_BYTE_PTR buf, CK_ULONG_P
buf[(*n)++] = 0x80 | (CK_BYTE)l; buf[(*n)++] = 0x80 | (CK_BYTE)l;
} }
static void asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR len) { static CK_RV asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR len) {
CK_CHAR_PTR tmp = (CK_BYTE_PTR) strdup((char *)oid); CK_CHAR_PTR tmp = (CK_BYTE_PTR) strdup((char *)oid);
CK_CHAR_PTR p = tmp; CK_CHAR_PTR p = tmp;
CK_BYTE_PTR q = NULL; CK_BYTE_PTR q = NULL;
@@ -315,6 +315,10 @@ static void asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR
CK_ULONG l = 0; CK_ULONG l = 0;
CK_ULONG nodes; CK_ULONG nodes;
if (tmp == NULL) {
return CKR_HOST_MEMORY;
}
q = p; q = p;
*len = 0; *len = 0;
nodes = 1; nodes = 1;
@@ -360,6 +364,8 @@ static void asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR
} }
free(tmp); free(tmp);
return CKR_OK;
} }
static CK_KEY_TYPE get_key_type(EVP_PKEY *key) { static CK_KEY_TYPE get_key_type(EVP_PKEY *key) {
@@ -395,6 +401,7 @@ CK_RV get_doa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
CK_BYTE_PTR data; CK_BYTE_PTR data;
CK_BYTE tmp[64]; CK_BYTE tmp[64];
CK_ULONG len = 0; CK_ULONG len = 0;
CK_RV rv;
DBG("For data object %lu, get ", obj); DBG("For data object %lu, get ", obj);
switch (template->type) { switch (template->type) {
@@ -439,7 +446,9 @@ CK_RV get_doa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
case CKA_OBJECT_ID: // TODO: how about just storing the OID in DER ? case CKA_OBJECT_ID: // TODO: how about just storing the OID in DER ?
DBG("OID"); DBG("OID");
memcpy((char *)tmp, data_objects[piv_objects[obj].sub_id].oid, sizeof(tmp)); memcpy((char *)tmp, data_objects[piv_objects[obj].sub_id].oid, sizeof(tmp));
asn1_encode_oid(tmp, tmp, &len); if ((rv = asn1_encode_oid(tmp, tmp, &len)) != CKR_OK) {
return rv;
}
data = tmp; data = tmp;
break; break;