Java 类javax.crypto.KeyAgreement 实例源码
项目:java-learn
文件:DHUtil.java
/**
* 根据对方的公钥和自己的私钥生成本地密钥
*/
public static byte[] getSecretKey(byte[] publicKey, byte[] privateKey) throws Exception{
//实例化密钥工厂
KeyFactory keyFactory = KeyFactory.getInstance("DH");
//将公钥从字节数组转换为publicKey
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(publicKey);
PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
//将私钥从字节数组转换为privateKey
PKCS8EncodedKeySpec priKeySpec = new PKCS8EncodedKeySpec(privateKey);
PrivateKey priKey = keyFactory.generatePrivate(priKeySpec);
//准备根据以上公钥和私钥生成本地密钥SecretKey
//先实例化KeyAgreement
KeyAgreement keyAgreement = KeyAgreement.getInstance("DH");
//用自己的私钥初始化keyAgreement
keyAgreement.init(priKey);
//结合对方的公钥进行运算
keyAgreement.doPhase(pubKey, true);
//开始生成本地密钥secretKey 密钥算法为对称密码算法
SecretKey secretKey = keyAgreement.generateSecret("DES"); //DES、3DES、AES
return secretKey.getEncoded();
}
项目:monarch
文件:GMSEncrypt.java
protected static byte[] generateSecret(String dhSKAlgo, PrivateKey privateKey,
PublicKey otherPublicKey) throws Exception {
KeyAgreement ka = KeyAgreement.getInstance("DH");
ka.init(privateKey);
ka.doPhase(otherPublicKey, true);
int keysize = getKeySize(dhSKAlgo);
int blocksize = getBlockSize(dhSKAlgo);
if (keysize == -1 || blocksize == -1) {
SecretKey sKey = ka.generateSecret(dhSKAlgo);
return sKey.getEncoded();
} else {
return ka.generateSecret();
}
}
项目:wolfcrypt-jni
文件:WolfCryptKeyAgreementTest.java
@Test
public void testGetKeyAgreementFromProvider()
throws NoSuchProviderException, NoSuchAlgorithmException {
KeyAgreement ka;
/* try to get all available options we expect to have */
for (int i = 0; i < wolfJCEAlgos.length; i++) {
ka = KeyAgreement.getInstance(wolfJCEAlgos[i], "wolfJCE");
}
/* getting a garbage algorithm should throw an exception */
try {
ka = KeyAgreement.getInstance("NotValid", "wolfJCE");
fail("KeyAgreement.getInstance should throw " +
"NoSuchAlgorithmException when given bad algorithm value");
} catch (NoSuchAlgorithmException e) { }
}
项目:openjdk-jdk10
文件:TestDH.java
private static void testAlgorithm(KeyAgreement ka1, KeyPair kp1,
KeyAgreement ka2, KeyPair kp2, String algorithm) throws Exception {
SecretKey key1;
ka1.init(kp1.getPrivate());
ka1.doPhase(kp2.getPublic(), true);
System.out.println("Derive " + algorithm + " using SunJCE...");
key1 = ka1.generateSecret(algorithm);
ka2.init(kp1.getPrivate());
ka2.doPhase(kp2.getPublic(), true);
System.out.println("Derive " + algorithm + " using PKCS#11...");
SecretKey key2 = ka2.generateSecret(algorithm);
byte[] b1 = key1.getEncoded();
byte[] b2 = key2.getEncoded();
if (Arrays.equals(b1, b2) == false) {
System.out.println(b1.length + " bytes: " + toString(b1));
System.out.println(b2.length + " bytes: " + toString(b2));
throw new Exception(algorithm + " secret mismatch");
}
}
项目:openjdk-jdk10
文件:TestECDH2.java
private static void testKeyAgreement(KeyPair kpA, KeyPair kpB, Provider p)
throws Exception {
KeyAgreement ka1 = KeyAgreement.getInstance("ECDH", p);
ka1.init(kpA.getPrivate());
ka1.doPhase(kpB.getPublic(), true);
byte[] s1 = ka1.generateSecret();
KeyAgreement ka2 = KeyAgreement.getInstance("ECDH", p);
ka2.init(kpB.getPrivate());
ka2.doPhase(kpA.getPublic(), true);
byte[] s2 = ka2.generateSecret();
if (Arrays.equals(s1, s2) == false) {
System.out.println("expected: " + toString(s1));
System.out.println("actual: " + toString(s2));
throw new Exception("Generated secrets do not match");
}
}
项目:mi-firma-android
文件:JseCryptoHelper.java
@Override
public final byte[] doEcDh(final Key privateKey,
final byte[] publicKey,
final EcCurve curveName) throws NoSuchAlgorithmException,
InvalidKeyException,
InvalidKeySpecException {
if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}
KeyAgreement ka = null;
try {
ka = KeyAgreement.getInstance(ECDH, BouncyCastleProvider.PROVIDER_NAME);
}
catch (final NoSuchProviderException e) {
ka = KeyAgreement.getInstance(ECDH);
}
ka.init(privateKey);
ka.doPhase(loadEcPublicKey(publicKey, curveName), true);
return ka.generateSecret();
}
项目:mi-firma-android
文件:JseCryptoHelper.java
@Override
public byte[] doEcDh(final Key privateKey,
final byte[] publicKey,
final EcCurve curveName) throws NoSuchAlgorithmException,
InvalidKeyException,
InvalidKeySpecException {
if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
Security.addProvider(new BouncyCastleProvider());
}
KeyAgreement ka;
try {
ka = KeyAgreement.getInstance(ECDH, BouncyCastleProvider.PROVIDER_NAME);
}
catch (final NoSuchProviderException e) {
ka = KeyAgreement.getInstance(ECDH);
}
ka.init(privateKey);
ka.doPhase(loadEcPublicKey(publicKey, curveName), true);
return ka.generateSecret();
}
项目:openjdk9
文件:TestDH.java
private static void testAlgorithm(KeyAgreement ka1, KeyPair kp1,
KeyAgreement ka2, KeyPair kp2, String algorithm) throws Exception {
SecretKey key1;
ka1.init(kp1.getPrivate());
ka1.doPhase(kp2.getPublic(), true);
System.out.println("Derive " + algorithm + " using SunJCE...");
key1 = ka1.generateSecret(algorithm);
ka2.init(kp1.getPrivate());
ka2.doPhase(kp2.getPublic(), true);
System.out.println("Derive " + algorithm + " using PKCS#11...");
SecretKey key2 = ka2.generateSecret(algorithm);
byte[] b1 = key1.getEncoded();
byte[] b2 = key2.getEncoded();
if (Arrays.equals(b1, b2) == false) {
System.out.println(b1.length + " bytes: " + toString(b1));
System.out.println(b2.length + " bytes: " + toString(b2));
throw new Exception(algorithm + " secret mismatch");
}
}
项目:openjdk9
文件:TestECDH2.java
private static void testKeyAgreement(KeyPair kpA, KeyPair kpB, Provider p)
throws Exception {
KeyAgreement ka1 = KeyAgreement.getInstance("ECDH", p);
ka1.init(kpA.getPrivate());
ka1.doPhase(kpB.getPublic(), true);
byte[] s1 = ka1.generateSecret();
KeyAgreement ka2 = KeyAgreement.getInstance("ECDH", p);
ka2.init(kpB.getPrivate());
ka2.doPhase(kpA.getPublic(), true);
byte[] s2 = ka2.generateSecret();
if (Arrays.equals(s1, s2) == false) {
System.out.println("expected: " + toString(s1));
System.out.println("actual: " + toString(s2));
throw new Exception("Generated secrets do not match");
}
}
项目:coinblesk-client-gui
文件:DHKeyExchangeServerHandler.java
@Override
public void run() {
try {
Log.d(TAG, "read start!");
DERObject responseDERObject = readDERObject();
Log.d(TAG, "read finished!");
Log.d(TAG, "write start!");
writeDERObject(new DERObject(this.getKeyPair().getPublic().getEncoded()));
Log.d(TAG, "write finished!");
KeyFactory keyFactory = KeyFactory.getInstance("ECDH", "SC");
X509EncodedKeySpec x509ks = new X509EncodedKeySpec(responseDERObject.getPayload());
PublicKey publicKey = keyFactory.generatePublic(x509ks);
KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH", "SC");
keyAgreement.init(this.getKeyPair().getPrivate());
keyAgreement.doPhase(publicKey, true);
final byte[] sharedKey = Arrays.copyOfRange(keyAgreement.generateSecret(), 0, Constants.SYMMETRIC_KEY_SIZE);
Log.d(TAG, "exchange finished!");
this.getResultListener().onSuccess(new SecretKeySpec(sharedKey, Constants.SYMMETRIC_CIPHER_ALGORITH));
} catch (Exception e) {
this.getResultListener().onError(e.getMessage());
}
}
项目:coinblesk-client-gui
文件:DHKeyExchangeClientHandler.java
@Override
public void run() {
try {
Log.d(TAG, "write start!");
writeDERObject(new DERObject(this.getKeyPair().getPublic().getEncoded()));
Log.d(TAG, "write finished!");
Log.d(TAG, "read start!");
DERObject responseDERObject = readDERObject();
Log.d(TAG, "read finished!");
KeyFactory keyFactory = KeyFactory.getInstance("ECDH", "SC");
X509EncodedKeySpec x509ks = new X509EncodedKeySpec(responseDERObject.getPayload());
PublicKey publicKey = keyFactory.generatePublic(x509ks);
KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH", "SC");
keyAgreement.init(this.getKeyPair().getPrivate());
keyAgreement.doPhase(publicKey, true);
final byte[] sharedKey = Arrays.copyOfRange(keyAgreement.generateSecret(), 0, Constants.SYMMETRIC_KEY_SIZE);
Log.d(TAG, "exchange finished!");
this.getResultListener().onSuccess(new SecretKeySpec(sharedKey, Constants.SYMMETRIC_CIPHER_ALGORITH));
} catch (Exception e) {
this.getResultListener().onError(e.getMessage());
}
}
项目:wycheproof
文件:EcdhTest.java
/** Checks that key agreement using ECDH works. */
@Test
public void testBasic() throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
ECGenParameterSpec ecSpec = new ECGenParameterSpec("secp256r1");
keyGen.initialize(ecSpec);
KeyPair keyPairA = keyGen.generateKeyPair();
KeyPair keyPairB = keyGen.generateKeyPair();
KeyAgreement kaA = KeyAgreement.getInstance("ECDH");
KeyAgreement kaB = KeyAgreement.getInstance("ECDH");
kaA.init(keyPairA.getPrivate());
kaB.init(keyPairB.getPrivate());
kaA.doPhase(keyPairB.getPublic(), true);
kaB.doPhase(keyPairA.getPublic(), true);
byte[] kAB = kaA.generateSecret();
byte[] kBA = kaB.generateSecret();
assertEquals(TestUtil.bytesToHex(kAB), TestUtil.bytesToHex(kBA));
}
项目:wycheproof
文件:DhTest.java
/** Check that key agreement using DH works. */
@SuppressWarnings("InsecureCryptoUsage")
@Test
public void testDh() throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
DHParameterSpec dhparams = ike2048();
keyGen.initialize(dhparams);
KeyPair keyPairA = keyGen.generateKeyPair();
KeyPair keyPairB = keyGen.generateKeyPair();
KeyAgreement kaA = KeyAgreement.getInstance("DH");
KeyAgreement kaB = KeyAgreement.getInstance("DH");
kaA.init(keyPairA.getPrivate());
kaB.init(keyPairB.getPrivate());
kaA.doPhase(keyPairB.getPublic(), true);
kaB.doPhase(keyPairA.getPublic(), true);
byte[] kAB = kaA.generateSecret();
byte[] kBA = kaB.generateSecret();
assertEquals(TestUtil.bytesToHex(kAB), TestUtil.bytesToHex(kBA));
}
项目:wycheproof
文件:DhTest.java
/** This test tries a key agreement with keys using distinct parameters. */
@SuppressWarnings("InsecureCryptoUsage")
@Test
public void testDHDistinctParameters() throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(ike1536());
KeyPair keyPairA = keyGen.generateKeyPair();
keyGen.initialize(ike2048());
KeyPair keyPairB = keyGen.generateKeyPair();
KeyAgreement kaA = KeyAgreement.getInstance("DH");
kaA.init(keyPairA.getPrivate());
try {
kaA.doPhase(keyPairB.getPublic(), true);
byte[] kAB = kaA.generateSecret();
fail("Generated secrets with mixed keys " + TestUtil.bytesToHex(kAB) + ", ");
} catch (java.security.GeneralSecurityException ex) {
// This is expected.
}
}
项目:thunder
文件:ECDH.java
public static ECDHKeySet getSharedSecret (ECKey keyServer, ECKey keyClient) {
try {
ECPrivateKeySpec specPrivate = new ECPrivateKeySpec(keyServer.getPrivKey(), ecParameters);
ECPublicKeySpec specPublic = new ECPublicKeySpec(new ECPoint(keyClient.getPubKeyPoint().getXCoord().toBigInteger(), keyClient.getPubKeyPoint()
.getYCoord().toBigInteger()), ecParameters);
ECPrivateKey privateKey = (ECPrivateKey) kf.generatePrivate(specPrivate);
ECPublicKey publicKey = (ECPublicKey) kf.generatePublic(specPublic);
JCEECPrivateKey ecPrivKey = new JCEECPrivateKey(privateKey);
JCEECPublicKey ecPubKey = new JCEECPublicKey(publicKey);
KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH");
aKeyAgree.init(ecPrivKey);
aKeyAgree.doPhase(ecPubKey, true);
return new ECDHKeySet(aKeyAgree.generateSecret(), keyServer.getPubKey(), keyClient.getPubKey());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
项目:Jose4j
文件:EcdhKeyAgreementAlgorithm.java
private byte[] generateEcdhSecret(PrivateKey privateKey, PublicKey publicKey, ProviderContext providerContext) throws JoseException
{
String keyAgreementProvider = providerContext.getSuppliedKeyProviderContext().getKeyAgreementProvider();
KeyAgreement keyAgreement = getKeyAgreement(keyAgreementProvider);
try
{
keyAgreement.init(privateKey);
keyAgreement.doPhase(publicKey, true);
}
catch (java.security.InvalidKeyException e)
{
throw new InvalidKeyException("Invalid Key for " + getJavaAlgorithm() + " key agreement." ,e);
}
return keyAgreement.generateSecret();
}
项目:javify
文件:AbstractHandshake.java
protected void initDiffieHellman(DHPrivateKey dhKey, SecureRandom random)
throws SSLException
{
try
{
keyAgreement = KeyAgreement.getInstance("DH");
keyAgreement.init(dhKey, random);
}
catch (InvalidKeyException ike)
{
throw new SSLException(ike);
}
catch (NoSuchAlgorithmException nsae)
{
throw new SSLException(nsae);
}
}
项目:jvm-stm
文件:AbstractHandshake.java
protected void initDiffieHellman(DHPrivateKey dhKey, SecureRandom random)
throws SSLException
{
try
{
keyAgreement = KeyAgreement.getInstance("DH");
keyAgreement.init(dhKey, random);
}
catch (InvalidKeyException ike)
{
throw new SSLException(ike);
}
catch (NoSuchAlgorithmException nsae)
{
throw new SSLException(nsae);
}
}
项目:EncDecAboutJava
文件:DHCoder.java
/**
* 构建密钥
* @param publicKey
* @param privateKey
* @return
* @throws Exception
*/
public static byte[] getSecretKey(byte[] publicKey,byte[] privateKey)throws Exception{
//实例化密钥工厂
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
//初始化公钥
//密钥材料转换
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(publicKey);
//产生公钥
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
//初始化私钥
//密钥材料转换
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(privateKey);
//产生私钥
PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);
//实例化
KeyAgreement keyAgree = KeyAgreement.getInstance(keyFactory.getAlgorithm());
keyAgree.init(priKey);
keyAgree.doPhase(pubKey, true);
//产生本地密钥
SecretKey secretKey = keyAgree.generateSecret(SECRET_ALGORITHM);
return secretKey.getEncoded();
}
项目:Raven-Messenger
文件:DHExchange.java
/**
* Use 1536 for Fast Prime Generation (less secure) or 2048 for slow prime generation (secure)
* @param strength
* @throws InvalidKeyException
* @throws IllegalStateException
* @throws InvalidAlgorithmParameterException
* @throws NoSuchAlgorithmException
* @throws NoSuchProviderException
* @throws InvalidKeySpecException
* @throws InvalidParameterSpecException
*/
public DHExchange(int strength) throws InvalidKeyException, IllegalStateException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeySpecException, InvalidParameterSpecException {
Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH", "SC");
paramGen.init(strength); // number of bits
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class);
BigInteger p = dhSpec.getP();
BigInteger g = dhSpec.getG();
DHParameterSpec dhParams = new DHParameterSpec(p, g);
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH", "SC");
keyGen.initialize(dhParams, new SecureRandom());
KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH", "SC");
KeyPair aPair = keyGen.generateKeyPair();
KeyAgreement bKeyAgree = KeyAgreement.getInstance("DH", "SC");
KeyPair bPair = keyGen.generateKeyPair();
aKeyAgree.init(aPair.getPrivate());
bKeyAgree.init(bPair.getPrivate());
aKeyAgree.doPhase(bPair.getPublic(), true);
bKeyAgree.doPhase(aPair.getPublic(), true);
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm) </code> method Assertions:
* returns KeyAgreement object
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getInstance method.",
method = "getInstance",
args = {java.lang.String.class}
)
public void testGetInstanceString02() throws NoSuchAlgorithmException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement.getInstance(validValues[i]);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
}
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, String provider)</code>
* method Assertions: returns KeyAgreement object
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getInstance method.",
method = "getInstance",
args = {java.lang.String.class, java.lang.String.class}
)
public void testGetInstanceStringString03()
throws IllegalArgumentException, NoSuchAlgorithmException,
NoSuchProviderException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement
.getInstance(validValues[i], defaultProviderName);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
assertEquals("Incorrect provider", keyA.getProvider().getName(),
defaultProviderName);
}
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, Provider provider)</code>
* method Assertions: throws IllegalArgumentException when provider is null
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getInstance method.",
method = "getInstance",
args = {java.lang.String.class, java.security.Provider.class}
)
public void testGetInstanceStringProvider02()
throws NoSuchAlgorithmException, IllegalArgumentException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
Provider provider = null;
for (int i = 0; i < invalidValues.length; i++) {
try {
KeyAgreement.getInstance(invalidValues[i], provider);
fail("IllegalArgumentException must be thrown");
} catch (IllegalArgumentException e) {
}
}
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, Provider provider)</code>
* method Assertions: returns KeyAgreement object
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getInstance method.",
method = "getInstance",
args = {java.lang.String.class, java.security.Provider.class}
)
public void testGetInstanceStringProvider03()
throws IllegalArgumentException, NoSuchAlgorithmException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement.getInstance(validValues[i], defaultProvider);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
assertEquals("Incorrect provider", keyA.getProvider(),
defaultProvider);
}
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getAlgorithm",
args = {}
)
public void test_getAlgorithm() throws NoSuchAlgorithmException {
Mock_KeyAgreement mka = new Mock_KeyAgreement(null, null, null);
assertNull(mka.getAlgorithm());
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement.getInstance(validValues[i]);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
}
}
项目:In-the-Box-Fork
文件:KeyAgreementTest.java
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "init",
args = {java.security.Key.class, java.security.SecureRandom.class}
)
public void test_initLjava_security_KeyLjava_security_SecureRandom() throws Exception {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
createKeys();
KeyAgreement[] kAgs = createKAs();
KeyAgreement ka = KeyAgreement.getInstance("DH");
ka.init(privKey, new SecureRandom());
try {
ka.init(publKey, new SecureRandom());
fail("InvalidKeyException expected");
} catch (InvalidKeyException e) {
//expected
}
}
项目:error-prone
文件:InsecureCipherModePositiveCases.java
public void keyOperations(StringProvider provider) {
KeyFactory keyFactory;
KeyAgreement keyAgreement;
KeyPairGenerator keyPairGenerator;
final String dh = "DH";
try {
// BUG: Diagnostic contains: compile-time constant
keyFactory = KeyFactory.getInstance(provider.get());
// BUG: Diagnostic contains: Diffie-Hellman on prime fields
keyFactory = KeyFactory.getInstance(dh);
// BUG: Diagnostic contains: DSA
keyAgreement = KeyAgreement.getInstance("DSA");
// BUG: Diagnostic contains: compile-time constant
keyAgreement = KeyAgreement.getInstance(provider.get());
// BUG: Diagnostic contains: Diffie-Hellman on prime fields
keyPairGenerator = KeyPairGenerator.getInstance(dh);
// BUG: Diagnostic contains: compile-time constant
keyPairGenerator = KeyPairGenerator.getInstance(provider.get());
} catch (NoSuchAlgorithmException e) {
// We don't handle any exception as this code is not meant to be executed.
}
}
项目:cn1
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, String provider)</code>
* method Assertions: returns KeyAgreement object
*/
public void testGetInstanceStringString03()
throws IllegalArgumentException, NoSuchAlgorithmException,
NoSuchProviderException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement
.getInstance(validValues[i], defaultProviderName);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
assertEquals("Incorrect provider", keyA.getProvider().getName(),
defaultProviderName);
}
}
项目:cn1
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, Provider provider)</code>
* method Assertions: throws IllegalArgumentException when provider is null
*/
public void testGetInstanceStringProvider02()
throws NoSuchAlgorithmException, IllegalArgumentException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
Provider provider = null;
for (int i = 0; i < invalidValues.length; i++) {
try {
KeyAgreement.getInstance(invalidValues[i], provider);
fail("IllegalArgumentException must be thrown");
} catch (IllegalArgumentException e) {
}
}
}
项目:cn1
文件:KeyAgreementTest.java
/**
* Test for <code> getInstance(String algorithm, Provider provider)</code>
* method Assertions: returns KeyAgreement object
*/
public void testGetInstanceStringProvider03()
throws IllegalArgumentException, NoSuchAlgorithmException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreement keyA;
for (int i = 0; i < validValues.length; i++) {
keyA = KeyAgreement.getInstance(validValues[i], defaultProvider);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
validValues[i]);
assertEquals("Incorrect provider", keyA.getProvider(),
defaultProvider);
}
}
项目:cn1
文件:KeyAgreementTest.java
/**
* Test for the methods: <code>init(Key key)</code>
* <code>generateSecret()</code>
* <code>generateSecret(byte[] sharedsecret, int offset)</code>
* <code>generateSecret(String algorithm)</code>
* Assertions: initializes KeyAgreement; returns sharedSecret; puts
* sharedsecret in buffer and return numbers of bytes; returns SecretKey
* object
*/
public void testGenerateSecret03() throws Exception {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
createKeys();
KeyAgreement[] kAgs = createKAs();
byte[] bb;
byte[] bb1 = new byte[10];
for (int i = 0; i < kAgs.length; i++) {
kAgs[i].init(privKey);
kAgs[i].doPhase(publKey, true);
bb = kAgs[i].generateSecret();
kAgs[i].init(privKey);
kAgs[i].doPhase(publKey, true);
bb1 = new byte[bb.length + 10];
kAgs[i].generateSecret(bb1, 9);
kAgs[i].init(privKey);
kAgs[i].doPhase(publKey, true);
kAgs[i].generateSecret("DES");
}
}
项目:cn1
文件:KeyAgreement_Impl1Test.java
/**
* Test for <code>KeyAgreement</code> constructor Assertion: returns
* KeyAgreement object
*/
public void testKeyAgreement() throws NoSuchAlgorithmException,
InvalidKeyException, IllegalStateException {
if (!DEFSupported) {
fail(NotSupportMsg);
return;
}
KeyAgreementSpi spi = new MyKeyAgreementSpi();
KeyAgreement keyA = new myKeyAgreement(spi, defaultProvider,
defaultAlgorithm);
assertEquals("Incorrect algorithm", keyA.getAlgorithm(),
defaultAlgorithm);
assertEquals("Incorrect provider", keyA.getProvider(), defaultProvider);
assertNull("Incorrect result", keyA.doPhase(null, true));
assertEquals("Incorrect result", keyA.generateSecret().length, 0);
keyA = new myKeyAgreement(null, null, null);
assertNull("Algorithm must be null", keyA.getAlgorithm());
assertNull("Provider must be null", keyA.getProvider());
try {
keyA.doPhase(null, true);
fail("NullPointerException must be thrown");
} catch (NullPointerException e) {
}
}
项目:JamVM-PH
文件:AbstractHandshake.java
protected void initDiffieHellman(DHPrivateKey dhKey, SecureRandom random)
throws SSLException
{
try
{
keyAgreement = KeyAgreement.getInstance("DH");
keyAgreement.init(dhKey, random);
}
catch (InvalidKeyException ike)
{
throw new SSLException(ike);
}
catch (NoSuchAlgorithmException nsae)
{
throw new SSLException(nsae);
}
}
项目:mtools
文件:DHCoder.java
/**
* 构建密钥
*
* @param publicKey
* 公钥
* @param privateKey
* 私钥
* @return
* @throws Exception
*/
private static SecretKey getSecretKey(String publicKey, String privateKey)
throws Exception {
// 初始化公钥
byte[] pubKeyBytes = decryptBASE64(publicKey);
KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(pubKeyBytes);
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
// 初始化私钥
byte[] priKeyBytes = decryptBASE64(privateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(priKeyBytes);
Key priKey = keyFactory.generatePrivate(pkcs8KeySpec);
KeyAgreement keyAgree = KeyAgreement.getInstance(keyFactory
.getAlgorithm());
keyAgree.init(priKey);
keyAgree.doPhase(pubKey, true);
// 生成本地密钥
SecretKey secretKey = keyAgree.generateSecret(SECRET_ALGORITHM);
return secretKey;
}
项目:exchange-android
文件:CryptoAccess.java
public byte[] generateDHPublicKey() throws NoSuchAlgorithmException,
InvalidAlgorithmParameterException, InvalidKeyException {
// generate key pair
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DH");
DHParameterSpec param = new DHParameterSpec(sP, sG);
kpg.initialize(param);
KeyPair kp = kpg.generateKeyPair();
DHPrivateKey privateKey = (DHPrivateKey) kp.getPrivate();
DHPublicKey publicKey = (DHPublicKey) kp.getPublic();
// initialize key agreement with our private key
mKA = KeyAgreement.getInstance("DH");
mKA.init(privateKey);
// return our public 1/2 key to share
return getBytes(publicKey.getY());
}
项目:exchange-android
文件:CryptoAccess.java
public byte[] createNodeKey(byte[] pubKeyNode) throws NoSuchAlgorithmException,
InvalidKeySpecException, InvalidKeyException, IllegalStateException {
// add this public key node to agreement
KeyFactory keyFac = KeyFactory.getInstance("DH");
BigInteger y = new BigInteger(1, pubKeyNode);
DHPublicKeySpec spec = new DHPublicKeySpec(y, sP, sG);
PublicKey nodePubKey = keyFac.generatePublic(spec);
mKA.doPhase(nodePubKey, true);
// complete this phase of agreement by generating secret
BigInteger x = new BigInteger(1, mKA.generateSecret());
BigInteger v = sG.modPow(x, sP);
DHPrivateKeySpec specX = new DHPrivateKeySpec(x, sP, sG);
PrivateKey nodePrivKey = keyFac.generatePrivate(specX);
mKA.doPhase(nodePubKey, true);
mKA = KeyAgreement.getInstance("DH");
mKA.init(nodePrivKey);
return getBytes(v);
}
项目:test4java
文件:DHCoder.java
/**
* 构建密钥
*
* @param publicKey 公钥
* @param privateKey 私钥
* @return
* @throws Exception
*/
private static SecretKey getSecretKey(String publicKey, String privateKey)
throws Exception {
// 初始化公钥
byte[] pubKeyBytes = decryptBASE64(publicKey);
KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(pubKeyBytes);
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
// 初始化私钥
byte[] priKeyBytes = decryptBASE64(privateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(priKeyBytes);
Key priKey = keyFactory.generatePrivate(pkcs8KeySpec);
KeyAgreement keyAgree = KeyAgreement.getInstance(keyFactory
.getAlgorithm());
keyAgree.init(priKey);
keyAgree.doPhase(pubKey, true);
// 生成本地密钥
SecretKey secretKey = keyAgree.generateSecret(SECRET_ALGORITHM);
return secretKey;
}
项目:red5-server-common
文件:RTMPHandshake.java
/**
* Creates a Diffie-Hellman key pair.
*
* @return dh keypair
*/
protected KeyPair generateKeyPair() {
KeyPair keyPair = null;
DHParameterSpec keySpec = new DHParameterSpec(DH_MODULUS, DH_BASE);
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(keySpec);
keyPair = keyGen.generateKeyPair();
keyAgreement = KeyAgreement.getInstance("DH");
// key agreement is initialized with "this" ends private key
keyAgreement.init(keyPair.getPrivate());
} catch (Exception e) {
log.error("Error generating keypair", e);
}
return keyPair;
}
项目:bkbc-tools
文件:HelloECDH2.java
private static SecretKey generateSharedSecret(PrivateKey privateKey,
PublicKey publicKey) {
try {
KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH",
BouncyCastleProvider.PROVIDER_NAME);
keyAgreement.init(privateKey);
keyAgreement.doPhase(publicKey, true);
SecretKey key = keyAgreement.generateSecret("AES");
System.out.println("Shared key length: " + key.getEncoded().length);
return key;
} catch (InvalidKeyException | NoSuchAlgorithmException
| NoSuchProviderException e) {
e.printStackTrace();
return null;
}
}
项目:tink
文件:EllipticCurves.java
public static byte[] computeSharedSecret(ECPrivateKey myPrivateKey, ECPoint publicPoint)
throws GeneralSecurityException {
checkPointOnCurve(publicPoint, myPrivateKey.getParams().getCurve());
// Explicitly reconstruct the peer public key using private key's spec.
ECParameterSpec privSpec = myPrivateKey.getParams();
EllipticCurve privCurve = privSpec.getCurve();
ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(publicPoint, privSpec);
KeyFactory kf = KeyFactory.getInstance("EC");
PublicKey publicKey = kf.generatePublic(publicKeySpec);
KeyAgreement ka = EngineFactory.KEY_AGREEMENT.getInstance("ECDH");
ka.init(myPrivateKey);
ka.doPhase(publicKey, true /* lastPhase */);
byte[] secret = ka.generateSecret();
validateSharedSecret(secret, myPrivateKey);
return secret;
}