【发布时间】:2021-05-31 23:46:50
【问题描述】:
我在 Android 中有一个应用程序,它与签署证书签名请求的服务器通信并返回签署的证书,以便客户端在进一步调用时使用我。
最近我们正在尝试迁移到 Flutter (Dart),我正在尝试复制 CSR 的创建,但我有点迷失,因为我对 Dart 比较陌生。
如果您能指出正确的方向,我将不胜感激。
创建 CSR 的函数如下所示:
public String createPKI(String mdnString) {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");
//KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "SC");
ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("prime256v1");
keyPairGenerator.initialize(ecGenSpec, new SecureRandom());
KeyPair kp = keyPairGenerator.generateKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
PKCS10CertificationRequest kpGen = new PKCS10CertificationRequest("SHA256withECDSA", new X509Name(String.format("UID=%s", mdnString)), publicKey, null, privateKey); //mdnString is a phone number including the international code.
String certRequest = Base64.encodeToString(kpGen.getEncoded(), Base64.DEFAULT);
certRequest = certRequest.replace("\n", "");
return certRequest;
} catch(Exception e) {
if (Constants.DEBUG) {
Log.v("Exception", e.getMessage());
}
return null;
}
}
我从这个函数得到的字符串被发送到服务器,以便对其进行签名,然后在响应中返回证书。
任何帮助将不胜感激。
【问题讨论】:
-
你解决了吗?我有完全相同的问题。