142 lines
4.8 KiB
C++
142 lines
4.8 KiB
C++
#include "WeWorkFinanceSdk_C.h"
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string>
|
|
using std::string;
|
|
|
|
// 私钥内容,示例
|
|
static const char* priKey =
|
|
"-----BEGIN RSA PRIVATE KEY-----\n"
|
|
"MIIEogIBAAKCAQEAngIe+L+lJFQOWu+FtgWzTYcG+bQTANvgatpjM0CswTLR5oY+\n"
|
|
"IvpQ9X0EID3AEC0PyaatOgSvmvWCUQunZtA3lhdkdsJG1Nxe1FOOI+Q1qlgW/ykT\n"
|
|
"JkuJJv8qnd9HFdpkTkkAB3CxW5zGoYYtBlnp3G3mUhGXZ/6dIWQ4Wln4lJlUlxSe\n"
|
|
"Qv4YvDOGN2dWbIG79nL9YNKyk9yYgLop2O7XJGXgqCuV5CUz4jdxB5XCH3SzqFgJ\n"
|
|
"A36JguG5jD7ovFh7cL+yp1iTyF/+1woDARXXpIj+W6K3Skoo5cpt0BboPYu0EuCz\n"
|
|
"YQtfn+hUfkcS6kltnwSXUBFzrSLhjCkf5tY/LwIDAQABAoIBADxB8M/KPk9hYuwZ\n"
|
|
"BjQJbny1btqRauHb+HSnfkdQddFj8RppvY6XSYKlP4qQIgvJM4kicFN87/83e5Au\n"
|
|
"0pNp+pjZqO2FX3/T3rI4fy9+21xwJaz/XBcxnUdq7jSwrqpN1Azq2AD+YBTg7/sv\n"
|
|
"cUJHzeDLZJeNr+Dv/7p5PuhuAVehm3g+b0GwuWK2HieXAlRR240vn+dCZoq8ti6Y\n"
|
|
"jmcZcJ9E6urY/L3d5bqByN2SGSbgJav6VAQYf8vfOU+SeAXFunGUWasuS3tvQlMO\n"
|
|
"eEPW37oNAsKHkKDQcKAcPo59fwPdbPKE/5N/wKPsbN8nVYTqdzociQdZnNpG8DK2\n"
|
|
"SdE5ZzkCgYEA4S3mNaklMA0vNR20lSum68j4L0r57Q7pN0ATmItBhF5ihEbtLlAg\n"
|
|
"OsLsxQZ2XIzevsnvUvRKDi7pcu3u2VqlX/89aWOcTOyEyKGHCUPkkOr4+3m2cGtQ\n"
|
|
"WF676TtNcfj4yOyJ5gMmtld84yUwrHjHgvtP/L73MftHzssQFj0Qk20CgYEAs6Ka\n"
|
|
"kXLAHtKwB5R/knXmkCYnfRX/TqjhTVO3Hr2PvqojAmiuWmWp9YsXtbYDFpxQPOp0\n"
|
|
"Y1qosC1qW+pZCXgSlsjsdhJa3t2hhsF2SAWoy2QpAsuHWizHq9T8XFb14U/4PjBz\n"
|
|
"B9P1mf5c84Iox3tUnwKuBsNt8FOXwJRPnddsH4sCgYB2zpLR6SaXzb0El2G5+sgd\n"
|
|
"S3G28iYfb2iZIBO2vnKY9nugMxPdBaWbm1D1O02j0yeLHlxJNl8EULgXTXZh87Oh\n"
|
|
"jLfILShAZeJBQQhQWSP1WiR3+mXJtrUzivg2PHXGFoic6kBvvWXlew+HgQ3HUgpi\n"
|
|
"D1rKja87Dct7TiR0t09RmQKBgBspvWG9Dlwa089xnxDQjzrA6ju59c85Lkh5Hjmh\n"
|
|
"xHi6VWzp02OL9/VPQRiTG0hx/pgXg936OYPaejjH6QrLg1QVsdvwzpjgvqoX2wDt\n"
|
|
"CicnUCRCDoeOOes726VC6Q9W/ly5CsvmOz87/WY9ClmPxq38w7/2EUvD+DCAvMFL\n"
|
|
"b+gdAoGAUiY1xefNe4qnbQzJXpPUUcOGiJcl7r9HwrZx8tDwGgBg+/5zbwi/0TfH\n"
|
|
"YrIj86g+JHaMEQCcKko8H0KdQzzp1vNECNxOGvz8ckOrO+NsLzHOpZ4jhojV/vFg\n"
|
|
"FNl6PhOdUozqTYwrnszoO67a/jKS/rWQh5Ta2Y2K5sUNprk8Z1w=\n"
|
|
"-----END RSA PRIVATE KEY-----\n";
|
|
|
|
// rsa 解密函数,需企业自行实现
|
|
int RsaDecryptChatData(const string &encryptdata,const string &priKey,string &aeskey);
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int ret = 0;
|
|
if (argc < 2)
|
|
{
|
|
printf("./sdktools 1 seq limit proxy passwd timeout\n");
|
|
printf("./sdktools 2 fileid savefile proxy passwd timeout\n");
|
|
printf("./sdktools 3 encrypt_key encrypt_msg\n");
|
|
return -1;
|
|
}
|
|
|
|
// new sdk api
|
|
WeWorkFinanceSdk_t* sdk = NewSdk();
|
|
|
|
// init api
|
|
ret = Init(sdk, "wwd08coe7d775abaaa","zJ6k0naVVQ--gt9PUSSEvs03zW_nlDVmjAkPOTAfrew");
|
|
if (ret != 0) {
|
|
|
|
printf("init sdk err ret:%d\n", ret);
|
|
return ret;
|
|
}
|
|
|
|
int type = strtoul(argv[1], NULL, 10);
|
|
if (type == 1)
|
|
{
|
|
uint64_t iSeq = strtoul(argv[2], NULL, 10);
|
|
uint64_t iLimit = strtoul(argv[3], NULL, 10);
|
|
uint64_t timeout = strtoul(argv[6], NULL, 10);
|
|
Slice_t* chatDatas = NewSlice();
|
|
|
|
// getchatdata api
|
|
ret = GetChatData(sdk, iSeq, iLimit, argv[4],argv[5], timeout, chatDatas);
|
|
if (ret != 0) {
|
|
printf("GetChatData err ret:%d\n", ret);
|
|
return -1;
|
|
}
|
|
printf("GetChatData len:%d data:%s\n", chatDatas->len, GetContentFromSlice(chatDatas));
|
|
FreeSlice(chatDatas);
|
|
}
|
|
else if (type == 2)
|
|
{
|
|
std::string index = "";
|
|
uint64_t timeout = strtoul(argv[6], NULL, 10);
|
|
while(true){
|
|
printf("index:%s\n",index.c_str());
|
|
MediaData_t* media = NewMediaData();
|
|
|
|
// getmediadata api
|
|
ret = GetMediaData(sdk, index.c_str(), argv[2],argv[4],argv[5], timeout, media);
|
|
|
|
if (ret != 0) {
|
|
printf("GetMediaData err ret:%d\n", ret);
|
|
FreeMediaData(media);
|
|
return -1;
|
|
}
|
|
printf("content size:%d isfin:%d outindex:%s\n",GetDataLen(media),IsMediaDataFinish(media),GetOutIndexBuf(media));
|
|
|
|
char file[200];
|
|
snprintf(file, sizeof(file), "%s%s", "/home/qspace/upload/", argv[3]);
|
|
FILE *fp = fopen(file, "ab+");
|
|
printf("filename:%s \n", file);
|
|
if (NULL == fp) {
|
|
printf("open file err\n");
|
|
return -1;
|
|
}
|
|
|
|
fwrite(GetData(media),GetDataLen(media), 1, fp);
|
|
fclose(fp);
|
|
|
|
if(IsMediaDataFinish(media)==1)
|
|
{
|
|
FreeMediaData(media);
|
|
break;
|
|
}
|
|
else{
|
|
// assign index value if not finish
|
|
index.assign(GetOutIndexBuf(media));
|
|
|
|
// need free media
|
|
FreeMediaData(media);
|
|
}
|
|
}
|
|
} else if (type == 3) {
|
|
Slice_t* msg = NewSlice();
|
|
std::string encrypt_key;
|
|
|
|
// rsa decrypt code .need do it by yourself
|
|
int ret = RsaDecryptChatData(argv[2], priKey, encrypt_key);
|
|
printf("Rsadecrypt key :%s ret :%d\n" ,encrypt_key.c_str(), ret);
|
|
|
|
// decryptdata api
|
|
ret = DecryptData(encrypt_key.c_str(), argv[3], msg);
|
|
printf("chatdata :%s ret :%d\n" ,GetContentFromSlice(msg), ret);
|
|
FreeSlice(msg);
|
|
} else if(type == 4){
|
|
Slice_t* msg = NewSlice();
|
|
ret = DecryptData(argv[2], argv[3], msg);
|
|
printf("chatdata :%s ret :%d\n" ,GetContentFromSlice(msg), ret);
|
|
}
|
|
DestroySdk(sdk);
|
|
return ret;
|
|
} |