Package net.i2p.data
Class Certificate
java.lang.Object
net.i2p.data.DataStructureImpl
net.i2p.data.Certificate
- All Implemented Interfaces:
Serializable
,DataStructure
- Direct Known Subclasses:
KeyCertificate
Defines a certificate that can be attached to various I2P structures, such
as RouterIdentity and Destination, allowing routers and clients to help
manage denial of service attacks and the network utilization. Certificates
can even be defined to include identifiable information signed by some
certificate authority, though that use probably isn't appropriate for an
anonymous network ;)
Todo: Properly support multiple certificates
- Author:
- jrandom
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected byte[]
protected int
static final int
static final int
specifies a Hashcash style certificatestatic final int
we should not be used for anything (don't use us in the netDb, in tunnels, or tell others about us)static final int
static final int
Contains multiple certsstatic final int
Specifies a null certificate type with no payloadstatic final int
Signed with 40-byte Signature and (optional) 32-byte hashstatic final Certificate
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Certificate
create
(byte[] data, int off) If null, P256 key, or Ed25519 key cert, return immutable static instance, else create newstatic Certificate
create
(InputStream in) If null, P256 key, or Ed25519 key cert, return immutable static instance, else create newboolean
int
byte[]
int
hashCode()
int
readBytes
(byte[] source, int offset) void
readBytes
(InputStream in) Load up the current object with data from the given stream.void
setCertificateType
(int type) void
setPayload
(byte[] payload) int
size()
Up-convert this to a KeyCertificatetoString()
int
writeBytes
(byte[] target, int offset) void
writeBytes
(OutputStream out) Write out the data structure to the stream, using the format defined in the I2P data structure specification.Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
-
Field Details
-
NULL_CERT
-
_type
protected int _type -
_payload
protected byte[] _payload -
CERTIFICATE_TYPE_NULL
public static final int CERTIFICATE_TYPE_NULLSpecifies a null certificate type with no payload- See Also:
-
CERTIFICATE_TYPE_HASHCASH
public static final int CERTIFICATE_TYPE_HASHCASHspecifies a Hashcash style certificate- See Also:
-
CERTIFICATE_TYPE_HIDDEN
public static final int CERTIFICATE_TYPE_HIDDENwe should not be used for anything (don't use us in the netDb, in tunnels, or tell others about us)- See Also:
-
CERTIFICATE_TYPE_SIGNED
public static final int CERTIFICATE_TYPE_SIGNEDSigned with 40-byte Signature and (optional) 32-byte hash- See Also:
-
CERTIFICATE_LENGTH_SIGNED_WITH_HASH
public static final int CERTIFICATE_LENGTH_SIGNED_WITH_HASH -
CERTIFICATE_TYPE_MULTIPLE
public static final int CERTIFICATE_TYPE_MULTIPLEContains multiple certs- See Also:
-
CERTIFICATE_TYPE_KEY
public static final int CERTIFICATE_TYPE_KEY- Since:
- 0.9.12
- See Also:
-
-
Constructor Details
-
Certificate
public Certificate() -
Certificate
public Certificate(int type, byte[] payload) - Throws:
IllegalArgumentException
- if type < 0
-
-
Method Details
-
create
If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new- Throws:
DataFormatException
- if not enough bytes- Since:
- 0.8.3
-
create
If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new- Throws:
DataFormatException
IOException
- Since:
- 0.8.3
-
getCertificateType
public int getCertificateType() -
setCertificateType
public void setCertificateType(int type) - Throws:
IllegalArgumentException
- if type < 0IllegalStateException
- if already set
-
getPayload
public byte[] getPayload() -
setPayload
public void setPayload(byte[] payload) - Throws:
IllegalStateException
- if already set
-
readBytes
Description copied from interface:DataStructure
Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification. Warning - many classes will throw IllegalStateException if data is already set.- Parameters:
in
- stream to read from- Throws:
IllegalStateException
- if already setDataFormatException
- if the data is improperly formattedIOException
- if there was a problem reading the stream
-
writeBytes
Description copied from interface:DataStructure
Write out the data structure to the stream, using the format defined in the I2P data structure specification.- Parameters:
out
- stream to write to- Throws:
DataFormatException
- if the data was incomplete or not yet ready to be writtenIOException
- if there was a problem writing to the stream
-
writeBytes
public int writeBytes(byte[] target, int offset) - Returns:
- the written length (NOT the new offset)
-
readBytes
- Throws:
IllegalStateException
- if already setDataFormatException
-
size
public int size() -
toKeyCertificate
Up-convert this to a KeyCertificate- Throws:
DataFormatException
- if cert type != CERTIFICATE_TYPE_KEY- Since:
- 0.9.12
-
equals
-
hashCode
public int hashCode() -
toString
-