updated style of PrivateKeyFile to conform (more or less) to sun coding standards
This commit is contained in:
@ -37,93 +37,6 @@ import net.i2p.crypto.DSAEngine;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class PrivateKeyFile {
|
public class PrivateKeyFile {
|
||||||
public PrivateKeyFile(File file, I2PClient client) {
|
|
||||||
this.file = file;
|
|
||||||
this.client = client;
|
|
||||||
this.dest = null;
|
|
||||||
this.privKey = null;
|
|
||||||
this.signingPrivKey = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Also reads in the file to get the privKay and signingPrivKey,
|
|
||||||
* which aren't available from I2PClient.
|
|
||||||
*/
|
|
||||||
public Destination createIfAbsent() throws I2PException, IOException, DataFormatException {
|
|
||||||
if(!this.file.exists()) {
|
|
||||||
FileOutputStream out = new FileOutputStream(this.file);
|
|
||||||
this.client.createDestination(out);
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
return getDestination();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Also sets the local privKay and signingPrivKey */
|
|
||||||
public Destination getDestination() throws I2PSessionException, IOException, DataFormatException {
|
|
||||||
if (dest == null) {
|
|
||||||
I2PSession s = open();
|
|
||||||
if (s != null) {
|
|
||||||
this.dest = new VerifiedDestination(s.getMyDestination());
|
|
||||||
this.privKey = s.getDecryptionKey();
|
|
||||||
this.signingPrivKey = s.getPrivateKey();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this.dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PrivateKey getPrivKey() { return this.privKey; }
|
|
||||||
public SigningPrivateKey getSigningPrivKey() { return this.signingPrivKey; }
|
|
||||||
|
|
||||||
public I2PSession open() throws I2PSessionException, IOException {
|
|
||||||
return this.open(new Properties());
|
|
||||||
}
|
|
||||||
public I2PSession open(Properties opts) throws I2PSessionException, IOException {
|
|
||||||
// open input file
|
|
||||||
FileInputStream in = new FileInputStream(this.file);
|
|
||||||
|
|
||||||
// create sesssion
|
|
||||||
I2PSession s = this.client.createSession(in, opts);
|
|
||||||
|
|
||||||
// close file
|
|
||||||
in.close();
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Copied from I2PClientImpl.createDestination()
|
|
||||||
*/
|
|
||||||
public void write() throws IOException, DataFormatException {
|
|
||||||
FileOutputStream out = new FileOutputStream(this.file);
|
|
||||||
this.dest.writeBytes(out);
|
|
||||||
this.privKey.writeBytes(out);
|
|
||||||
this.signingPrivKey.writeBytes(out);
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
StringBuffer s = new StringBuffer(128);
|
|
||||||
s.append("Dest: ");
|
|
||||||
s.append(this.dest.toBase64());
|
|
||||||
s.append("\nContains: ");
|
|
||||||
s.append(this.dest);
|
|
||||||
s.append("\nPrivate Key: ");
|
|
||||||
s.append(this.privKey);
|
|
||||||
s.append("\nSigining Private Key: ");
|
|
||||||
s.append(this.signingPrivKey);
|
|
||||||
s.append("\n");
|
|
||||||
return s.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private File file;
|
|
||||||
private I2PClient client;
|
|
||||||
private Destination dest;
|
|
||||||
private PrivateKey privKey;
|
|
||||||
private SigningPrivateKey signingPrivKey;
|
|
||||||
|
|
||||||
private static final int HASH_EFFORT = VerifiedDestination.MIN_HASHCASH_EFFORT;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new PrivateKeyFile, or modify an existing one, with various
|
* Create a new PrivateKeyFile, or modify an existing one, with various
|
||||||
* types of Certificates.
|
* types of Certificates.
|
||||||
@ -241,6 +154,92 @@ public class PrivateKeyFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public PrivateKeyFile(File file, I2PClient client) {
|
||||||
|
this.file = file;
|
||||||
|
this.client = client;
|
||||||
|
this.dest = null;
|
||||||
|
this.privKey = null;
|
||||||
|
this.signingPrivKey = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Also reads in the file to get the privKay and signingPrivKey,
|
||||||
|
* which aren't available from I2PClient.
|
||||||
|
*/
|
||||||
|
public Destination createIfAbsent() throws I2PException, IOException, DataFormatException {
|
||||||
|
if(!this.file.exists()) {
|
||||||
|
FileOutputStream out = new FileOutputStream(this.file);
|
||||||
|
this.client.createDestination(out);
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
return getDestination();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Also sets the local privKay and signingPrivKey */
|
||||||
|
public Destination getDestination() throws I2PSessionException, IOException, DataFormatException {
|
||||||
|
if (dest == null) {
|
||||||
|
I2PSession s = open();
|
||||||
|
if (s != null) {
|
||||||
|
this.dest = new VerifiedDestination(s.getMyDestination());
|
||||||
|
this.privKey = s.getDecryptionKey();
|
||||||
|
this.signingPrivKey = s.getPrivateKey();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PrivateKey getPrivKey() {
|
||||||
|
return this.privKey;
|
||||||
|
}
|
||||||
|
public SigningPrivateKey getSigningPrivKey() {
|
||||||
|
return this.signingPrivKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public I2PSession open() throws I2PSessionException, IOException {
|
||||||
|
return this.open(new Properties());
|
||||||
|
}
|
||||||
|
public I2PSession open(Properties opts) throws I2PSessionException, IOException {
|
||||||
|
// open input file
|
||||||
|
FileInputStream in = new FileInputStream(this.file);
|
||||||
|
|
||||||
|
// create sesssion
|
||||||
|
I2PSession s = this.client.createSession(in, opts);
|
||||||
|
|
||||||
|
// close file
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copied from I2PClientImpl.createDestination()
|
||||||
|
*/
|
||||||
|
public void write() throws IOException, DataFormatException {
|
||||||
|
FileOutputStream out = new FileOutputStream(this.file);
|
||||||
|
this.dest.writeBytes(out);
|
||||||
|
this.privKey.writeBytes(out);
|
||||||
|
this.signingPrivKey.writeBytes(out);
|
||||||
|
out.flush();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
StringBuffer s = new StringBuffer(128);
|
||||||
|
s.append("Dest: ");
|
||||||
|
s.append(this.dest.toBase64());
|
||||||
|
s.append("\nContains: ");
|
||||||
|
s.append(this.dest);
|
||||||
|
s.append("\nPrivate Key: ");
|
||||||
|
s.append(this.privKey);
|
||||||
|
s.append("\nSigining Private Key: ");
|
||||||
|
s.append(this.signingPrivKey);
|
||||||
|
s.append("\n");
|
||||||
|
return s.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sample code to verify a 3rd party signature.
|
* Sample code to verify a 3rd party signature.
|
||||||
* This just goes through all the hosts.txt files and tries everybody.
|
* This just goes through all the hosts.txt files and tries everybody.
|
||||||
@ -291,4 +290,15 @@ public class PrivateKeyFile {
|
|||||||
public static boolean checkSignature(Signature s, byte[] data, SigningPublicKey spk) {
|
public static boolean checkSignature(Signature s, byte[] data, SigningPublicKey spk) {
|
||||||
return DSAEngine.getInstance().verifySignature(s, data, spk);
|
return DSAEngine.getInstance().verifySignature(s, data, spk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final int HASH_EFFORT = VerifiedDestination.MIN_HASHCASH_EFFORT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private File file;
|
||||||
|
private I2PClient client;
|
||||||
|
private Destination dest;
|
||||||
|
private PrivateKey privKey;
|
||||||
|
private SigningPrivateKey signingPrivKey;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user