【发布时间】:2015-09-17 04:54:48
【问题描述】:
我尝试生成一个公钥/私钥对,我将使用它来对带有jose4j 的 JWT 进行数字签名。我用Elliptic Curve Digital Signature Algorithm
我的问题是我不知道如何获取代表edcsa键含义的参数:
- crv
- x
- 是
-
d
KeyPairGenerator g = KeyPairGenerator.getInstance("EC"); ECGenParameterSpec kpgparams = new ECGenParameterSpec("secp256r1"); g.initialize(kpgparams); KeyPair pair = g.generateKeyPair(); // Instance of signature class with SHA256withECDSA algorithm Signature ecdsaSign = Signature.getInstance("SHA256withECDSA"); ecdsaSign.initSign(pair.getPrivate()); System.out.println("Private Keys is::" + pair.getPrivate()); System.out.println("Public Keys is::" + pair.getPublic()); JsonWebKeySet jsonWebKeySet = new JsonWebKeySet(); PrivateKey privateKey = pair.getPrivate(); JsonWebKey webKey = new JsonWebKey(privateKey) { @Override public String getKeyType() { // TODO Auto-generated method stub return "EC"; } @Override protected void fillTypeSpecificParams(Map<String, Object> params, OutputControlLevel outputLevel) { params.put("use", "sig"); params.put("key_ops", "sign"); params.put("alg", "ES256"); params.put("kid", "kukuPrivateKey"); } }; jsonWebKeySet.addJsonWebKey(webKey); System.out.println("aaaa"+jsonWebKeySet.toJson());
【问题讨论】:
标签: cryptography public-key-encryption jwt ecdsa jose4j