Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
gnu.java.security.sig.dss.DSSSignatureX509Codec
ISignatureCodec
that knows to encode and
decode DSS signatures into the raw bytes which would constitute a DER-encoded
form of the ASN.1 structure defined in RFC-2459, and RFC-2313 as described in
the next paragraphs.
Digital signatures when transmitted in an X.509 certificates are encoded in DER (Distinguished Encoding Rules) as a BIT STRING; i.e.
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING }
The output of the encoder, and the input of the decoder, of this codec are then the raw bytes of such a BIT STRING; i.e. not the DER-encoded form itself.
RFC-2459 states that, for the Digital Signature Standard (DSS), which
generates two MPIs, commonly called r
and s
, as the
result of digitally signing a message, these two numbers will be transferred
as the following ASN.1 structure:
Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER }
Client code that needs to build a DER BIT STRING MUST construct such an ASN.1 value. The following is an example of how to do this:
... import gnu.java.security.der.BitString; import gnu.java.security.der.DER; import gnu.java.security.der.DERValue; ... DERValue bitString = new DERValue(DER.BIT_STRING, new BitString(sigBytes)); ...
Fields inherited from interface gnu.java.security.sig.ISignatureCodec | |
RAW_FORMAT |
Method Summary | |
Object |
|
byte[] |
|
int |
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public Object decodeSignature(byte[] input)
Decodes a signature as defined in the documentation of this class.
- Specified by:
- decodeSignature in interface ISignatureCodec
- Parameters:
input
- the byte array to unmarshall into a valid DSS signature instance; i.e. an array of two MPIs. MUST NOT be null.
- Returns:
- an array of two MPIs,
r
ands
in this order, decoded from the designatedinput
.
public byte[] encodeSignature(Object signature)
Encodes a DSS Signature output as the signature raw bytes which can be used to construct an ASN.1 DER-encoded BIT STRING as defined in the documentation of this class.
- Specified by:
- encodeSignature in interface ISignatureCodec
- Parameters:
signature
- the output of the DSS signature algorithm; i.e. the value returned by the invocation ofISignature.sign()
method. In the case of a DSS signature this is an array of two MPIs calledr
ands
.
- Returns:
- the raw bytes of a DSS signature which could be then used as the contents of a BIT STRING as per rfc-2459.
- Throws:
InvalidParameterException
- if an exception occurs during the marshalling process.