Package org.jmrtd.protocol
Class AESSecureMessagingWrapper
- java.lang.Object
-
- org.jmrtd.protocol.SecureMessagingWrapper
-
- org.jmrtd.protocol.AESSecureMessagingWrapper
-
- All Implemented Interfaces:
Serializable
,net.sf.scuba.smartcards.APDUWrapper
public class AESSecureMessagingWrapper extends SecureMessagingWrapper implements Serializable
An AES secure messaging wrapper for APDUs. Based on TR-SAC.- Version:
- $Revision: 1799 $
- Author:
- The JMRTD team ([email protected])
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description AESSecureMessagingWrapper(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.AESSecureMessagingWrapper(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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
SecretKey
getEncryptionKey()
Returns the shared key for encrypting APDU payloads.SecretKey
getMACKey()
Returns the shared key for computing message authentication codes over APDU payloads.long
getSendSequenceCounter()
Returns the current value of the send sequence counter.String
getType()
Returns the type of secure messaging wrapper (in this case"AES"
).int
hashCode()
String
toString()
net.sf.scuba.smartcards.ResponseAPDU
unwrap(net.sf.scuba.smartcards.ResponseAPDU responseAPDU)
Unwraps the buffer of a response APDU.net.sf.scuba.smartcards.CommandAPDU
wrap(net.sf.scuba.smartcards.CommandAPDU commandAPDU)
Wraps the APDU buffer of a command apdu.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from class org.jmrtd.protocol.SecureMessagingWrapper
getMaxTranceiveLength, shouldCheckMAC
-
-
-
-
Constructor Detail
-
AESSecureMessagingWrapper
public AESSecureMessagingWrapper(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
-
AESSecureMessagingWrapper
public AESSecureMessagingWrapper(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"AES"
).- Specified by:
getType
in interfacenet.sf.scuba.smartcards.APDUWrapper
- Returns:
- the type of secure messaging wrapper
-
getSendSequenceCounter
public long getSendSequenceCounter()
Returns the current value of the send sequence counter.- Specified by:
getSendSequenceCounter
in classSecureMessagingWrapper
- Returns:
- the current value of the send sequence counter.
-
wrap
public net.sf.scuba.smartcards.CommandAPDU wrap(net.sf.scuba.smartcards.CommandAPDU commandAPDU)
Wraps the APDU buffer of a command apdu. As a side effect, this method increments the internal send sequence counter maintained by this wrapper.- Specified by:
wrap
in interfacenet.sf.scuba.smartcards.APDUWrapper
- Parameters:
commandAPDU
- buffer containing the command apdu.- Returns:
- length of the command apdu after wrapping.
-
unwrap
public net.sf.scuba.smartcards.ResponseAPDU unwrap(net.sf.scuba.smartcards.ResponseAPDU responseAPDU)
Unwraps the buffer of a response APDU.- Specified by:
unwrap
in interfacenet.sf.scuba.smartcards.APDUWrapper
- Parameters:
responseAPDU
- the response APDU- Returns:
- a new byte array containing the unwrapped buffer
-
getEncryptionKey
public SecretKey getEncryptionKey()
Description copied from class:SecureMessagingWrapper
Returns the shared key for encrypting APDU payloads.- Specified by:
getEncryptionKey
in classSecureMessagingWrapper
- Returns:
- the encryption key
-
getMACKey
public SecretKey getMACKey()
Description copied from class:SecureMessagingWrapper
Returns the shared key for computing message authentication codes over APDU payloads.- Specified by:
getMACKey
in classSecureMessagingWrapper
- Returns:
- the MAC key
-
-