【问题标题】:Create a Certificate Signing Request in dart在 dart 中创建证书签名请求
【发布时间】: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;
        }
    }

我从这个函数得到的字符串被发送到服务器,以便对其进行签名,然后在响应中返回证书。

任何帮助将不胜感激。

【问题讨论】:

  • 你解决了吗?我有完全相同的问题。

标签: android flutter dart


【解决方案1】:

查看基本的 utils 包:https://pub.dev/packages/basic_utils

它包含几个实用程序类,包括 X509UtilsCryptoUtils,您可以使用它们来生成密钥对和 CSR。下面的 sn-p 应该提供一些参考:

import 'package:basic_utils/basic_utils.dart';

...

const Map<String, String> X509_SUBJECT = {
    'CN': '...',
    'C': '...',
    'ST': '...',
    'L': '...',
    'O': '...',
    'OU': '...',
  };

AsymmetricKeyPair keyPair = CryptoUtils.generateEcKeyPair();
X509Utils.generateRsaCsrPem(X509_SUBJECT, keypair.privateKey, keypair.publicKey);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2017-11-02
    • 2016-07-21
    • 2014-10-26
    相关资源
    最近更新 更多