日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

gmssl java_GMSSL编译运行Java Wrapper踩坑记录

發布時間:2023/12/10 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gmssl java_GMSSL编译运行Java Wrapper踩坑记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Mac上,按以下官方文檔的攻略是可以編譯通過的,但是在Linux上加上java就編譯失敗!

首先,按官方攻略把Mac流程跑通

//官方攻略BEGIN

編譯Java接口

由于GmSSL編譯腳本還不能實現在所有操作系統上自動編譯Java接口代碼,因此編譯腳本中默認沒有啟用Java接口的編譯。 開啟方式如下: 在源代碼根目錄下找到Configure文件,找到

$config{dirs} = [ "crypto", "ssl", "engines", "apps", "util", "tools", "fuzz", "test" ];

這一行,并將其修改為

$config{dirs} = [ "crypto", "ssl", "engines", "apps", "util", "tools", "fuzz", "test", "java" ];

重新編譯,則可以自動編譯java目錄下的C代碼和Java代碼,并生成libgmssljni動態庫和GmSSL.class。 這個模塊的編譯目前在Mac下可以測試通過。

在Linux和Mac下的編譯和安裝

./config

make

make test

sudo make install

//官方攻略End

在Mac上,編譯完成后能產生兩個dylib,一個是libgmssljni.dylib, 另一個是libcrypto.dylib

接著,把java目錄里頭的GmSSL.java 拿出來,切記切記,項目中要保持原文件中給出的package包路徑org.gmssl建目錄

在GmSSL.java底部的loadLibrary,指向的就是libgmssljni.dylib (Mac OS), 如果是Linux則是libgmssljni.so

static {

System.loadLibrary("gmssljni");

}

接著運行GmSSL中的main方法,注意,要在VMOption中添加java.library.path為上述libgmssljni.dylib和libcrypto.dylib所在目錄,例如:

-Djava.library.path=/Users/matt/Documents/securityworkspace/GmSSL

得到正確的運行結果

在Linux下的成功編譯經驗:

1、保持Configure文件中$config{dirs}原來的設置,不要添加java目錄,完成make install,會在GmSSL目錄內得到libcrypto.so

2、接著進入java目錄, 參考build.sh按下面的命令進行編譯,build.sh中-L /path/to/gmssl/lib 其實就是gmssl根目錄,加了lib有點誤導人

gcc -shared -fPIC -Wall -I./jni -I /home/java/gmssl/include -L /home/java/gmssl GmSSL.c -lcrypto -o libgmssljni.so

編譯成功,得到libgmssljni.so, 例如:

3、把步驟1中編譯出的libcrypto.so 拷到當前java目錄,當前目錄一共要有3個東西

4、最后,編譯GmSSL.java 并運行

mkdir -p org/gmssl

cp GmSSL.java org/gmssl

javac org/gmssl/GmSSL.java

java -Djava.library.path=/home/java/GmSSL/java -classpath /home/java/GmSSL/java org.gmssl.GmSSL

現在說下我是怎么發現這個坑的,一開始好不容易編譯通過了,直接運行,報錯

看著就像方法名不對,按master的最新GmSSL.java源碼,和官網過期GmSSL Wrapper示例源碼都不對,苦尋無果,只好把libgmssljni.so 用IDA-Pro反編譯了一下,看到寫死的類路徑的時候,一度想要砸鍵盤

總結

以上是生活随笔為你收集整理的gmssl java_GMSSL编译运行Java Wrapper踩坑记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。