Notice
Recent Posts
Recent Comments
Link
투케이2K
774. (Android/Java) [유틸 파일] getWebviewCertificatePublicKey : 웹뷰 브라우저 인증서 공개키 확인 본문
Android
774. (Android/Java) [유틸 파일] getWebviewCertificatePublicKey : 웹뷰 브라우저 인증서 공개키 확인
투케이2K 2024. 4. 22. 20:09[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : getWebviewCertificatePublicKey : [웹뷰 브라우저 인증서 공개키 확인] : getPublicKey
// -----------------------------------------------------------------------------------------
@RequiresApi(Build.VERSION_CODES.Q)
public static String getWebviewCertificatePublicKey(Context mContext, WebView webView) {
/**
* // -----------------------------------------
* [getWebviewCertificatePublicKey 메소드 설명]
* // -----------------------------------------
* 1. 웹뷰 브라우저 인증서 공개키 확인
* // -----------------------------------------
* 2. 호출 방식 :
*
* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
* C_WebviewCommonFunc.getWebviewCertificatePublicKey(A_Webview.this, main_webview);
* }
* // -----------------------------------------
* 3. 리턴 데이터 :
*
* 웹뷰 로드 브라우저 인증서 공개 키 값
* // -----------------------------------------
* */
// [변수 선언 실시]
String returnData = "";
String M_LOG = "";
String url = "";
// [로직 처리 실시]
try {
// [널 체크 수행 실시]
if (webView != null){
url = String.valueOf(webView.getUrl());
if (C_Util.stringNotNull(url) == false){ // [널 인 경우]
url = String.valueOf(webView.getOriginalUrl());
}
if (C_Util.stringNotNull(url) == true){ // [URL 널 검증] >> [널이 아닌 경우]
// [https 로 시작하는지 확인]
if (url.startsWith("https") == true){
// [SslCertificate 획득]
SslCertificate sslCertificate = webView.getCertificate();
// [X509Certificate 인증서]
X509Certificate x509Certificate = sslCertificate.getX509Certificate();
// [인증서 공개 키 추출 실시]
PublicKey publicKey = (PublicKey) x509Certificate.getPublicKey();
if (publicKey != null){
// [base64 format]
returnData = Base64.encodeToString(publicKey.getEncoded(), Base64.DEFAULT);
returnData = returnData.replaceAll(" ", "");
returnData = returnData.replaceAll("(\r\n|\r|\n|\n\r)", "");
M_LOG = "[Success] :: get webview public key";
}
else {
M_LOG = "[ERROR] :: webview public key is null";
}
}
else {
M_LOG = "[ERROR] :: url startWith https";
}
}
else {
M_LOG = "[ERROR] :: url is null";
}
}
else {
M_LOG = "[ERROR] :: webView is null";
}
} catch (Exception e) {
M_LOG = "[EXCEPTION] :: " + String.valueOf(e.getMessage());
S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
}
// [로그 출력 실시]
//*
// ===============================================================
S_Log._F_(mContext, "웹뷰 브라우저 인증서 공개키 값 확인", new String[]{
"URL :: " + String.valueOf(url),
"M_LOG :: " + String.valueOf(M_LOG),
"RETURN :: " + String.valueOf(returnData)
});
// ===============================================================
// */
// [리턴 변수 반환]
return returnData;
}
[결과 출력]
W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_WebviewCommonFunc.getWebviewCertificatePublicKey(C_WebviewCommonFunc.java:721)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-04-22 10:32:01 월요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 웹뷰 브라우저 인증서 공개키 값 확인]
I/: ----------------------------------------------------
I/: [LOG :: URL :: https://m.naver.com/]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: [Success] :: get webview public key]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEG2Vd6fpVzuj06rFFj588gyXs+PiEevcJq9x0NDnlPyUCpgVSGj2P8k5HjCIKp7Pgva+XG90zoykY+vlGJoohSg==]
W///===========//: ================================================
반응형
'Android' 카테고리의 다른 글
Comments