diff --git a/trunk/hsm_utils/sign_verify_rsa_pkcs1_sha256.c b/trunk/hsm_utils/sign_verify_rsa_pkcs1_sha256.c index f4f0e95..6379e91 100644 --- a/trunk/hsm_utils/sign_verify_rsa_pkcs1_sha256.c +++ b/trunk/hsm_utils/sign_verify_rsa_pkcs1_sha256.c @@ -69,6 +69,7 @@ int loadFileSize = 0; int validFileSize = 0; int offsetFileSize = 0; unsigned char *loadFileBuf = NULL; +char *writeFilePath = NULL; // function int signVerifyRSAPKCS1Sha256( NFKM_KeyIdent priv_ident, NFKM_KeyIdent pub_ident ); @@ -234,6 +235,31 @@ int signVerifyRSAPKCS1Sha256( NFKM_KeyIdent priv_ident, NFKM_KeyIdent pub_ident // show data PrintArray( (char*)"HSM Sign", middlePtr, middleLen ); + // save sign data + if (writeFilePath) + { + FILE *pSaveFile; + + pSaveFile = fopen( writeFilePath, "wb" ); + if (pSaveFile == NULL) + { + printf("file open error : %s\n", writeFilePath); + return 1; + } + else + { + if (fwrite( middlePtr, middleLen, 1, pSaveFile ) != 1) + { + printf("file write error : %s\n", writeFilePath); + } + else + { + printf( "Success : Sign Data written to %s\n", writeFilePath ); + } + } + fclose( pSaveFile ); + } + NFastApp_Free_Command( handle, NULL, NULL, &cmd ); NFastApp_Free_Reply( handle, NULL, NULL, &reply ); @@ -435,6 +461,7 @@ int main( int argc, char *argv[] ) { "priv", required_argument, 0, 0 }, { "pub", required_argument, 0, 0 }, { "in", required_argument, 0, 0 }, + { "out", required_argument, 0, 0 }, { "size", required_argument, 0, 0 }, { "offset", required_argument, 0, 0 }, { 0, 0, 0, 0 } @@ -468,11 +495,15 @@ int main( int argc, char *argv[] ) { loadFilePath = optarg; } break; - case 4 : // size + case 4 : // out + { + writeFilePath = optarg; + } break; + case 5 : // size { validFileSize = atoi(optarg); } break; - case 5 : // offset + case 6 : // offset { offsetFileSize = atoi(optarg); } break; @@ -488,6 +519,8 @@ int main( int argc, char *argv[] ) printf( " Default=%s\n", DEFAULT_PUB_KEY_FILE_PATH ); printf( " --in filename : input file for SHA256\n" ); printf( " Default=reasonable array\n" ); + printf( " --out filename : output sign data\n" ); + printf( " Default=N/A\n" ); printf( " --size size : valid file size for SHA256\n" ); printf( " --offset fize : offset file size for SHA256\n" ); printf( "\n" ); @@ -535,7 +568,7 @@ int main( int argc, char *argv[] ) return 1; } - // create rsa-pss cert + // create rsa pkcs1 sha256 sign & verify result = signVerifyRSAPKCS1Sha256( priv_keyident, pub_keyident ); if ( result != Status_OK ) {