use of iaik.pkcs.pkcs11.objects.DSAPublicKey in project xipki by xipki.
the class IaikP11Slot method generatePublicKey.
// method getObjects
private static java.security.PublicKey generatePublicKey(PublicKey p11Key) throws XiSecurityException {
if (p11Key instanceof RSAPublicKey) {
RSAPublicKey rsaP11Key = (RSAPublicKey) p11Key;
byte[] expBytes = rsaP11Key.getPublicExponent().getByteArrayValue();
BigInteger exp = new BigInteger(1, expBytes);
byte[] modBytes = rsaP11Key.getModulus().getByteArrayValue();
BigInteger mod = new BigInteger(1, modBytes);
RSAPublicKeySpec keySpec = new RSAPublicKeySpec(mod, exp);
try {
return KeyUtil.generateRSAPublicKey(keySpec);
} catch (InvalidKeySpecException ex) {
throw new XiSecurityException(ex.getMessage(), ex);
}
} else if (p11Key instanceof DSAPublicKey) {
DSAPublicKey dsaP11Key = (DSAPublicKey) p11Key;
// p
BigInteger prime = new BigInteger(1, dsaP11Key.getPrime().getByteArrayValue());
BigInteger subPrime = new BigInteger(1, // q
dsaP11Key.getSubprime().getByteArrayValue());
// g
BigInteger base = new BigInteger(1, dsaP11Key.getBase().getByteArrayValue());
// y
BigInteger value = new BigInteger(1, dsaP11Key.getValue().getByteArrayValue());
DSAPublicKeySpec keySpec = new DSAPublicKeySpec(value, prime, subPrime, base);
try {
return KeyUtil.generateDSAPublicKey(keySpec);
} catch (InvalidKeySpecException ex) {
throw new XiSecurityException(ex.getMessage(), ex);
}
} else if (p11Key instanceof ECPublicKey) {
ECPublicKey ecP11Key = (ECPublicKey) p11Key;
byte[] encodedAlgorithmIdParameters = ecP11Key.getEcdsaParams().getByteArrayValue();
byte[] encodedPoint = DEROctetString.getInstance(ecP11Key.getEcPoint().getByteArrayValue()).getOctets();
try {
return KeyUtil.createECPublicKey(encodedAlgorithmIdParameters, encodedPoint);
} catch (InvalidKeySpecException ex) {
throw new XiSecurityException(ex.getMessage(), ex);
}
} else {
throw new XiSecurityException("unknown publicKey class " + p11Key.getClass().getName());
}
}
use of iaik.pkcs.pkcs11.objects.DSAPublicKey in project xipki by xipki.
the class IaikP11Slot method generateDSAKeypair0.
@Override
protected // CHECKSTYLE:SKIP
P11Identity generateDSAKeypair0(BigInteger p, BigInteger q, BigInteger g, String label, P11NewKeyControl control) throws P11TokenException {
long mech = PKCS11Constants.CKM_DSA_KEY_PAIR_GEN;
assertMechanismSupported(mech);
DSAPrivateKey privateKey = new DSAPrivateKey();
DSAPublicKey publicKey = new DSAPublicKey();
setKeyAttributes(label, PKCS11Constants.CKK_DSA, control, publicKey, privateKey);
publicKey.getPrime().setByteArrayValue(p.toByteArray());
publicKey.getSubprime().setByteArrayValue(q.toByteArray());
publicKey.getBase().setByteArrayValue(g.toByteArray());
return generateKeyPair(mech, privateKey, publicKey);
}
Aggregations