当前位置: 首页 > wzjs >正文

深圳市住房建设部网站大连网站推广价格

深圳市住房建设部网站,大连网站推广价格,一个公司是否可以做多个网站,wordpress文章图片alt8.4 对ISO15118-2/-20所有命令的测试结果 上节对supportedAppProtocolReq/Res命令编解码结果与EXICodec.jar完全相同,cbExiGen初步测试成功。本节将对全部-2/-20命令展开测试,检查是否与EXICodec.jar完全相同。 作者编写了大量测试代码,解决…

8.4 对ISO15118-2/-20所有命令的测试结果

上节对supportedAppProtocolReq/Res命令编解码结果与EXICodec.jar完全相同,cbExiGen初步测试成功。本节将对全部-2/-20命令展开测试,检查是否与EXICodec.jar完全相同。 作者编写了大量测试代码,解决了一些cbExiGen代码中的bug和问题,最终得到了结论: cbExiGen编解码和EXICodec.jar完全相同,通过了交叉测试,在实际的充电流程中也成功运行。

8.4.1 对ISO15118-2的测试

按照上节做法,对每个命令Req/Res编写测试代码, 每个文件包含请求和应答两条命令的编码和解码。

2023/10/07  10:38             5,612 test_AuthorizationReq.c
2023/10/07  10:38             6,388 test_CableCheckReq.c
2023/10/07  14:18            23,549 test_CertificateInstallationReq.c
2023/10/16  14:42            17,222 test_ChargeParameterDiscoveryReq.c
2023/10/07  10:39             6,370 test_ChargingStatusReq.c
2023/10/07  10:39            11,092 test_CurrentDemandReq.c
2023/10/07  10:39            10,506 test_MeteringReceiptReq.c
2023/10/07  10:39            17,953 test_PaymentDetailsReq.c
2023/10/07  10:39             6,291 test_PaymentServiceSelectionReq.c
2023/10/07  10:40             7,545 test_PowerDeliveryReq.c
2023/10/07  10:40             7,187 test_PreChargeReq.c
2023/10/07  10:40             6,469 test_ServiceDetailReq.c
2023/10/07  10:40             7,569 test_ServiceDiscoveryReq.c
2023/10/07  10:40             6,385 test_SessionSetupReq.c
2023/10/07  10:40             5,536 test_SessionStopReq.c
2023/10/07  15:50             4,974 test_supportedAppProtocolReq.c
2023/10/07  10:41             6,807 test_WeldingDetectionReq.c

示例代码 test_CertificateInstallationReq.c:

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>#include "appHand_Encoder.h"
#include "iso2_msgDefDatatypes.h"
#include "iso2_msgDefEncoder.h"
#include "iso2_msgDefDecoder.h"#include "base64Codec.h"
#include "ReadWriteFile.h"//CertificateInstallationReq
//encode resule is OK!
static const uint8_t CertificateInstallationReq[] = {0x80, 0x98, 0x02, 0x0B, 0xE0, 0xBE, 0xB9, 0x5B, 0xD1, 0x10, 0xB8, 0x8A, 0x89, 0x5A, 0x1D, 0x1D, 0x1C, 0x0E, 0x8B, 0xCB, 0xDD, 0xDD, 0xDD, 0xCB, 0x9D, 0xCC, 0xCB, 0x9B, 0xDC, 0x99, 0xCB, 0xD5, 0x14, 0x8B, 0xD8, 0xD8, 0x5B, 0x9B, 0xDB, 0x9A, 0x58, 0xD8, 0x5B, 0x0B, 0x59, 0x5E, 0x1A, 0x4B, 0xC1, 0x00, 0x09, 0x80, 0x50, 0x00, 0xC6, 0x4A, 0xD0, 0xE8, 0xE8, 0xE0, 0x74, 0x5E, 0x5E, 0xEE, 0xEE, 0xEE, 0x5C, 0xEE, 0x66, 0x5C, 0xDE, 0xE4, 0xCE, 0x5E, 0xA8, 0xA4, 0x5E, 0xC6, 0xC2, 0xDC, 0xDE, 0xDC, 0xD2, 0xC6, 0xC2, 0xD8, 0x5A, 0xCA, 0xF0, 0xD2, 0x5E, 0xA1, 0xAB, 0x43, 0xA3, 0xA3, 0x81, 0xD1, 0x79, 0x7B, 0xBB, 0xBB, 0xB9, 0x73, 0xB9, 0x99, 0x73, 0x7B, 0x93, 0x39, 0x79, 0x91, 0x81, 0x81, 0x89, 0x79, 0x81, 0xA1, 0x7B, 0xC3, 0x6B, 0x63, 0x23, 0x9B, 0x4B, 0x39, 0x6B, 0x6B, 0x7B, 0x93, 0x29, 0x1B, 0x2B, 0x1B, 0x23, 0x9B, 0x09, 0x6B, 0x9B, 0x43, 0x09, 0x91, 0xA9, 0xB1, 0x10, 0x01, 0x4C, 0x02, 0x80, 0x06, 0x33, 0x56, 0x87, 0x47, 0x47, 0x03, 0xA2, 0xF2, 0xF7, 0x77, 0x77, 0x72, 0xE7, 0x73, 0x32, 0xE6, 0xF7, 0x26, 0x72, 0xF3, 0x23, 0x03, 0x03, 0x12, 0xF3, 0x03, 0x42, 0xF7, 0x86, 0xD6, 0xC6, 0x47, 0x36, 0x96, 0x72, 0xD6, 0xD6, 0xF7, 0x26, 0x52, 0x36, 0x56, 0x36, 0x47, 0x36, 0x12, 0xD7, 0x36, 0x86, 0x13, 0x23, 0x53, 0x65, 0x20, 0x62, 0x36, 0x96, 0x43, 0x10, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x54, 0x52, 0x2F, 0x63, 0x61, 0x6E, 0x6F, 0x6E, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x65, 0x78, 0x69, 0x2F, 0x22, 0x00, 0x29, 0x80, 0x50, 0x00, 0xC6, 0x4A, 0xD0, 0xE8, 0xE8, 0xE0, 0x74, 0x5E, 0x5E, 0xEE, 0xEE, 0xEE, 0x5C, 0xEE, 0x66, 0x5C, 0xDE, 0xE4, 0xCE, 0x5E, 0xA8, 0xA4, 0x5E, 0xC6, 0xC2, 0xDC, 0xDE, 0xDC, 0xD2, 0xC6, 0xC2, 0xD8, 0x5A, 0xCA, 0xF0, 0xD2, 0x5E, 0xA4, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x32, 0x30, 0x30, 0x31, 0x2F, 0x30, 0x34, 0x2F, 0x78, 0x6D, 0x6C, 0x65, 0x6E, 0x63, 0x23, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x04, 0x00, 0x53, 0x00, 0xA0, 0x01, 0x8C, 0xA5, 0xA1, 0xD1, 0xD1, 0xC0, 0xE8, 0xBC, 0xBD, 0xDD, 0xDD, 0xDC, 0xB9, 0xDC, 0xCC, 0xB9, 0xBD, 0xC9, 0x9C, 0xBC, 0xC8, 0xC0, 0xC0, 0xC4, 0xBC, 0xC0, 0xD0, 0xBD, 0xE1, 0xB5, 0xB1, 0x95, 0xB9, 0x8C, 0x8D, 0xCD, 0xA1, 0x84, 0xC8, 0xD4, 0xD9, 0x42, 0x0D, 0x78, 0xAD, 0x52, 0x73, 0xB2, 0x43, 0x75, 0xA2, 0x53, 0x9A, 0x39, 0x64, 0x51, 0x11, 0x98, 0x1A, 0x6C, 0xF2, 0x7C, 0x34, 0x57, 0xA2, 0x96, 0x6F, 0x24, 0x6A, 0xA4, 0x81, 0x10, 0x48, 0x22, 0x01, 0x29, 0x06, 0x08, 0xC0, 0x44, 0x20, 0x19, 0xED, 0xC1, 0xF4, 0x53, 0xA1, 0x4D, 0x12, 0xB1, 0xA4, 0xF3, 0xB1, 0xB6, 0xD3, 0xF9, 0xC4, 0xFE, 0xFC, 0xE8, 0xE2, 0x74, 0xDB, 0x06, 0xA5, 0x41, 0xCC, 0x27, 0x7B, 0x2E, 0x59, 0x89, 0x1A, 0x60, 0x44, 0x20, 0x18, 0x75, 0x4F, 0x03, 0x40, 0x6B, 0xB9, 0x81, 0xCD, 0x38, 0x18, 0x05, 0x2E, 0xED, 0xFC, 0xDE, 0xA5, 0xEC, 0xA1, 0x37, 0x3A, 0x87, 0x05, 0xA3, 0x52, 0xA9, 0x77, 0x9A, 0x5F, 0x14, 0xE4, 0x76, 0xA8, 0x14, 0x0A, 0xD2, 0xC8, 0x62, 0x6A, 0x81, 0x98, 0x41, 0x00, 0xE8, 0x98, 0x41, 0x00, 0xBC, 0x50, 0x01, 0x81, 0x00, 0x81, 0x01, 0x00, 0x84, 0x98, 0x05, 0x03, 0x04, 0x15, 0x43, 0x24, 0x67, 0x1E, 0x82, 0x01, 0x81, 0x18, 0x2E, 0x18, 0x90, 0x98, 0x0F, 0x83, 0x01, 0xAA, 0x82, 0x01, 0x86, 0x0C, 0x28, 0x25, 0xA4, 0x96, 0x98, 0xAF, 0xA1, 0xA9, 0x2A, 0x2F, 0xA7, 0xA2, 0xA6, 0xAF, 0xA9, 0xAA, 0xA1, 0x19, 0x2F, 0xAB, 0x20, 0xA6, 0x24, 0xA2, 0x18, 0x8A, 0x98, 0x09, 0x83, 0x01, 0xAA, 0x82, 0x05, 0x06, 0x06, 0x3B, 0x32, 0xB9, 0x34, 0xB9, 0xB1, 0xB7, 0x90, 0x23, 0xB6, 0xB1, 0x24, 0x18, 0x85, 0x98, 0x04, 0x83, 0x01, 0xAA, 0x82, 0x03, 0x09, 0x81, 0x22, 0x22, 0x98, 0x89, 0x98, 0x08, 0x83, 0x05, 0x04, 0xC9, 0x13, 0x44, 0xC9, 0xF9, 0x16, 0x32, 0x00, 0x8C, 0x8B, 0x01, 0xA7, 0xA2, 0xA6, 0x98, 0x0F, 0x0B, 0x86, 0x99, 0x18, 0x98, 0x1C, 0x98, 0x19, 0x18, 0x99, 0x99, 0x18, 0x99, 0x9C, 0x2D, 0x0B, 0x86, 0x99, 0x18, 0x98, 0x98, 0x18, 0x19, 0x98, 0x99, 0x99, 0x18, 0x99, 0x9C, 0x2D, 0x18, 0x24, 0x18, 0x8D, 0x18, 0x0C, 0x03, 0x01, 0xAA, 0x82, 0x01, 0x86, 0x08, 0xAB, 0x98, 0x18, 0x2B, 0x22, 0xA9, 0x24, 0xA9, 0xA1, 0xA7, 0x98, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x8A, 0x98, 0x09, 0x83, 0x01, 0xAA, 0x82, 0x05, 0x06, 0x06, 0x3B, 0x32, 0xB9, 0x34, 0xB9, 0xB1, 0xB7, 0x90, 0x23, 0xB6, 0xB1, 0x24, 0x18, 0x89, 0x98, 0x08, 0x83, 0x05, 0x04, 0xC9, 0x13, 0x44, 0xC9, 0xF9, 0x16, 0x32, 0x00, 0x8C, 0x8B, 0x01, 0xA7, 0xA2, 0xA6, 0x98, 0x2C, 0x98, 0x09, 0x83, 0x03, 0x95, 0x43, 0x24, 0x67, 0x1E, 0x81, 0x00, 0x83, 0x04, 0x15, 0x43, 0x24, 0x67, 0x1E, 0x81, 0x80, 0x83, 0x81, 0xA1, 0x00, 0x02, 0x3C, 0x7B, 0x7C, 0xD9, 0x37, 0x92, 0x96, 0xC3, 0xF7, 0x3C, 0xF4, 0x56, 0x95, 0x5B, 0x41, 0x91, 0x85, 0x4A, 0xD4, 0xDF, 0x3B, 0x75, 0x00, 0xA9, 0x89, 0x58, 0xC6, 0xF5, 0xE7, 0xE9, 0x0B, 0x3A, 0x0F, 0xC7, 0x2B, 0x07, 0xF9, 0x7D, 0xD2, 0xB3, 0x25, 0xA8, 0xC1, 0xB0, 0xDA, 0xB5, 0x55, 0xBF, 0xAE, 0x3D, 0xB3, 0x27, 0x0C, 0x5E, 0xDE, 0x5B, 0x8A, 0xFC, 0x73, 0x58, 0x94, 0x88, 0xC2, 0x69, 0x51, 0x9F, 0x98, 0x1E, 0x98, 0x06, 0x03, 0x01, 0xAA, 0x8E, 0x89, 0x80, 0x80, 0xFF, 0x82, 0x01, 0x18, 0x00, 0x18, 0x07, 0x03, 0x01, 0xAA, 0x8E, 0x87, 0x80, 0x80, 0xFF, 0x82, 0x02, 0x01, 0x81, 0x01, 0xC4, 0x18, 0x0E, 0x83, 0x01, 0xAA, 0x8E, 0x87, 0x02, 0x0B, 0x02, 0x0A, 0x7C, 0x13, 0x6A, 0xA2, 0x05, 0x84, 0x4C, 0x1C, 0xDA, 0x9F, 0x26, 0x4C, 0xB0, 0xD6, 0xC9, 0x90, 0xDD, 0x82, 0xE3, 0xBE, 0x98, 0x05, 0x03, 0x04, 0x15, 0x43, 0x24, 0x67, 0x1E, 0x82, 0x01, 0x81, 0x01, 0xA3, 0x80, 0x18, 0x22, 0x01, 0x10, 0x01, 0x7E, 0xDD, 0x89, 0x08, 0x1D, 0x00, 0x87, 0x47, 0x09, 0x91, 0x67, 0x4C, 0x99, 0x8E, 0x24, 0x1A, 0xB2, 0x6A, 0x14, 0x4A, 0x86, 0x81, 0xAC, 0x52, 0xDC, 0xF0, 0xD9, 0x99, 0xC8, 0xE3, 0xBC, 0x01, 0x10, 0x2E, 0xDC, 0x43, 0x65, 0x8A, 0x74, 0xFC, 0x8E, 0xA4, 0x97, 0xA3, 0xC9, 0x12, 0x91, 0xCF, 0xDC, 0x6A, 0xCA, 0xBF, 0xFE, 0x13, 0xE2, 0x04, 0xA5, 0x0C, 0x4E, 0xF1, 0x67, 0x7B, 0xAE, 0x54, 0xF0, 0x81, 0x00, 0xF1, 0x39, 0x85, 0xB5, 0x94, 0xA1, 0x0D, 0x38, 0xF5, 0x41, 0x2D, 0x24, 0xB4, 0xC5, 0x7D, 0x0D, 0x49, 0x51, 0x7D, 0x58, 0xC9, 0x1D, 0x7D, 0x49, 0x3D, 0x3D, 0x51, 0x7D, 0x59, 0x05, 0x31, 0x25, 0x10, 0xB1, 0x3C, 0xF5, 0xD9, 0x95, 0xC9, 0xA5, 0xCD, 0x8D, 0xBC, 0x81, 0x1D, 0xB5, 0x89, 0x20, 0xB1, 0x0C, 0xF5, 0x11, 0x14, 0xB1, 0x11, 0x0C, 0xF5, 0x58, 0xC9, 0x1C, 0xA4, 0xF8, 0x00, 0x44, 0x00};static const char * ns = "urn:iso:15118:2:2013:MsgDef";int log_hexdump(const char *title, const unsigned char *data, int len);
int StringHextoHex(char *str, unsigned char *out, int *outlen);int main() {char buf[80];getcwd(buf, sizeof(buf));printf("current working directory: %s\n", buf);//开始根据xml编码 CertificateInstallationReqdealReq();//开始根据xml编码 CertificateInstallationResdealRes();return 0;
}int dealReq(){//开始根据xml编码 CertificateInstallationReq// init for structsstruct iso2_exiDocument exiDoc;struct iso2_V2G_Message V2G_Message;struct iso2_MessageHeaderType Header;struct iso2_BodyType Body;struct iso2_CertificateInstallationReqType CertificateInstallationReq;// fill Headerstruct iso2_SignatureType Signature;init_iso2_SignatureType(&Signature);//fill SignedInfostruct iso2_SignedInfoType SignedInfo;init_iso2_SignedInfoType(&SignedInfo);struct iso2_CanonicalizationMethodType CanonicalizationMethod;init_iso2_CanonicalizationMethodType(&CanonicalizationMethod);strcpy(CanonicalizationMethod.Algorithm.characters,"http://www.w3.org/TR/canonical-exi/");CanonicalizationMethod.Algorithm.charactersLen = strlen("http://www.w3.org/TR/canonical-exi/");CanonicalizationMethod.ANY_isUsed = 0u;struct iso2_SignatureMethodType SignatureMethod;init_iso2_SignatureMethodType(&SignatureMethod);strcpy(SignatureMethod.Algorithm.characters,"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256");SignatureMethod.Algorithm.charactersLen = strlen("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256");SignatureMethod.ANY_isUsed = 0u;//fill Reference, 3 Attributes(Id,URI,Type) + 3 elements(Transforms,DigestMethod,DigestValue)struct iso2_ReferenceType Reference;init_iso2_ReferenceType(&Reference);strcpy(Reference.URI.characters,"#id1");Reference.URI.charactersLen = strlen("#id1");Reference.URI_isUsed = 1u;struct iso2_TransformsType Transforms;struct iso2_TransformType Transform;init_iso2_TransformType(&Transform);strcpy(Transform.Algorithm.characters,"http://www.w3.org/TR/canonical-exi/");Transform.Algorithm.charactersLen = strlen("http://www.w3.org/TR/canonical-exi/");Transform.ANY_isUsed = 0u;Transforms.Transform =  Transform;Reference.Transforms = Transforms;Reference.Transforms_isUsed = 1u;struct iso2_DigestMethodType DigestMethod;init_iso2_DigestMethodType(&DigestMethod);strcpy(DigestMethod.Algorithm.characters,"http://www.w3.org/2001/04/xmlenc#sha256");DigestMethod.Algorithm.charactersLen = strlen("http://www.w3.org/2001/04/xmlenc#sha256");DigestMethod.ANY_isUsed = 0u;Reference.DigestMethod = DigestMethod;char *indata1 = "14rVJzskN1olOaOWRREZgabPJ8NFeilm8kaqSBEEgiA=";int ret = base64_decode(indata1, strlen(indata1), Reference.DigestValue.bytes, &Reference.DigestValue.bytesLen);printf("ret= %d\n", ret);SignedInfo.CanonicalizationMethod = CanonicalizationMethod;SignedInfo.SignatureMethod = SignatureMethod;SignedInfo.Reference = Reference;Signature.SignedInfo = SignedInfo;struct iso2_SignatureValueType SignatureValue;init_iso2_SignatureValueType(&SignatureValue);char *indata2 = "MEYCIQDPbg+inQpolY0nnY22n84n9+dHE6bYNSoOYTvZcsxI0wIhAMOqeBoDXcwOacDAKXdv5vUvZQm51DgtGpVLvNL4pyO1";ret = base64_decode(indata2, strlen(indata2), SignatureValue.CONTENT.bytes, &SignatureValue.CONTENT.bytesLen);printf("ret= %d\n", ret);Signature.SignatureValue = SignatureValue;//fill Headerinit_iso2_MessageHeaderType(&Header);// fill Header, id max length=8字节StringHextoHex("2F82FAE56F4442E2", Header.SessionID.bytes, &Header.SessionID.bytesLen);Header.Signature = Signature;Header.Signature_isUsed = 1u;//-------------Body--------------------------------------------------------strcpy(CertificateInstallationReq.Id.characters,"id1");CertificateInstallationReq.Id.charactersLen = strlen("id1");char *indata3 = "MEYCIQDPbg+inQpolY0nnY22n84n9+dHE6bYNSoOYTvZcsxI0wIhAMOqeBoDXcwOacDAKXdv5vUvZQm51DgtGpVLvNL4pyO1";ret = base64_decode(indata3, strlen(indata3), CertificateInstallationReq.OEMProvisioningCert.bytes, &CertificateInstallationReq.OEMProvisioningCert.bytesLen);printf("ret= %d\n", ret);struct iso2_ListOfRootCertificateIDsType ListOfRootCertificateIDs;init_iso2_ListOfRootCertificateIDsType(&ListOfRootCertificateIDs);struct iso2_X509IssuerSerialType RootCertificateID;init_iso2_X509IssuerSerialType(&RootCertificateID);strcpy(RootCertificateID.X509IssuerName.characters,"<Name(CN=PKI-1_CRT_V2G_ROOT_VALID,O=verisco GmbH,C=DE,DC=V2G)>");RootCertificateID.X509IssuerName.charactersLen = strlen("<Name(CN=PKI-1_CRT_V2G_ROOT_VALID,O=verisco GmbH,C=DE,DC=V2G)>");RootCertificateID.X509SerialNumber = 1;ListOfRootCertificateIDs.RootCertificateID.array[0] = RootCertificateID;ListOfRootCertificateIDs.RootCertificateID.arrayLen = 1;CertificateInstallationReq.ListOfRootCertificateIDs = ListOfRootCertificateIDs;// fill Bodyinit_iso2_BodyType(&Body);Body.CertificateInstallationReq = CertificateInstallationReq;Body.CertificateInstallationReq_isUsed = 1u;init_iso2_V2G_Message(&V2G_Message);V2G_Message.Header = Header;V2G_Message.Body = Body;init_iso2_exiDocument( &exiDoc );exiDoc.V2G_Message = V2G_Message;//define out streamexi_bitstream_t stream;uint8_t* dataReq = (uint8_t*)malloc(2048);
//  uint8_t dataReq[1024]={0};memset(dataReq, 0, 2048);exi_bitstream_init(&stream, dataReq, 2048, 0, NULL);int ret1 = encode_iso2_exiDocument(&stream, &exiDoc);printf("ret1= %d \n",ret1);printf("stream.byte_pos =%ld \n",stream.byte_pos);log_hexdump("dataReq", dataReq, stream.byte_pos+1);//write to fileexiWrite2File("./bin/CertificateInstallationReq_out.exi", dataReq, stream.byte_pos+1);//根据exi解码exi_bitstream_reset(&stream);struct iso2_exiDocument exiDoc2;int ret2 = decode_iso2_exiDocument(&stream, &exiDoc2);printf("ret2= %d \n",ret2);free(dataReq);
}int dealRes(){//开始根据xml编码 CertificateInstallationRes// init for structsstruct iso2_exiDocument exiDoc;struct iso2_V2G_Message V2G_Message;struct iso2_MessageHeaderType Header;struct iso2_BodyType Body;struct iso2_CertificateInstallationResType CertificateInstallationRes;// fill Headerinit_iso2_MessageHeaderType(&Header);StringHextoHex("3554EEC6F808A383", Header.SessionID.bytes, &Header.SessionID.bytesLen);//-------------Body--------------------------------------------------------init_iso2_CertificateInstallationResType(&CertificateInstallationRes);CertificateInstallationRes.ResponseCode = iso2_responseCodeType_OK;struct iso2_CertificateChainType SAProvisioningCertificateChain;init_iso2_CertificateChainType(&SAProvisioningCertificateChain);char *indata1 = "MIIB5zCCAY6gAwIBAgIBGDAKBggqhkjOPQQDAjBdMSIwIAYDVQQDDBlQS0ktMV9DUlRfUFJPVl9TVUIyX1ZBTElEMRUwEwYDVQQKDAx2ZXJpc2NvIEdtYkgxCzAJBgNVBAYTAkRFMRMwEQYKCZImiZPyLGQBGRYDQ1BTMB4XDTIxMDkwMjEzMjE0MFoXDTIxMTAwMzEzMjE0MFowXTEiMCAGA1UEAwwZUEtJLTFfQ1JUX1BST1ZfTEVBRl9WQUxJRDEVMBMGA1UECgwMdmVyaXNjbyBHbWJIMQswCQYDVQQGEwJERTETMBEGCgmSJomT8ixkARkWA0NQUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDah/kgaA+vKDNHU3Vp+6cw8tIxkN/72kIknAj/99oMP9iRM8FHGNLaPzq2J0pcDpzmZexzbToaqbkdQ6p4Y/AmjPzA9MAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBQp31ArJBS/DX68uwG2lum2Wuj6sTAKBggqhkjOPQQDAgNHADBEAiBsuwGK22QitrfSXTywE+d4v5ABq3nKlV7MzaSJ3qpvzwIge2zPajjyCextKm3TMhs303uUwmfm99D6mS4tt1uR7wI=";int ret = base64_decode(indata1, strlen(indata1), SAProvisioningCertificateChain.Certificate.bytes, &SAProvisioningCertificateChain.Certificate.bytesLen);printf("ret= %d\n", ret);struct iso2_SubCertificatesType SubCertificates;init_iso2_SubCertificatesType(&SubCertificates);SubCertificates.Certificate.arrayLen = 2;char *indata2 = "MIIB7zCCAZSgAwIBAgIBFzAKBggqhkjOPQQDAjBdMSIwIAYDVQQDDBlQS0ktMV9DUlRfUFJPVl9TVUIxX1ZBTElEMRUwEwYDVQQKDAx2ZXJpc2NvIEdtYkgxCzAJBgNVBAYTAkRFMRMwEQYKCZImiZPyLGQBGRYDQ1BTMB4XDTIxMDkwMjEzMjEzOVoXDTIzMDkwMjEzMjEzOVowXTEiMCAGA1UEAwwZUEtJLTFfQ1JUX1BST1ZfU1VCMl9WQUxJRDEVMBMGA1UECgwMdmVyaXNjbyBHbWJIMQswCQYDVQQGEwJERTETMBEGCgmSJomT8ixkARkWA0NQUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDBjKGihEkDHZtQZXJYXe3XhjtKvHktoK9ulVVljGRYZZPrLUDQQ2lFIm/DKqRIUsrVhlolfu3BGJQUjpUmtk7ujRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjLL8CwMeGQ4nEVnuAc10mDUEJJTAKBggqhkjOPQQDAgNJADBGAiEAl6t2/7D7AB/6kF5tVqK0IDNM6wPsxGFC2U5IxTzngAsCIQClTvD2kXOp7El1TSfG4eVB83D5YimExEIvvONqUKbuMA==";ret = base64_decode(indata2, strlen(indata2), SubCertificates.Certificate.array[0].bytes, &SubCertificates.Certificate.array[0].bytesLen);printf("ret= %d\n", ret);char *indata3 = "MIIB7TCCAZOgAwIBAgIBFjAKBggqhkjOPQQDAjBcMSEwHwYDVQQDDBhQS0ktMV9DUlRfVjJHX1JPT1RfVkFMSUQxFTATBgNVBAoMDHZlcmlzY28gR21iSDELMAkGA1UEBhMCREUxEzARBgoJkiaJk/IsZAEZFgNWMkcwHhcNMjEwOTAyMTMyMTM5WhcNMjUwOTAxMTMyMTM5WjBdMSIwIAYDVQQDDBlQS0ktMV9DUlRfUFJPVl9TVUIxX1ZBTElEMRUwEwYDVQQKDAx2ZXJpc2NvIEdtYkgxCzAJBgNVBAYTAkRFMRMwEQYKCZImiZPyLGQBGRYDQ1BTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuIkmcmiqntz1RGeq9v/nct1vm+7ygfDqO5/YfTrEpwPDbE1Z1X5rmfUvjZ1N0ZXGiy2CtKTGmhd/naQKGvUj4qNFMEMwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFKoBvqCka1q03Wa8y7Uen6EWjuGMAoGCCqGSM49BAMCA0gAMEUCIQDi/X96c6e7HoIJQ/PCzRA9oebrwA0/e00MJ/dOjvpOdwIgbZyOBu8BtwBsv5HTOGNJzJbiUkf8b7Nj85KJjFeHgIw=";ret = base64_decode(indata3, strlen(indata3), SubCertificates.Certificate.array[1].bytes, &SubCertificates.Certificate.array[1].bytesLen);printf("ret= %d\n", ret);SAProvisioningCertificateChain.SubCertificates = SubCertificates;SAProvisioningCertificateChain.SubCertificates_isUsed = 1u;struct iso2_CertificateChainType ContractSignatureCertChain;init_iso2_CertificateChainType(&ContractSignatureCertChain);strcpy(ContractSignatureCertChain.Id.characters,"id1");ContractSignatureCertChain.Id.charactersLen = strlen("id1");ContractSignatureCertChain.Id_isUsed = 1u;char *indata4 = "MIIByzCCAXKgAwIBAgIBDzAKBggqhkjOPQQDAjBaMSAwHgYDVQQDDBdQS0ktMV9DUlRfTU9fU1VCMl9WQUxJRDEVMBMGA1UECgwMdmVyaXNjbyBHbWJIMQswCQYDVQQGEwJERTESMBAGCgmSJomT8ixkARkWAk1PMB4XDTIxMDkwMjEzMjEzOFoXDTIzMDkwMjEzMjEzOFowRDEXMBUGA1UEAwwOREUxQUJDRDJFRjM1N0ExFTATBgNVBAoMDHZlcmlzY28gR21iSDESMBAGCgmSJomT8ixkARkWAk1PMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaJJ9IFNgGUzaJxpjcZhOYIal3loOXuKwXly+6FlZkaMPdUclMreEAWHKTzrqXzaolWQW8xBHG17/AyynDIhgPqM/MD0wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA+gwHQYDVR0OBBYEFBPjJKg9jlTxyTUagyAmt3ej13R4MAoGCCqGSM49BAMCA0cAMEQCIFdZO1XVMtwk9/RuJUZHuCoazTSyexAyzKoURmRwNrHQAiB10WMXVNm+6Y4XXQuawoYABuyyoOXUuV4qG+3us3IS3A==";ret = base64_decode(indata4, strlen(indata4), ContractSignatureCertChain.Certificate.bytes, &ContractSignatureCertChain.Certificate.bytesLen);printf("ret= %d\n", ret);struct iso2_SubCertificatesType SubCertificates2;init_iso2_SubCertificatesType(&SubCertificates2);SubCertificates2.Certificate.arrayLen = 2;char *indata5 = "MIIB6DCCAY6gAwIBAgIBDTAKBggqhkjOPQQDAjBaMSAwHgYDVQQDDBdQS0ktMV9DUlRfTU9fU1VCMV9WQUxJRDEVMBMGA1UECgwMdmVyaXNjbyBHbWJIMQswCQYDVQQGEwJERTESMBAGCgmSJomT8ixkARkWAk1PMB4XDTIxMDkwMjEzMjEzOFoXDTI1MDkwMTEzMjEzOFowWjEgMB4GA1UEAwwXUEtJLTFfQ1JUX01PX1NVQjJfVkFMSUQxFTATBgNVBAoMDHZlcmlzY28gR21iSDELMAkGA1UEBhMCREUxEjAQBgoJkiaJk/IsZAEZFgJNTzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA9h8psbI/mdtOsqHTmQsh+oMbkRrR/I6YNeAl0sjWvo64RZiHPA81nv/TYgUz1ZktjLU9cIElLFACj+CS4xalqjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBSQiNhe8kxPxU2YZShx5Ui+pXt3jjAKBggqhkjOPQQDAgNIADBFAiAF0QxlfjVuqomAL/rmzzl1T/d3V7bb2vW8U/ITAMwmnwIhAPvxFX+FMCWUDdnZ9vsg5UdcAoo0RD0uLgXgjoRSRkqv";ret = base64_decode(indata5, strlen(indata5), SubCertificates2.Certificate.array[0].bytes, &SubCertificates2.Certificate.array[0].bytesLen);printf("ret= %d\n", ret);char *indata6 = "MIIB6DCCAY6gAwIBAgIBDDAKBggqhkjOPQQDAjBaMSAwHgYDVQQDDBdQS0ktMV9DUlRfTU9fUk9PVF9WQUxJRDEVMBMGA1UECgwMdmVyaXNjbyBHbWJIMQswCQYDVQQGEwJERTESMBAGCgmSJomT8ixkARkWAk1PMB4XDTIxMDkwMjEzMjEzOFoXDTI1MDkwMTEzMjEzOFowWjEgMB4GA1UEAwwXUEtJLTFfQ1JUX01PX1NVQjFfVkFMSUQxFTATBgNVBAoMDHZlcmlzY28gR21iSDELMAkGA1UEBhMCREUxEjAQBgoJkiaJk/IsZAEZFgJNTzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDVarDqUpBKFNnNkssVwvuxnQn3n5mmzKtTQ77ZW8E/yqR6dcWJGfmmOPHYruYZhPFnOGUOej2M6r/0QFhmr55ajRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSo3fgLPv91YCZfWdnipVvlXkP2pDAKBggqhkjOPQQDAgNIADBFAiEAhvm1ML5evLMHizVr04n4h2SakiNFzgGirk9FieQyVVoCIBqA2ZNiEflgdM8KINThkXwONYxJMctgySB6kl/LQ+qL";ret = base64_decode(indata6, strlen(indata6), SubCertificates.Certificate.array[1].bytes, &SubCertificates.Certificate.array[1].bytesLen);printf("ret= %d\n", ret);ContractSignatureCertChain.SubCertificates = SubCertificates;ContractSignatureCertChain.SubCertificates_isUsed = 1u;struct iso2_ContractSignatureEncryptedPrivateKeyType ContractSignatureEncryptedPrivateKey;init_iso2_ContractSignatureEncryptedPrivateKeyType(&ContractSignatureEncryptedPrivateKey);strcpy(ContractSignatureEncryptedPrivateKey.Id.characters,"id2");ContractSignatureEncryptedPrivateKey.Id.charactersLen = strlen("id2");char *indata7 = "AA==";ret = base64_decode(indata7, strlen(indata7), ContractSignatureEncryptedPrivateKey.CONTENT.bytes, &ContractSignatureEncryptedPrivateKey.CONTENT.bytesLen);printf("ret= %d\n", ret);struct iso2_DiffieHellmanPublickeyType DHpublickey;init_iso2_DiffieHellmanPublickeyType(&DHpublickey);strcpy(DHpublickey.Id.characters,"id3");DHpublickey.Id.charactersLen = strlen("id3");char *indata8 = "AA==";ret = base64_decode(indata8, strlen(indata8), DHpublickey.CONTENT.bytes, &DHpublickey.CONTENT.bytesLen);printf("ret= %d\n", ret);struct iso2_EMAIDType eMAID;init_iso2_EMAIDType(&eMAID);strcpy(eMAID.Id.characters,"id4");eMAID.Id.charactersLen = strlen("id4");strcpy(eMAID.CONTENT.characters,"DE1ABCD2EF357A");eMAID.CONTENT.charactersLen = strlen("DE1ABCD2EF357A");CertificateInstallationRes.SAProvisioningCertificateChain = SAProvisioningCertificateChain;CertificateInstallationRes.ContractSignatureCertChain = ContractSignatureCertChain;CertificateInstallationRes.ContractSignatureEncryptedPrivateKey = ContractSignatureEncryptedPrivateKey;CertificateInstallationRes.DHpublickey  = DHpublickey;CertificateInstallationRes.eMAID = eMAID;// fill Bodyinit_iso2_BodyType(&Body);Body.CertificateInstallationRes = CertificateInstallationRes;Body.CertificateInstallationRes_isUsed = 1u;init_iso2_V2G_Message(&V2G_Message);V2G_Message.Header = Header;V2G_Message.Body = Body;init_iso2_exiDocument( &exiDoc );exiDoc.V2G_Message = V2G_Message;//define out streamexi_bitstream_t stream;uint8_t* dataReq = (uint8_t*)malloc(4096);
//  uint8_t dataReq[1024]={0};memset(dataReq, 0, 4096);exi_bitstream_init(&stream, dataReq, 4096, 0, NULL);int ret1 = encode_iso2_exiDocument(&stream, &exiDoc);printf("ret1= %d \n",ret1);printf("stream.byte_pos =%ld \n",stream.byte_pos);log_hexdump("dataReq", dataReq, stream.byte_pos+1);//write to fileexiWrite2File("./bin/CertificateInstallationRes_out.exi", dataReq, stream.byte_pos+1);//根据exi解码exi_bitstream_reset(&stream);struct iso2_exiDocument exiDoc2;int ret2 = decode_iso2_exiDocument(&stream, &exiDoc2);printf("ret2= %d \n",ret2);free(dataReq);
}int log_hexdump(const char *title, const unsigned char *data, int len) {char str[160], octet[10];int ofs, i, k, d;const unsigned char *buf = (const unsigned char*) data;const char dimm[] ="+------------------------------------------------------------------------------+";printf("%s (%d bytes):\r\n", title, len);printf("%s\r\n", dimm);printf("| Offset  : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   0123456789ABCDEF |\r\n");printf("%s\r\n", dimm);for (ofs = 0; ofs < (int) len; ofs += 16) {d = snprintf(str, sizeof(str), "| %08X: ", ofs);for (i = 0; i < 16; i++) {if ((i + ofs) < (int) len) {snprintf(octet, sizeof(octet), "%02X ", buf[ofs + i]);} else {snprintf(octet, sizeof(octet), "   ");}d += snprintf(&str[d], sizeof(str) - d, "%s", octet);}d += snprintf(&str[d], sizeof(str) - d, "  ");k = d;for (i = 0; i < 16; i++) {if ((i + ofs) < (int) len) {str[k++] =(0x20 <= (buf[ofs + i]) && (buf[ofs + i]) <= 0x7E) ?buf[ofs + i] : '.';} else {str[k++] = ' ';}}str[k] = '\0';printf("%s |\r\n", str);}printf("%s\r\n", dimm);return 0;
}int StringHextoHex(char *str, unsigned char *out, int *outlen)
{if (str == NULL || out == NULL)return -1;int i = 0, ret = 0;ret = (strlen(str) / (2 * sizeof(char))) + strlen(str) % (2 * sizeof(char));for (i = 0; i < ret; i++)sscanf(str + 2 * i, "%02X", (unsigned int *)(out + i));if (outlen!= NULL)*outlen = ret;return ret;
}

运行后输出文件:CertificateInstallationReq_out.exi、CertificateInstallationRes_out.exi。

二者比较内容完全相同。

【结论】完成对所有33条命令编码结果验证(cbexigen与EXICodec.jar)完全相同。解码内容相同。

8.4.2 对ISO15118-20的测试

作者还针对-20的所有命令进行了代码测试,解决了一些问题(测试命令内容错误、遗漏,EXICodec.jar编码结果错误,编码bug),终于获得了全部命令的正确编码,结果与EXICodec.jar的编码完全相同。至此,终于可以宣布cbExiGen编解码库验证成功,能和EXICodec.jar进行正常通信。

99999


文章转载自:

http://tzKPeX3a.kmznb.cn
http://RuYPe7Fi.kmznb.cn
http://DZFUuB3b.kmznb.cn
http://gc0VBgnv.kmznb.cn
http://XW4qipRQ.kmznb.cn
http://7NgW9Kjg.kmznb.cn
http://Fu3RZdW1.kmznb.cn
http://rKYCTNBM.kmznb.cn
http://uBtb5mde.kmznb.cn
http://urcxJK11.kmznb.cn
http://SLTRGH8E.kmznb.cn
http://J9dVqfJk.kmznb.cn
http://1KHeM60n.kmznb.cn
http://JN2jobVw.kmznb.cn
http://8cx0fDEN.kmznb.cn
http://BmE4iWEZ.kmznb.cn
http://a0Qga9lG.kmznb.cn
http://HKMvqBrl.kmznb.cn
http://lp2joEgC.kmznb.cn
http://6VWoYdRZ.kmznb.cn
http://R2LJKybC.kmznb.cn
http://wOOOOtII.kmznb.cn
http://bOlDGbmH.kmznb.cn
http://8EQtLRTi.kmznb.cn
http://GIRBMl8V.kmznb.cn
http://UFB0NVZJ.kmznb.cn
http://LzIkRHIX.kmznb.cn
http://m7WTaS7u.kmznb.cn
http://X2t2wzgM.kmznb.cn
http://MebrjZC2.kmznb.cn
http://www.dtcms.com/wzjs/677296.html

相关文章:

  • 怎样建设一个自己的网站首页重庆喷绘制作
  • 棋牌网站搭建公司做cpa用什么网站
  • 分销网站wordpress 文章标题外链
  • 搭建网站的软件如何做品牌宣传与推广
  • 商城网站源码dede广州怎么建设一个网站
  • 做网站卖别人的软件可以吗网站等比例缩放
  • 微信二维码网站建设天津模板网页制作如何做
  • 品牌网站怎么做广告点击网站源码
  • 山东信达建设工程有限公司网站设计者联盟官网
  • 丽江网站开发太原网站建设找山西云起时
  • 网站装修的代码怎么做的临沧网站建设公司
  • 网站怎么做舆情监测公司网址怎么查询
  • 工信部备案网站查网站静态页面下载工具
  • 可以不花钱做网站吗白种女人做爰网站
  • 怎么建立一个属于自己的网站杭州大江东建设局网站
  • 东莞网站建设业务的公司网络运营专员
  • dede网站源码 如何如何自定义wordpress的登录页面
  • 找最新游戏做视频网站有哪些番禺做哪些做网站的
  • 娱乐企业网站建设wordpress html5 支持
  • 海南城乡与建设厅网站燃烧学课程网站建设
  • 手机html5网站开发做编程的+网站
  • 南宁物流公司网站建设网站推广的优势
  • 池州网站开发免费行情软件app网站大全下载有图片
  • 昆明网站搜索优化淘宝客网站源码加各类插件
  • 网站导入题库怎么做的网络营销的定义与特点
  • 新手学做网站优化企业建设网站价格单
  • 二手网站建设目标php网站的数据库怎么做备份
  • 网站访客qq统计系统铭坐网站建设
  • 网站做谷歌推广有效果吗个人电子邮箱怎么注册
  • 做字幕的网站织梦网站做404页面