Skip to content

Commit 09b4f71

Browse files
Clear passphrase bytes after use
Mimics the behavior of `decrypt()` in `PKCS5KeyFile.java`.
1 parent 3c85b86 commit 09b4f71

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/main/java/com/hierynomus/sshj/userauth/keyprovider/OpenSSHKeyV1KeyFile.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,12 @@ private void initializeCipher(String kdfName, byte[] kdfOptions, Cipher cipher)
143143
CharBuffer charBuffer = CharBuffer.wrap(pwdf.reqPassword(null));
144144
ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(charBuffer);
145145
passphrase = Arrays.copyOfRange(byteBuffer.array(), byteBuffer.position(), byteBuffer.limit());
146+
Arrays.fill(charBuffer.array(), '\u0000');
147+
Arrays.fill(byteBuffer.array(), (byte) 0);
146148
}
147149
byte[] keyiv = new byte[48];
148150
new BCrypt().pbkdf(passphrase, opts.readBytes(), opts.readUInt32AsInt(), keyiv);
151+
Arrays.fill(passphrase, (byte) 0);
149152
byte[] key = Arrays.copyOfRange(keyiv, 0, 32);
150153
byte[] iv = Arrays.copyOfRange(keyiv, 32, 48);
151154
cipher.init(Cipher.Mode.Decrypt, key, iv);

0 commit comments

Comments
 (0)