简体   繁体   中英

Convert hex encoded ESCDA private key to Java PrivateKey interface

I'm trying to implement my own Java User interface of HyperLedger-Fabric SDK. If you don't familiar with HyperLedger-Fabric, forget this line, it's not necessary.

To do so, I'm trying to convert this json(from fabric) to private key:

"enrollment":
{
    "signingIdentity":"e90c96e1919de2971913c5a7a3e09ccc13f1a765f64c7949e9ee50a26721ed9b",
    "identity":
    {
        "certificate":
            "-----BEGIN CERTIFICATE-----\nMIIB8TCCAZegAwIBAgIUbIsZfWI2ETkBp745jW87ATqS0zAwCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMjEzMTU1MzAwWhcNMTgxMjEzMTU1\nMzAwWjAQMQ4wDAYDVQQDEwV1c2VyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBJyAKHhZR82HgkdjXJqYUogNSAn4MtrZq62534/9bOQLBBoe3ySFXvecE5/jBKwV\nQwLpsfpow9YbHxrA4WkkJ9CjbDBqMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8E\nAjAAMB0GA1UdDgQWBBT6IGsIp5IEYqYxntl3N8SyOfYYoDArBgNVHSMEJDAigCBC\nOaoNzXba7ri6DNpwGFHRRQTTGq0bLd3brGpXNl5JfDAKBggqhkjOPQQDAgNIADBF\nAiEAh9yjeFMFDbw9Uijz3nJrC2sXc1mpISxalgK6UmkadoACIEXKlU+XqHj9bV/Y\nQpA7aDaWLsOFYCgTSrHNNFsFWBbQ\n-----END CERTIFICATE-----\n"
    }
}

The private key is in the field "signingIdentity" (it's only testing private key, use it as you wish :-) ).

I from what I heard, hyperledger-fabric use ESCDA, so it should be eliptic curve.

But I don't know how to generate from this data, the proper Java PrivateKey instance...

Following should do the work for you:

try (PEMParser parser = new PEMParser(new StringReader(/*PUT signingIdentity here*/)) {
    pemPair = (PrivateKeyInfo) parser.readObject();
    JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
    return pemConverter
                      .setProvider(BouncyCastleProvider.PROVIDER_NAME)
                      .getPrivateKey(pemPair);
 }

And of course you need the depedency of BouncyCastle lib:

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpkix-jdk15on</artifactId>
  <version>1.55</version>
</dependency>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM