I added a secured attribute with vault.sh but the shared key looked suspicious:
Looking at VaultSession#attributeCreatedDisplay(), the byte handshakeKey is displayed by calling toString() => this displays its address, not a textual representation of the bytes.
When the shared key is read in RuntimeVaultReader, we call String.getBytes() to get back the byte.
A simple fix is to display the handshakeKey with new String(handshakeKey).
However this will work only if the default charset is the same on machines that store the secured attribute and read from it.
It'd be safe to use always the same Charset (e.g. US-ASCII or UTF-8).
I've raised the priority to critical since it is not possible to use any secured attribute if the handshake is not properly displayed