Package org.jivesoftware.smackx.ox.util
Class SecretKeyBackupHelper
java.lang.Object
org.jivesoftware.smackx.ox.util.SecretKeyBackupHelper
Helper class which provides some functions needed for backup/restore of the users secret key to/from their private
 PubSub node.
- 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionstatic SecretkeyElementcreateSecretkeyElement(byte[] keys, OpenPgpSecretKeyBackupPassphrase backupCode) Create aSecretkeyElementwhich contains the secret keys which are serialized inkeysand is symmetrically encrypted using thebackupCode.static SecretkeyElementcreateSecretkeyElement(OpenPgpProvider provider, BareJid owner, Set<org.pgpainless.key.OpenPgpV4Fingerprint> fingerprints, OpenPgpSecretKeyBackupPassphrase backupCode) Create aSecretkeyElementwhich contains the secret keys listed infingerprintsand is encrypted symmetrically using thebackupCode.Generate a secure backup code.static org.bouncycastle.openpgp.PGPSecretKeyRingrestoreSecretKeyBackup(SecretkeyElement backup, OpenPgpSecretKeyBackupPassphrase backupCode) Decrypt a secret key backup and return thePGPSecretKeyRingcontained in it. 
- 
Constructor Details
- 
SecretKeyBackupHelper
public SecretKeyBackupHelper() 
 - 
 - 
Method Details
- 
generateBackupPassword
Generate a secure backup code. This code can be used to encrypt a secret key backup and follows the form described in XEP-0373 §5.3.- Returns:
 - backup code
 - See Also:
 
 - 
createSecretkeyElement
public static SecretkeyElement createSecretkeyElement(OpenPgpProvider provider, BareJid owner, Set<org.pgpainless.key.OpenPgpV4Fingerprint> fingerprints, OpenPgpSecretKeyBackupPassphrase backupCode) throws org.bouncycastle.openpgp.PGPException, IOException, MissingOpenPgpKeyException Create aSecretkeyElementwhich contains the secret keys listed infingerprintsand is encrypted symmetrically using thebackupCode.- Parameters:
 provider-OpenPgpProviderfor symmetric encryption.owner- owner of the secret keys (usually our jid).fingerprints- set ofOpenPgpV4Fingerprints of the keys which are going to be backed up.backupCode- passphrase for symmetric encryption.- Returns:
 SecretkeyElement- Throws:
 org.bouncycastle.openpgp.PGPException- PGP is brittleIOException- IO is dangerousMissingOpenPgpKeyException- in case one of the keys whose fingerprint is infingerprintsis not accessible.
 - 
createSecretkeyElement
public static SecretkeyElement createSecretkeyElement(byte[] keys, OpenPgpSecretKeyBackupPassphrase backupCode) throws org.bouncycastle.openpgp.PGPException, IOException Create aSecretkeyElementwhich contains the secret keys which are serialized inkeysand is symmetrically encrypted using thebackupCode.- Parameters:
 keys- serialized OpenPGP secret keys in transferable key formatbackupCode- passphrase for symmetric encryption- Returns:
 SecretkeyElement- Throws:
 org.bouncycastle.openpgp.PGPException- PGP is brittleIOException- IO is dangerous- See Also:
 
 - 
restoreSecretKeyBackup
public static org.bouncycastle.openpgp.PGPSecretKeyRing restoreSecretKeyBackup(SecretkeyElement backup, OpenPgpSecretKeyBackupPassphrase backupCode) throws InvalidBackupCodeException, IOException, org.bouncycastle.openpgp.PGPException Decrypt a secret key backup and return thePGPSecretKeyRingcontained in it. TODO: Return a PGPSecretKeyRingCollection instead?- Parameters:
 backup- encryptedSecretkeyElementcontaining the backupbackupCode- passphrase for decrypting theSecretkeyElement.- Returns:
 - the TODO javadoc me please
 - Throws:
 InvalidBackupCodeException- in case the provided backup code is invalid.IOException- IO is dangerous.org.bouncycastle.openpgp.PGPException- PGP is brittle.
 
 -