优化加密接口

hdrplus
Aries 1 year ago
parent 56e3012737
commit a6598095bb

@ -712,35 +712,39 @@ Java_com_xypower_mpapp_MicroPhotoService_getSerialNumber(
extern "C" JNIEXPORT jboolean JNICALL extern "C" JNIEXPORT jboolean JNICALL
Java_com_xypower_mpapp_MicroPhotoService_importPublicKeyFile( Java_com_xypower_mpapp_MicroPhotoService_importPublicKeyFile(
JNIEnv* env, jclass cls, jint index, jstring path, jstring md5) { JNIEnv* env, jclass cls, jint index, jstring outputPath, jstring md5) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
NrsecPort nrsec;
// NrsecSpiPort spi("/dev/mtkgpioctrl"); // NrsecSpiPort spi("/dev/mtkgpioctrl");
// NrsecSpiPort spi("/dev/spidevSE"); // NrsecSpiPort spi("/dev/spidevSE");
// const char *port = "/dev/mtkgpioctrl"; // const char *port = "/dev/mtkgpioctrl";
const char *port = "/dev/spidev0.0";
if (!nrsec.Open(port)) if (env->GetStringUTFLength(outputPath) <=0)
{
return JNI_FALSE;
}
NrsecPort nrsec;
const char *path = NRSEC_PATH;
if (!nrsec.Open(path))
{ {
return JNI_FALSE; return JNI_FALSE;
} }
const char *pathStr = env->GetStringUTFChars(path, 0); const char *outputPathStr = env->GetStringUTFChars(outputPath, 0);
const char *md5Str = env->GetStringUTFChars(md5, 0); const char *md5Str = env->GetStringUTFChars(md5, 0);
bool res = false; bool res = false;
std::vector<unsigned char> data; std::vector<unsigned char> data;
if (readFile(pathStr, data) && !data.empty()) if (readFile(outputPathStr, data) && !data.empty())
{ {
res = nrsec.SM2ImportPublicKey(1, &data[0]); res = nrsec.SM2ImportPublicKey(index, &data[0]) == 0;
} }
nrsec.Close(); nrsec.Close();
env->ReleaseStringUTFChars(path, pathStr); env->ReleaseStringUTFChars(outputPath, outputPathStr);
env->ReleaseStringUTFChars(md5, md5Str); env->ReleaseStringUTFChars(md5, md5Str);
return res ? JNI_TRUE : JNI_FALSE; return res ? JNI_TRUE : JNI_FALSE;
@ -768,7 +772,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPublicKey(
jbyte* byteCert = env->GetByteArrayElements(cert, 0); jbyte* byteCert = env->GetByteArrayElements(cert, 0);
bool res = nrsec.SM2ImportPublicKey(index, (const uint8_t*)byteCert); bool res = nrsec.SM2ImportPublicKey(index, (const uint8_t*)byteCert) == 0;
nrsec.Close(); nrsec.Close();
@ -784,12 +788,11 @@ Java_com_xypower_mpapp_MicroPhotoService_genKeys(
jclass cls, jint index) { jclass cls, jint index) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
// GpioControl::setRS485Enable(true); // GpioControl::setRS485Enable(true);
GpioControl::setSpiMode(SPI_MODE_3); //GpioControl::setSpiMode(SPI_MODE_3);
GpioControl::setSpiBitsPerWord(8); //GpioControl::setSpiBitsPerWord(8);
GpioControl::setSpiMaxSpeedHz(33000000); //GpioControl::setSpiMaxSpeedHz(33000000);
const char *path = NRSEC_PATH; const char *path = NRSEC_PATH;
@ -834,7 +837,7 @@ Java_com_xypower_mpapp_MicroPhotoService_requestCert(
JNIEnv* env, jclass cls, jint type, jint index, jstring subject, jstring outputPath) { JNIEnv* env, jclass cls, jint type, jint index, jstring subject, jstring outputPath) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
if (env->GetStringUTFLength(subject) || env->GetStringUTFLength(outputPath)) if (env->GetStringUTFLength(subject) <=0 || env->GetStringUTFLength(outputPath) <=0)
{ {
return JNI_FALSE; return JNI_FALSE;
} }
@ -849,7 +852,9 @@ Java_com_xypower_mpapp_MicroPhotoService_requestCert(
uint8_t output[1024] = { 0 }; uint8_t output[1024] = { 0 };
uint16_t len = 0; uint16_t len = 0;
const char* subjectStr = env->GetStringUTFChars(subject, 0); const char* subjectStr = env->GetStringUTFChars(subject, 0);
bool res = nrsec.SM2cert(type, index, subjectStr, output, &len) == 0;
std::string titleStr(subjectStr);
bool res = nrsec.SM2cert(type, index, titleStr, output, &len) == 0;
nrsec.Close(); nrsec.Close();
env->ReleaseStringUTFChars(subject, subjectStr); env->ReleaseStringUTFChars(subject, subjectStr);
if (!res) if (!res)
@ -874,30 +879,35 @@ Java_com_xypower_mpapp_MicroPhotoService_requestCert(
extern "C" JNIEXPORT jboolean JNICALL extern "C" JNIEXPORT jboolean JNICALL
Java_com_xypower_mpapp_MicroPhotoService_importPrivateKeyFile( Java_com_xypower_mpapp_MicroPhotoService_importPrivateKeyFile(
JNIEnv* env, jclass cls, jint index, jstring path, jstring md5) { JNIEnv* env, jclass cls, jint index, jstring outputPath, jstring md5) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
const char *port = "/dev/spidev0.0";
if (env->GetStringUTFLength(outputPath)<=0)
{
return JNI_FALSE;
}
const char *path = NRSEC_PATH;
NrsecPort nrsec; NrsecPort nrsec;
if (!nrsec.Open(port)) if (!nrsec.Open(path))
{ {
return JNI_FALSE; return JNI_FALSE;
} }
const char *pathStr = env->GetStringUTFChars(path, 0); const char *outputPathStr = env->GetStringUTFChars(outputPath, 0);
const char *md5Str = env->GetStringUTFChars(md5, 0); const char *md5Str = env->GetStringUTFChars(md5, 0);
bool res = false; bool res = false;
std::vector<unsigned char> data; std::vector<unsigned char> data;
if (readFile(pathStr, data) && !data.empty()) if (readFile(outputPathStr, data) && !data.empty())
{ {
res = nrsec.SM2ImportPrivateKey(index, &data[0]) == 0; res = nrsec.SM2ImportPrivateKey(index, &data[0]) == 0;
} }
nrsec.Close(); nrsec.Close();
env->ReleaseStringUTFChars(path, pathStr); env->ReleaseStringUTFChars(outputPath, outputPathStr);
env->ReleaseStringUTFChars(md5, md5Str); env->ReleaseStringUTFChars(md5, md5Str);
return res ? JNI_TRUE : JNI_FALSE; return res ? JNI_TRUE : JNI_FALSE;
@ -907,11 +917,16 @@ Java_com_xypower_mpapp_MicroPhotoService_importPrivateKeyFile(
extern "C" JNIEXPORT jboolean JNICALL extern "C" JNIEXPORT jboolean JNICALL
Java_com_xypower_mpapp_MicroPhotoService_exportPublicKeyFile( Java_com_xypower_mpapp_MicroPhotoService_exportPublicKeyFile(
JNIEnv* env, jclass cls, jint index) { JNIEnv* env, jclass cls, jint index, jstring outputPath) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
const char *path = NRSEC_PATH;
if (env->GetStringUTFLength(outputPath)<=0)
{
return JNI_FALSE;
}
const char *path = NRSEC_PATH;
NrsecPort nrsec; NrsecPort nrsec;
if (!nrsec.Open(path)) if (!nrsec.Open(path))
{ {
@ -920,28 +935,41 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPublicKeyFile(
bool res = false; bool res = false;
std::vector<unsigned char> data(64,0); std::vector<unsigned char> data(64,0);
res = nrsec.SM2ExportPublicKey(index, &data[0]) == 0; uint8_t len=0;
res = nrsec.SM2ExportPublicKey(index, &data[0], &len) == 0;
FILE* file = fopen("/sdcard/device_pbkey.cer", "wb");
fwrite(&data[0], sizeof(unsigned char), data.size(), file);
fclose(file);
nrsec.Close(); nrsec.Close();
if (!res)
{
return JNI_FALSE;
}
return res ? JNI_TRUE : JNI_FALSE; const char* outputPathStr = env->GetStringUTFChars(outputPath, 0);
FILE* file = fopen(outputPathStr, "wb");
env->ReleaseStringUTFChars(outputPath, outputPathStr);
if (file == NULL)
{
return JNI_FALSE;
}
int bytes = fwrite(&data[0], sizeof(unsigned char), len, file);
fclose(file);
return bytes == len ? JNI_TRUE : JNI_FALSE;
#endif #endif
} }
extern "C" JNIEXPORT jboolean JNICALL extern "C" JNIEXPORT jboolean JNICALL
Java_com_xypower_mpapp_MicroPhotoService_exportPrivateFile( Java_com_xypower_mpapp_MicroPhotoService_exportPrivateFile(
JNIEnv* env, jclass cls, jint index) { JNIEnv* env, jclass cls, jint index, jstring outputPath) {
#ifdef USING_NRSEC #ifdef USING_NRSEC
const char *path = NRSEC_PATH;
if (env->GetStringUTFLength(outputPath)<=0)
{
return JNI_FALSE;
}
const char *path = NRSEC_PATH;
NrsecPort nrsec; NrsecPort nrsec;
if (!nrsec.Open(path)) if (!nrsec.Open(path))
{ {
@ -950,17 +978,25 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPrivateFile(
bool res = false; bool res = false;
std::vector<unsigned char> data(64,0); std::vector<unsigned char> data(64,0);
res = nrsec.SM2ExportPrivateKey(index, &data[0]) == 0; uint8_t len=0;
res = nrsec.SM2ExportPrivateKey(index, &data[0],&len) == 0;
FILE* Exprvkey_file = fopen("/sdcard/device_prvkey.cer", "wb");
fwrite(&data[0], sizeof(unsigned char), data.size(), Exprvkey_file);
fclose(Exprvkey_file);
nrsec.Close(); nrsec.Close();
if (!res)
{
return JNI_FALSE;
}
return res ? JNI_TRUE : JNI_FALSE; const char* outputPathStr = env->GetStringUTFChars(outputPath, 0);
FILE* file = fopen(outputPathStr, "wb");
env->ReleaseStringUTFChars(outputPath, outputPathStr);
if (file == NULL)
{
return JNI_FALSE;
}
int bytes = fwrite(&data[0], sizeof(unsigned char), len, file);
fclose(file);
return bytes == len ? JNI_TRUE : JNI_FALSE;
#endif #endif
} }

@ -1140,15 +1140,15 @@ cellSignalStrengthGsm.getDbm();
public static native void setOtgState(boolean enabled); public static native void setOtgState(boolean enabled);
public static native void setCam3V3Enable(boolean enabled); public static native void setCam3V3Enable(boolean enabled);
public static native String getSerialNumber(); public static native String getSerialNumber();
public static native boolean importPublicKeyFile(int index, String path, String md5); public static native boolean importPublicKeyFile(int index, String outputPath, String md5);
public static native boolean importPublicKey(int index, byte cert[]); public static native boolean importPublicKey(int index, byte cert[]);
public static native boolean genKeys(int index); public static native boolean genKeys(int index);
public static native String querySecVersion(); public static native String querySecVersion();
public static native boolean requestCert(int type, int index, String subject, String outputPath); public static native boolean requestCert(int type, int index, String subject, String outputPath);
public static native boolean importPrivateKeyFile(int index, String path, String md5); public static native boolean importPrivateKeyFile(int index, String outputPath, String md5);
public static native boolean exportPublicKeyFile(int index); public static native boolean exportPublicKeyFile(int index, String outputPath);
public static native boolean exportPrivateFile(int index); public static native boolean exportPrivateFile(int index, String outputPath);
////////////////////////GPS//////////////////// ////////////////////////GPS////////////////////

Loading…
Cancel
Save