我有使用指纹和 4 位密码(可由用户在应用程序设置中设置,这不是系统密码/模式/密码)授权的应用程序。
使用指纹一切都很好,我的密码有问题。
我想做的是:
- 让用户从应用程序设置中设置 pin
- 在密钥库中为某些受输入的 pin 保护的别名生成密钥对(这样,没有这个 pin 就无法访问私钥)
- 将公钥发送到服务器以供将来签名验证
- 从服务器获取用户令牌并将其存储在本地存储中
然后在授权期间:
- 请求用户输入密码
- 通过输入的密码检索私钥
- 从本地存储中检索令牌
- 使用步骤 6 中的私钥签署令牌
- 将其发送到带有签名数据的服务器
- 验证服务器上的签名,如果签名有效,则为用户打开会话。
我的问题是:如何生成受用户输入的 pin 保护的 KeyPair
PS 对于指纹,此逻辑由以下方式处理:
KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)