最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android證書(shū)安裝過(guò)程介紹

 更新時(shí)間:2021年12月08日 15:41:29   作者:z9722  
大家好,本篇文章主要講的是Android證書(shū)安裝過(guò)程介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

一.證書(shū)在源碼中的路徑

5.1系統(tǒng)證書(shū)(命名是 openssl x509 -subject_hash_old -in filename)

libcore/luni/src/main/files/cacerts

7.1及以后系統(tǒng)證書(shū)

/system/ca-certificates/files

二.證書(shū)在固件中的路徑

/system/etc/security/cacerts

三.手動(dòng)安裝流程

設(shè)置-->安全-->從SD卡安裝證書(shū):

在AndroidManif.xml里

<Preference android:key="credentials_install"
        android:title="@string/credentials_install"
        android:summary="@string/credentials_install_summary"
        android:persistent="false">
    <intent android:action="android.credentials.INSTALL"
            android:targetPackage="com.android.certinstaller"
            android:targetClass="com.android.certinstaller.CertInstallerMain"/>
</Preference>

packages/apps/CertInstaller

CertInstallerMain打開(kāi)Document,選擇證書(shū)文件,選擇好后。啟動(dòng)CerInstaller

然后根據(jù)證書(shū)類型區(qū)分createPkcs12PasswordDialog和createNameCredentialDialog,看個(gè)簡(jiǎn)單的createNameCredentialDialog

try {
    startActivityForResult(
            mCredentials.createSystemInstallIntent(),   //Intent intent = new Intent("com.android.credentials.INSTALL");
            REQUEST_SYSTEM_INSTALL_CODE);
} catch (ActivityNotFoundException e) {
    Log.w(TAG, "systemInstall(): " + e);
    toastErrorAndFinish(R.string.cert_not_saved);
}

看intent,又到了Settings的CredentialStorage

Settings/src/com/android/settings/CredentialStorage.java ? ?installIfAvailable

添加證書(shū):Settings/src/com/android/settings/CredentialStorage.java ? ?installIfAvailable()

刪除證書(shū):Settings/src/com/android/settings/TrustedCredentialsSettings.java ? AliasOperation#doInBackground

顯示證書(shū):Settings/src/com/android/settings/TrustedCredentialsSettings.java ? AdapterData#AliasLoader#doInBackground ??

證書(shū)內(nèi)容:Settings/src/com/android/settings/TrustedCredentialsSettings.java ?CertHolder ?SslCertificate

安裝類型兩種: userKey和Ca證書(shū)(pk12要處理密碼)

CertInstaller\src\com\android\certinstaller\CredentialHelper.java

異常碼:

機(jī)器未設(shè)置密碼鎖

機(jī)器未解鎖

鎖屏方式不符合要求還是packages/apps/CertInstaller/CertInstallerMain,startActivityForResult結(jié)果回調(diào)

if (requestCode == REQUEST_SYSTEM_INSTALL_CODE) {
    if (resultCode == RESULT_OK) {
        Log.d(TAG, "credential is added: " + mCredentials.getName());
        Toast.makeText(this, getString(R.string.cert_is_added,
                mCredentials.getName()), Toast.LENGTH_LONG).show();
 
        if (mCredentials.hasCaCerts()) {
            // more work to do, don't finish just yet
            new InstallCaCertsToKeyChainTask().execute();
            return;
        }
        setResult(RESULT_OK);
    } else {
        Log.d(TAG, "credential not saved, err: " + resultCode);
        toastErrorAndFinish(R.string.cert_not_saved);
    }
}

如果是CaCerts,還要進(jìn)行 new InstallCaCertsToKeyChainTask().execute() --> mCredentials.installCaCertsToKeyChain --> keyChainService.installCaCertificate

keyChainService實(shí)現(xiàn)在packages/apps/KeyChain ?mTrustedCertificateStore.installCertificate

external/conscrypt/src/platform/java/org/conscrypt/TrustedCertificateStore ? installCertificate --> writeCertificate

四.c層

system/security/keystore/keystore.cpp

添加證書(shū) ?installIfAvailable -> mKeyStore.put -> mBinder.insert (這里還是java層)
-> KeyStoreProxy::insert -> KeyStore::put ?(這里getEncryptionKey用到一個(gè)AESkey,哪里來(lái)的?)

五.為什么要鎖屏密碼

以設(shè)置密碼為例
Settings/src/com/android/settings/ChooseLockPassword.java ?mLockPatternUtils.saveLockPassword
frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java ?getLockSettings().setLockPassword
frameworks/base/services/core/java/com/android/server/LockSettingsService.java ?setLockPassword -> maybeUpdateKeystore ?-> ks.passwordUid
-> 到keystore.cpp的password_uid?

password_uid 有三種狀態(tài),其中STATE_UNINITIALIZED和STATE_LOCKED都會(huì)調(diào)用setupMasterKeys,經(jīng)鎖屏密碼設(shè)置AESkey
這里就解答了添加證書(shū)時(shí)的AESKey是哪來(lái)的

這個(gè)是基于Android5.1分析的,高版本可能文件名不同,但是知道大概位置,搜索下,應(yīng)該沒(méi)什么難度? ? ? ??

到此這篇關(guān)于Android證書(shū)安裝過(guò)程介紹的文章就介紹到這了,更多相關(guān)Android證書(shū)安裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android中WebView實(shí)現(xiàn)點(diǎn)擊超鏈接啟動(dòng)QQ的方法

    Android中WebView實(shí)現(xiàn)點(diǎn)擊超鏈接啟動(dòng)QQ的方法

    這篇文章主要給大家介紹了在Android中WebView如何實(shí)現(xiàn)點(diǎn)擊超鏈接啟動(dòng)QQ的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • Android 中自定義Dialog樣式的Activity點(diǎn)擊空白處隱藏軟鍵盤(pán)功能(dialog不消失)

    Android 中自定義Dialog樣式的Activity點(diǎn)擊空白處隱藏軟鍵盤(pán)功能(dialog不消失)

    項(xiàng)目中需要開(kāi)發(fā)帶有EditText的Dialog顯示,要求在編輯完EditText時(shí),點(diǎn)擊Dilog的空白處隱藏軟鍵盤(pán)。但是Dialog不會(huì)消失。下面通過(guò)實(shí)例代碼給大家分享實(shí)現(xiàn)方法,需要的的朋友參考下吧
    2017-04-04
  • Android發(fā)布項(xiàng)目到j(luò)itpack的完整步驟

    Android發(fā)布項(xiàng)目到j(luò)itpack的完整步驟

    這篇文章主要給大家介紹了關(guān)于Android發(fā)布項(xiàng)目到j(luò)itpack的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    這篇文章主要為大家詳細(xì)介紹了Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android?ButterKnife依賴注入框架使用教程

    Android?ButterKnife依賴注入框架使用教程

    ButterKnife是一個(gè)專注于Android系統(tǒng)的View注入框架,以前總是要寫(xiě)很多findViewById來(lái)找到View對(duì)象,有了ButterKnife可以很輕松的省去這些步驟。是大神JakeWharton的力作,目前使用很廣
    2023-02-02
  • Android 斷點(diǎn)續(xù)傳原理以及實(shí)現(xiàn)

    Android 斷點(diǎn)續(xù)傳原理以及實(shí)現(xiàn)

    這篇文章主要介紹了Android 斷點(diǎn)續(xù)傳原理以及實(shí)現(xiàn)的相關(guān)資料,這里對(duì)斷點(diǎn)續(xù)傳原理進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下
    2016-12-12
  • Android?自定義?Dialog?實(shí)現(xiàn)列表?單選、多選、搜索功能

    Android?自定義?Dialog?實(shí)現(xiàn)列表?單選、多選、搜索功能

    Android開(kāi)發(fā)經(jīng)常需要用到對(duì)話框來(lái)進(jìn)行信息的篩選和搜索,本文詳細(xì)介紹了如何使用自定義Dialog結(jié)合RecyclerView和搜索框?qū)崿F(xiàn)這一功能,通過(guò)Builder模式構(gòu)建復(fù)雜的Dialog對(duì)象,使得代碼更加靈活和易于維護(hù),文中提供了詳細(xì)的步驟和代碼注釋
    2024-10-10
  • kotlin實(shí)戰(zhàn)教程之lambda編程

    kotlin實(shí)戰(zhàn)教程之lambda編程

    這篇文章主要給大家介紹了關(guān)于kotlin實(shí)戰(zhàn)教程之lambda編程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Android開(kāi)發(fā)入門(mén)之對(duì)話框簡(jiǎn)單用法

    Android開(kāi)發(fā)入門(mén)之對(duì)話框簡(jiǎn)單用法

    這篇文章主要介紹了Android對(duì)話框簡(jiǎn)單用法,涉及Android對(duì)話框的功能、定義、創(chuàng)建及使用等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Java操作FreeMarker模板引擎的基本用法示例小結(jié)

    Java操作FreeMarker模板引擎的基本用法示例小結(jié)

    這篇文章主要介紹了Java操作FreeMarker模板引擎的基本用法示例小結(jié),FreeMarker本身由Java寫(xiě)成,用模板來(lái)生成文本輸出,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

静宁县| 余姚市| 鹿泉市| 丽水市| 伊春市| 长寿区| 华容县| 太仆寺旗| 苏尼特右旗| 赣榆县| 敦煌市| 闵行区| 枣阳市| 罗平县| 涿鹿县| 周口市| 西畴县| 盖州市| 射阳县| 贺州市| 尉氏县| 泌阳县| 绥化市| 广昌县| 当阳市| 昌邑市| 夏邑县| 东至县| 弋阳县| 四平市| 石家庄市| 东丽区| 张家口市| 台中县| 拉萨市| 江陵县| 新闻| 静宁县| 五河县| 盖州市| 蓝田县|