public class Certificate extends DataStructureImpl
Certificate offers flexible metadata attachment to I2P identities:
Supported Certificate Types:
CERTIFICATE_TYPE_NULL - No certificate (default)CERTIFICATE_TYPE_HIDDEN - Service should not be publishedCERTIFICATE_TYPE_SIGNED - Signed by certificate authorityCERTIFICATE_TYPE_MULTIPLE - Contains multiple certificatesCERTIFICATE_TYPE_KEY - Specifies key types (KeyCertificate)Common Use Cases:
Security Considerations:
Implementation Notes:
Related Structures:
Destination - Uses certificates for service identityRouterIdentity - Router certificatesKeyCertificate - Specialized certificate for key type specification| Modifier and Type | Field and Description |
|---|---|
protected byte[] |
_payload |
protected int |
_type |
static int |
CERTIFICATE_LENGTH_SIGNED_WITH_HASH |
static int |
CERTIFICATE_TYPE_HIDDEN
we should not be used for anything (don't use us in the netDb, in tunnels, or tell others about us)
|
static int |
CERTIFICATE_TYPE_KEY
Key certificate type.
|
static int |
CERTIFICATE_TYPE_MULTIPLE
Contains multiple certs
|
static int |
CERTIFICATE_TYPE_NULL
Specifies a null certificate type with no payload
|
static int |
CERTIFICATE_TYPE_SIGNED
Signed with 40-byte Signature and (optional) 32-byte hash
|
static Certificate |
NULL_CERT |
| Constructor and Description |
|---|
Certificate() |
Certificate(int type,
byte[] payload) |
| Modifier and Type | Method and Description |
|---|---|
static Certificate |
create(byte[] data,
int off)
If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
|
static Certificate |
create(InputStream in)
If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
|
boolean |
equals(Object object) |
int |
getCertificateType()
Gets the certificate type.
|
byte[] |
getPayload() |
int |
hashCode() |
int |
readBytes(byte[] source,
int offset)
Reads the certificate from the source array.
|
void |
readBytes(InputStream in)
Load up the current object with data from the given stream.
|
void |
setCertificateType(int type)
Sets the certificate type.
|
void |
setPayload(byte[] payload)
Sets the certificate payload.
|
int |
size() |
KeyCertificate |
toKeyCertificate()
Up-convert this to a KeyCertificate
|
String |
toString() |
int |
writeBytes(byte[] target,
int offset)
Writes the certificate to the target array.
|
void |
writeBytes(OutputStream out)
Write out the data structure to the stream, using the format defined in the
I2P data structure specification.
|
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArrayprotected byte[] _payload
protected int _type
public static final int CERTIFICATE_LENGTH_SIGNED_WITH_HASH
public static final int CERTIFICATE_TYPE_HIDDEN
public static final int CERTIFICATE_TYPE_KEY
public static final int CERTIFICATE_TYPE_MULTIPLE
public static final int CERTIFICATE_TYPE_NULL
public static final int CERTIFICATE_TYPE_SIGNED
public static final Certificate NULL_CERT
public Certificate()
public Certificate(int type,
byte[] payload)
IllegalArgumentException - if type < 0public static Certificate create(byte[] data, int off) throws DataFormatException
DataFormatException - if not enough bytespublic static Certificate create(InputStream in) throws DataFormatException, IOException
DataFormatExceptionIOExceptionpublic int getCertificateType()
public byte[] getPayload()
public int readBytes(byte[] source,
int offset)
throws DataFormatException
IllegalStateException - if already setDataFormatExceptionpublic void readBytes(InputStream in) throws DataFormatException, IOException
DataStructurein - stream to read fromIllegalStateException - if already setDataFormatException - if the data is improperly formattedIOException - if there was a problem reading the streampublic void setCertificateType(int type)
IllegalArgumentException - if type < 0IllegalStateException - if already setpublic void setPayload(byte[] payload)
IllegalStateException - if already setpublic int size()
public KeyCertificate toKeyCertificate() throws DataFormatException
DataFormatException - if cert type != CERTIFICATE_TYPE_KEYpublic int writeBytes(byte[] target,
int offset)
public void writeBytes(OutputStream out) throws DataFormatException, IOException
DataStructureout - stream to write toDataFormatException - if the data was incomplete or not yet ready to be writtenIOException - if there was a problem writing to the stream