@@ -634,11 +634,11 @@ else if (paddingName.equals("TBCPADDING"))
634634 protected void engineInit (
635635 int opmode ,
636636 Key key ,
637- AlgorithmParameterSpec params ,
637+ final AlgorithmParameterSpec paramSpec ,
638638 SecureRandom random )
639639 throws InvalidKeyException , InvalidAlgorithmParameterException
640640 {
641- CipherParameters param = null ;
641+ CipherParameters param ;
642642
643643 this .pbeSpec = null ;
644644 this .pbeAlgorithm = null ;
@@ -656,7 +656,7 @@ protected void engineInit(
656656 //
657657 // for RC5-64 we must have some default parameters
658658 //
659- if (params == null && (baseEngine != null && baseEngine .getAlgorithmName ().startsWith ("RC5-64" )))
659+ if (paramSpec == null && (baseEngine != null && baseEngine .getAlgorithmName ().startsWith ("RC5-64" )))
660660 {
661661 throw new InvalidAlgorithmParameterException ("RC5 requires an RC5ParametersSpec to be passed in." );
662662 }
@@ -676,9 +676,9 @@ protected void engineInit(
676676 throw new InvalidKeyException ("PKCS12 requires a SecretKey/PBEKey" );
677677 }
678678
679- if (params instanceof PBEParameterSpec )
679+ if (paramSpec instanceof PBEParameterSpec )
680680 {
681- pbeSpec = (PBEParameterSpec )params ;
681+ pbeSpec = (PBEParameterSpec )paramSpec ;
682682 }
683683
684684 if (k instanceof PBEKey && pbeSpec == null )
@@ -727,9 +727,9 @@ else if (key instanceof PBKDF1Key)
727727 {
728728 PBKDF1Key k = (PBKDF1Key )key ;
729729
730- if (params instanceof PBEParameterSpec )
730+ if (paramSpec instanceof PBEParameterSpec )
731731 {
732- pbeSpec = (PBEParameterSpec )params ;
732+ pbeSpec = (PBEParameterSpec )paramSpec ;
733733 }
734734 if (k instanceof PBKDF1KeyWithParameters && pbeSpec == null )
735735 {
@@ -746,9 +746,9 @@ else if (key instanceof PBKDF2Key)
746746 {
747747 PBKDF2Key k = (PBKDF2Key )key ;
748748
749- if (param instanceof PBEParameterSpec )
749+ if (paramSpec instanceof PBEParameterSpec )
750750 {
751- pbeSpec = (PBEParameterSpec )param ;
751+ pbeSpec = (PBEParameterSpec )paramSpec ;
752752 }
753753 if (k instanceof PBKDF2KeyWithParameters && pbeSpec == null )
754754 {
@@ -776,12 +776,12 @@ else if (key instanceof BCPBEKey)
776776
777777 if (k .getParam () != null )
778778 {
779- param = adjustParameters (params , k .getParam ());
779+ param = adjustParameters (paramSpec , k .getParam ());
780780 }
781- else if (params instanceof PBEParameterSpec )
781+ else if (paramSpec instanceof PBEParameterSpec )
782782 {
783- pbeSpec = (PBEParameterSpec )params ;
784- param = PBE .Util .makePBEParameters (k , params , cipher .getUnderlyingCipher ().getAlgorithmName ());
783+ pbeSpec = (PBEParameterSpec )paramSpec ;
784+ param = PBE .Util .makePBEParameters (k , paramSpec , cipher .getUnderlyingCipher ().getAlgorithmName ());
785785 }
786786 else
787787 {
@@ -796,7 +796,7 @@ else if (params instanceof PBEParameterSpec)
796796 else if (key instanceof PBEKey )
797797 {
798798 PBEKey k = (PBEKey )key ;
799- pbeSpec = (PBEParameterSpec )params ;
799+ pbeSpec = (PBEParameterSpec )paramSpec ;
800800 if (k instanceof PKCS12KeyWithParameters && pbeSpec == null )
801801 {
802802 pbeSpec = new PBEParameterSpec (k .getSalt (), k .getIterationCount ());
@@ -821,19 +821,17 @@ else if (!(key instanceof RepeatedSecretKeySpec))
821821 param = null ;
822822 }
823823
824- // AlgorithmParameterSpec params;
825- // if (params instanceof PBEParameterSpec)
826- // {
827- // params = ((PBEParameterSpec)params).getParameterSpec();
828- // if (((IvParameterSpec)params).getIV().length == 0)
829- // {
830- // params = new IvParameterSpec(((ParametersWithIV)param).getIV());
831- // }
832- // }
833- // else
834- // {
835- // params = params;
836- // }
824+ AlgorithmParameterSpec params = paramSpec ;
825+ if (paramSpec instanceof PBEParameterSpec )
826+ {
827+ params = ((PBEParameterSpec )paramSpec ).getParameterSpec ();
828+ // If params.getIv() returns an empty byte array, ivParam will be assigned an IV generated by PBE.Util.makePBEParameters
829+ // according to RFC 7292. This behavior is intended for Jasypt users who choose to use NoIvGenerator.
830+ if (params instanceof IvParameterSpec && ((IvParameterSpec )params ).getIV ().length == 0 )
831+ {
832+ params = paramSpec ;
833+ }
834+ }
837835
838836 if (params instanceof AEADParameterSpec )
839837 {
0 commit comments