private void prepareKek(BigInteger priv, PublicKey pub) throws GeneralSecurityException { KeyAgreement keyAgreement = KeyAgreement.getInstance(getKeyAgreementAlgorithm()); PrivateKey privateKey = generatePrivateKey(priv); keyAgreement.init(privateKey, new UserKeyingMaterialSpec(msg.getComputations().getUkm().getValue())); keyAgreement.doPhase(pub, true); byte[] kek = keyAgreement.generateSecret(); msg.getComputations().setKeyEncryptionKey(kek); LOGGER.debug("KEK: " + ArrayConverter.bytesToHexString(msg.getComputations().getKeyEncryptionKey())); }
private void initFromKey(Key key, AlgorithmParameterSpec parameterSpec) throws InvalidKeyException { { if (!(key instanceof PrivateKey)) { throw new InvalidKeyException(kaAlgorithm + " key agreement requires " + getSimpleName(ECPrivateKey.class) + " for initialisation"); } ECPrivateKeyParameters privKey = (ECPrivateKeyParameters)ECUtil.generatePrivateKeyParameter((PrivateKey)key); this.parameters = privKey.getParameters(); ukmParameters = (parameterSpec instanceof UserKeyingMaterialSpec) ? ((UserKeyingMaterialSpec)parameterSpec).getUserKeyingMaterial() : null; agreement.init(new ParametersWithUKM(privKey, ukmParameters)); } }
private void initFromKey(Key key, AlgorithmParameterSpec parameterSpec) throws InvalidKeyException { { if (!(key instanceof PrivateKey)) { throw new InvalidKeyException(kaAlgorithm + " key agreement requires " + getSimpleName(ECPrivateKey.class) + " for initialisation"); } ECPrivateKeyParameters privKey = (ECPrivateKeyParameters)ECUtil.generatePrivateKeyParameter((PrivateKey)key); this.parameters = privKey.getParameters(); ukmParameters = (parameterSpec instanceof UserKeyingMaterialSpec) ? ((UserKeyingMaterialSpec)parameterSpec).getUserKeyingMaterial() : null; agreement.init(new ParametersWithUKM(privKey, ukmParameters)); } }
this.ukmParameters = ((UserKeyingMaterialSpec)params).getUserKeyingMaterial();
ukmParameters = (parameterSpec instanceof UserKeyingMaterialSpec) ? ((UserKeyingMaterialSpec)parameterSpec).getUserKeyingMaterial() : null; ((BasicAgreement)agreement).init(privKey);
this.g = privKey.getParams().getG(); this.dheParameters = null; this.ukmParameters = ((UserKeyingMaterialSpec)params).getUserKeyingMaterial();