Overview
Comment: | Optimized byte array to hex conversions |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | crypto |
Files: | files | file ages | folders |
SHA3-256: |
049f9cb9705f5b1603e875eaf7a62fd8 |
User & Date: | bohagan on 2023-10-14 21:35:35 |
Other Links: | branch diff | manifest | tags |
Context
2023-10-14
| ||
23:02 | Updated test suite to add digest command check-in: 5f6b36170e user: bohagan tags: crypto | |
21:35 | Optimized byte array to hex conversions check-in: 049f9cb970 user: bohagan tags: crypto | |
2023-10-11
| ||
23:13 | Renamed hash command to digest and hashes command to digests. check-in: 38f5e78596 user: bohagan tags: crypto | |
Changes
Modified generic/tls.c
from [33f81c89e9]
to [e558c674d7].
︙ | ︙ | |||
946 947 948 949 950 951 952 | */ int HashCalc(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], const EVP_MD *type) { char *data; int len; unsigned int mdlen; unsigned char mdbuf[EVP_MAX_MD_SIZE]; | < > | > | > | > | | | < | | 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 | */ int HashCalc(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], const EVP_MD *type) { char *data; int len; unsigned int mdlen; unsigned char mdbuf[EVP_MAX_MD_SIZE]; const char *hex = "0123456789ABCDEF"; if (objc != 2) { Tcl_WrongNumArgs(interp, 1, objv, "data"); return TCL_ERROR; } /* Get data */ data = Tcl_GetByteArrayFromObj(objv[1], &len); if (data == NULL || len == 0) { Tcl_SetResult(interp, "No data", NULL); return TCL_ERROR; } /* Calc hash value, create hex representation, and write to result */ if (EVP_Digest(data, (size_t) len, mdbuf, &mdlen, type, NULL)) { Tcl_Obj *resultObj; unsigned char *ptr; resultObj = Tcl_NewObj(); ptr = Tcl_SetByteArrayLength(resultObj, mdlen*2); for (unsigned int i = 0; i < mdlen; i++) { *ptr++ = hex[(mdbuf[i] >> 4) & 0x0F]; *ptr++ = hex[mdbuf[i] & 0x0F]; } Tcl_SetObjResult(interp, resultObj); } else { Tcl_SetResult(interp, "Hash calculation error", NULL); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ |
Modified generic/tlsX509.c
from [c99299d264]
to [135215c951].
︙ | ︙ | |||
16 17 18 19 20 21 22 | /* Define maximum certificate size. Max PEM size 100kB and DER size is 24kB. */ #define CERT_STR_SIZE 32768 /* * Binary string to hex string */ | | > > > < > > | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | /* Define maximum certificate size. Max PEM size 100kB and DER size is 24kB. */ #define CERT_STR_SIZE 32768 /* * Binary string to hex string */ int String_to_Hex(unsigned char* input, int ilen, unsigned char *output, int olen) { int count = 0; unsigned char *iptr = input; unsigned char *optr = &output[0]; const char *hex = "0123456789ABCDEF"; for (int i = 0; i < ilen && count < olen - 1; i++, count += 2) { *optr++ = hex[(*iptr>>4)&0xF]; *optr++ = hex[(*iptr++)&0xF]; } *optr = 0; return count; } /* * BIO to Buffer */ int BIO_to_Buffer(int result, BIO *bio, void *buffer, int size) { |
︙ | ︙ | |||
75 76 77 78 79 80 81 | */ Tcl_Obj *Tls_x509Identifier(ASN1_OCTET_STRING *astring) { Tcl_Obj *resultPtr = NULL; int len = 0; char buffer[1024]; if (astring != NULL) { | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | */ Tcl_Obj *Tls_x509Identifier(ASN1_OCTET_STRING *astring) { Tcl_Obj *resultPtr = NULL; int len = 0; char buffer[1024]; if (astring != NULL) { len = String_to_Hex(ASN1_STRING_get0_data(astring), ASN1_STRING_length(astring), buffer, 1024); } resultPtr = Tcl_NewStringObj(buffer, len); return resultPtr; } /* |
︙ | ︙ |