public class PrivateKeyFile extends Object
- Destination (387 bytes if no certificate, otherwise longer) - Public key (256 bytes), random data as of 0.9.57 (except for RouterPrivateKeyFile) - Signing Public key (128 bytes) - Cert. type (1 byte) - Cert. length (2 bytes) - Certificate if length != 0 - Private key (256 bytes for ElGamal, or length specified by key certificate) - All zeros as of 0.9.57 (except for RouterPrivateKeyFile) - Signing Private key (20 bytes, or length specified by key certificate) - As of 0.9.38, if the Signing Private Key is all zeros, the offline signature section (see proposal 123): - Expires timestamp (4 bytes, seconds since epoch, rolls over in 2106) - Sig type of transient public key (2 bytes) - Transient Signing Public key (length as specified by transient sig type) - Signature of Signed Public key by offline key (length as specified by destination sig type) - Transient Signing Private key (length as specified by transient sig type) Total: 663 or more bytes for ElGamal, may be smaller for other enc. typesDestination encryption keys have been unused since 0.6 (2005). As of 0.9.57, new Destination encryption public keys are simply random data, and encryption private keys may be random data or all zeros. This class is extended by net.i2p.data.router.RouterPrivateKeyFile. RouterIdentity encryption keys ARE used and must be valid.
Modifier and Type | Field and Description |
---|---|
protected Destination |
dest |
protected File |
file |
protected PrivateKey |
privKey |
protected SigningPrivateKey |
signingPrivKey |
Constructor and Description |
---|
PrivateKeyFile(File file) |
PrivateKeyFile(File file,
Destination dest,
PrivateKey pk,
SigningPrivateKey spk) |
PrivateKeyFile(File file,
I2PClient client) |
PrivateKeyFile(File file,
I2PSession session) |
PrivateKeyFile(File file,
PublicKey pubkey,
SigningPublicKey spubkey,
Certificate cert,
PrivateKey pk,
SigningPrivateKey spk) |
PrivateKeyFile(File file,
PublicKey pubkey,
SigningPublicKey spubkey,
Certificate cert,
PrivateKey pk,
SigningPrivateKey spk,
byte[] padding) |
PrivateKeyFile(InputStream in)
Can't be used for writing
|
PrivateKeyFile(String file) |
Modifier and Type | Method and Description |
---|---|
static boolean |
checkSignature(Signature s,
byte[] data,
SigningPublicKey spk) |
Destination |
createIfAbsent()
Create with the default signature type if nonexistent.
|
Destination |
createIfAbsent(SigType type)
Create with the specified signature type if nonexistent.
|
static String |
estimateHashCashTime(int hashEffort) |
Destination |
getDestination()
If the destination is not set, read it in from the file.
|
long |
getOfflineExpiration() |
Signature |
getOfflineSignature() |
PrivateKey |
getPrivKey()
Deprecated.
this key is unused
|
SigningPrivateKey |
getSigningPrivKey() |
SigningPrivateKey |
getTransientSigningPrivKey() |
SigningPublicKey |
getTransientSigningPubKey() |
boolean |
isOffline()
Does this session have offline and transient keys?
|
static void |
main(String[] args)
Create a new PrivateKeyFile, or modify an existing one, with various
types of Certificates.
|
I2PSession |
open() |
I2PSession |
open(Properties opts) |
Certificate |
setCertType(int t)
Change cert type - caller must also call write().
|
void |
setDestination(Destination d) |
Certificate |
setHashCashCert(int effort)
change to hashcash cert - caller must also call write()
|
Certificate |
setKeyCert(SigType type)
Change cert type - caller must also call write().
|
void |
setOfflineData(long expires,
SigningPublicKey transientPub,
Signature sig,
SigningPrivateKey transientPriv)
Side effect - zeroes out the current signing private key
|
Certificate |
setSignedCert(PrivateKeyFile pkf2)
sign this dest by dest found in pkf2 - caller must also call write()
|
String |
toString() |
boolean |
validateKeyPairs()
Verify that the PublicKey matches the PrivateKey, and
the SigningPublicKey matches the SigningPrivateKey.
|
static boolean |
verifySignature(Destination d)
Sample code to verify a 3rd party signature.
|
void |
write()
Copied from I2PClientImpl.createDestination()
|
protected final File file
protected Destination dest
protected PrivateKey privKey
protected SigningPrivateKey signingPrivKey
public PrivateKeyFile(String file)
public PrivateKeyFile(File file)
public PrivateKeyFile(File file, I2PSession session)
public PrivateKeyFile(File file, Destination dest, PrivateKey pk, SigningPrivateKey spk)
IllegalArgumentException
- on mismatch of spubkey and spk typespublic PrivateKeyFile(File file, PublicKey pubkey, SigningPublicKey spubkey, Certificate cert, PrivateKey pk, SigningPrivateKey spk)
IllegalArgumentException
- on mismatch of spubkey and spk typespublic PrivateKeyFile(File file, PublicKey pubkey, SigningPublicKey spubkey, Certificate cert, PrivateKey pk, SigningPrivateKey spk, byte[] padding)
padding
- null OK, must be non-null if spubkey length < 128IllegalArgumentException
- on mismatch of spubkey and spk typespublic PrivateKeyFile(InputStream in) throws I2PSessionException
I2PSessionException
public static void main(String[] args)
public Destination createIfAbsent() throws I2PException, IOException, DataFormatException
public Destination createIfAbsent(SigType type) throws I2PException, IOException, DataFormatException
I2PException
IOException
DataFormatException
public Destination getDestination() throws I2PSessionException, IOException, DataFormatException
public void setDestination(Destination d)
public Certificate setCertType(int t)
public Certificate setKeyCert(SigType type)
public Certificate setHashCashCert(int effort)
public Certificate setSignedCert(PrivateKeyFile pkf2)
@Deprecated public PrivateKey getPrivKey()
public SigningPrivateKey getSigningPrivKey()
public boolean isOffline()
public void setOfflineData(long expires, SigningPublicKey transientPub, Signature sig, SigningPrivateKey transientPriv)
public long getOfflineExpiration()
public Signature getOfflineSignature()
public SigningPublicKey getTransientSigningPubKey()
public SigningPrivateKey getTransientSigningPrivKey()
public I2PSession open() throws I2PSessionException, IOException
I2PSessionException
IOException
public I2PSession open(Properties opts) throws I2PSessionException, IOException
I2PSessionException
IOException
public void write() throws IOException, DataFormatException
IOException
DataFormatException
public boolean validateKeyPairs()
public static String estimateHashCashTime(int hashEffort)
public static boolean verifySignature(Destination d)
public static boolean checkSignature(Signature s, byte[] data, SigningPublicKey spk)