Package org.jmrtd.protocol
Class DESedeSecureMessagingWrapper
- java.lang.Object
-
- org.jmrtd.protocol.SecureMessagingWrapper
-
- org.jmrtd.protocol.DESedeSecureMessagingWrapper
-
- All Implemented Interfaces:
Serializable
,net.sf.scuba.smartcards.APDUWrapper
public class DESedeSecureMessagingWrapper extends SecureMessagingWrapper implements Serializable
Secure messaging wrapper for APDUs. Initially based on Section E.3 of ICAO-TR-PKI.- Version:
- $Revision: 1805 $
- Author:
- The JMRTD team ([email protected])
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static IvParameterSpec
ZERO_IV_PARAM_SPEC
Initialization vector consisting of 8 zero bytes.
-
Constructor Summary
Constructors Constructor Description DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac)
Constructs a secure messaging wrapper based on the secure messaging session keys.DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, boolean shouldCheckMAC)
Constructs a secure messaging wrapper based on the secure messaging session keys.DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, int maxTranceiveLength, boolean shouldCheckMAC, long ssc)
Constructs a secure messaging wrapper based on the secure messaging session keys and the initial value of the send sequence counter.DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, long ssc)
Constructs a secure messaging wrapper based on the secure messaging session keys and the initial value of the send sequence counter.DESedeSecureMessagingWrapper(DESedeSecureMessagingWrapper wrapper)
Constructs a secure messaging wrapper based on the given existing secure messaging wrapper.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
byte[]
getEncodedSendSequenceCounter()
Returns the send sequence counter encoded as a byte array for inclusion in wrapped APDUs.protected IvParameterSpec
getIV()
Returns the initialization vector to be used by the encryption cipher.int
getPadLength()
Returns the length (in bytes) to use for padding.String
getType()
Returns the type of secure messaging wrapper.int
hashCode()
String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from class org.jmrtd.protocol.SecureMessagingWrapper
checkMac, getEncryptionKey, getInstance, getMACKey, getMaxTranceiveLength, getSendSequenceCounter, shouldCheckMAC, unwrap, wrap
-
-
-
-
Field Detail
-
ZERO_IV_PARAM_SPEC
public static final IvParameterSpec ZERO_IV_PARAM_SPEC
Initialization vector consisting of 8 zero bytes.
-
-
Constructor Detail
-
DESedeSecureMessagingWrapper
public DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac) throws GeneralSecurityException
Constructs a secure messaging wrapper based on the secure messaging session keys. The initial value of the send sequence counter is set to0L
.- Parameters:
ksEnc
- the session key for encryptionksMac
- the session key for macs- Throws:
GeneralSecurityException
- when the available JCE providers cannot provide the necessary cryptographic primitives ("DESede/CBC/Nopadding"
Cipher,"ISO9797Alg3Mac"
Mac).
-
DESedeSecureMessagingWrapper
public DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, boolean shouldCheckMAC) throws GeneralSecurityException
Constructs a secure messaging wrapper based on the secure messaging session keys. The initial value of the send sequence counter is set to0L
.- Parameters:
ksEnc
- the session key for encryptionksMac
- the session key for macsshouldCheckMAC
- a boolean indicating whether this wrapper will check the MAC in wrapped response APDUs- Throws:
GeneralSecurityException
- when the available JCE providers cannot provide the necessary cryptographic primitives ("DESede/CBC/Nopadding"
Cipher,"ISO9797Alg3Mac"
Mac).
-
DESedeSecureMessagingWrapper
public DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, long ssc) throws GeneralSecurityException
Constructs a secure messaging wrapper based on the secure messaging session keys and the initial value of the send sequence counter. Used in BAC and EAC 1.- Parameters:
ksEnc
- the session key for encryptionksMac
- the session key for macsssc
- the initial value of the send sequence counter- Throws:
GeneralSecurityException
- when the available JCE providers cannot provide the necessary cryptographic primitives
-
DESedeSecureMessagingWrapper
public DESedeSecureMessagingWrapper(DESedeSecureMessagingWrapper wrapper) throws GeneralSecurityException
Constructs a secure messaging wrapper based on the given existing secure messaging wrapper. This is a convenience copy constructor.- Parameters:
wrapper
- an existing wrapper- Throws:
GeneralSecurityException
- when the available JCE providers cannot provide the necessary cryptographic primitives
-
DESedeSecureMessagingWrapper
public DESedeSecureMessagingWrapper(SecretKey ksEnc, SecretKey ksMac, int maxTranceiveLength, boolean shouldCheckMAC, long ssc) throws GeneralSecurityException
Constructs a secure messaging wrapper based on the secure messaging session keys and the initial value of the send sequence counter. Used in BAC and EAC 1.- Parameters:
ksEnc
- the session key for encryptionksMac
- the session key for macsmaxTranceiveLength
- the maximum tranceive length, typical values are 256 or 65536shouldCheckMAC
- a boolean indicating whether this wrapper will check the MAC in wrapped response APDUsssc
- the initial value of the send sequence counter- Throws:
GeneralSecurityException
- when the available JCE providers cannot provide the necessary cryptographic primitives
-
-
Method Detail
-
getType
public String getType()
Returns the type of secure messaging wrapper. In this case"DESede"
will be returned.- Specified by:
getType
in interfacenet.sf.scuba.smartcards.APDUWrapper
- Returns:
- the type of secure messaging wrapper
-
getPadLength
public int getPadLength()
Returns the length (in bytes) to use for padding. For 3DES this is 8.- Specified by:
getPadLength
in classSecureMessagingWrapper
- Returns:
- the length to use for padding
-
getEncodedSendSequenceCounter
public byte[] getEncodedSendSequenceCounter()
Description copied from class:SecureMessagingWrapper
Returns the send sequence counter encoded as a byte array for inclusion in wrapped APDUs.- Specified by:
getEncodedSendSequenceCounter
in classSecureMessagingWrapper
- Returns:
- the send sequence counter encoded as byte array
-
toString
public String toString()
- Overrides:
toString
in classSecureMessagingWrapper
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classSecureMessagingWrapper
-
equals
public boolean equals(Object obj)
- Overrides:
equals
in classSecureMessagingWrapper
-
getIV
protected IvParameterSpec getIV()
Description copied from class:SecureMessagingWrapper
Returns the initialization vector to be used by the encryption cipher.- Specified by:
getIV
in classSecureMessagingWrapper
- Returns:
- the initialization vector as a paramaters specification
-
-