Class SecureKey
- java.lang.Object
-
- org.jpos.security.SecureKey
-
- All Implemented Interfaces:
java.io.Serializable
,Loggeable
- Direct Known Subclasses:
SecureKeyBlock
,SecureVariantKey
public abstract class SecureKey extends java.lang.Object implements java.io.Serializable, Loggeable
Represents a key that cannot be used except by your security module and for performing the operations allowed by the security module for this type of keys. So, a SecureKey can be safely stored in a clear file or database.A SecureKey is typically a key encrypted under one of the secret keys that are protected by the security module itself (Local Master Keys --LMK for short).
SecureKey just holds:
1- Secure Key: a byte[] holding the key in the secure proprietary format of your security module. This is typically the clear key encrypted under LMK.
2- Key Type: identifies what this key can be used for (e.g. TYPE_ZPK (Zone PIN Key), TYPE_ZMK (Zone Master Key)...
3- Key Length (in bits): also called key size. e.g. LENGTH_DES, LENGTH_DES3_2KEY,...etc. This is not necessarily deducible from the length of the byte[] holding the secure key bytes, since encryption under LMK is proprietary to the security module.NOTE: The security of SecureKey is totally dependent on the security of the used security module.
- See Also:
SMAdapter
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]
keyBytes
Secure Key Bytesprotected byte[]
keyCheckValue
The keyCheckValue allows identifying which clear key does this secure key represent.protected short
keyLength
This is the bit length of the key This can be: LENGTH_DES, LENGTH_DES3_2KEY, ...protected java.lang.String
keyName
Optional key nameprotected java.lang.String
keyType
Key Type is useful for stating what this key can be used for.protected KeyScheme
scheme
Key scheme indicates protection metchod appiled to this key by a security module.
-
Constructor Summary
Constructors Constructor Description SecureKey()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description byte[]
getKeyBytes()
byte[]
getKeyCheckValue()
The Key Check Value is typically a 24-bits (3 bytes) formed by encrypting a block of zeros under the secure key when the secure key is clear (not in this class, but inside the security module).short
getKeyLength()
java.lang.String
getKeyName()
optional key namejava.lang.String
getKeyType()
Key Type is useful for stating what this key can be used for.abstract KeyScheme
getScheme()
Gets the key scheme used to protect this key.void
setKeyBytes(byte[] keyBytes)
Sets the secure key bytesvoid
setKeyCheckValue(byte[] keyCheckValue)
The Key Check Value is typically a 24-bits (3 bytes) formed by encrypting a block of zeros under the secure key when the secure key is clear (not in this class, but inside the security module).void
setKeyLength(short keyLength)
Sets the length of the key (in bits) (when it was still clear).void
setKeyName(java.lang.String keyName)
optional key namevoid
setKeyType(java.lang.String keyType)
Key Type is useful for stating what this key can be used for.void
setScheme(KeyScheme scheme)
Key scheme indicates protection metchod appiled to this key by the security module.
-
-
-
Field Detail
-
keyBytes
protected byte[] keyBytes
Secure Key Bytes
-
keyCheckValue
protected byte[] keyCheckValue
The keyCheckValue allows identifying which clear key does this secure key represent.
-
keyLength
protected short keyLength
This is the bit length of the key This can be: LENGTH_DES, LENGTH_DES3_2KEY, ...
-
keyType
protected java.lang.String keyType
Key Type is useful for stating what this key can be used for. The value of Key Type specifies whether this encryped key is a TYPE_TMK (Terminal Master Key), TYPE_ZPK (Zone PIN Key)....
-
scheme
protected KeyScheme scheme
Key scheme indicates protection metchod appiled to this key by a security module.
-
keyName
protected java.lang.String keyName
Optional key name
-
-
Constructor Detail
-
SecureKey
public SecureKey()
-
-
Method Detail
-
setKeyBytes
public void setKeyBytes(byte[] keyBytes)
Sets the secure key bytes- Parameters:
keyBytes
- byte[] representing the secured key bytes
-
getKeyBytes
public byte[] getKeyBytes()
- Returns:
- The byte[] holding the secure key Bytes
-
setKeyCheckValue
public void setKeyCheckValue(byte[] keyCheckValue)
The Key Check Value is typically a 24-bits (3 bytes) formed by encrypting a block of zeros under the secure key when the secure key is clear (not in this class, but inside the security module). This check value allows identifying if two secure keys map to the same clear key.- Parameters:
keyCheckValue
-
-
getKeyCheckValue
public byte[] getKeyCheckValue()
The Key Check Value is typically a 24-bits (3 bytes) formed by encrypting a block of zeros under the secure key when the secure key is clear (not in this class, but inside the security module).- Returns:
- the keyCheckValue that was set before by setKeyCheckValue()
-
setKeyLength
public void setKeyLength(short keyLength)
Sets the length of the key (in bits) (when it was still clear). This might be different than the bit length of the secureKeyBytes.- Parameters:
keyLength
-
-
getKeyLength
public short getKeyLength()
- Returns:
- The Length of the secure key (when it was still clear)
-
setKeyType
public void setKeyType(java.lang.String keyType)
Key Type is useful for stating what this key can be used for. The value of Key Type specifies whether this secure key is a TYPE_TMK (Terminal Master Key), TYPE_ZPK (Zone PIN Key)....- Parameters:
keyType
-
-
getKeyType
public java.lang.String getKeyType()
Key Type is useful for stating what this key can be used for. The value of Key Type specifies whether this secure key is a TYPE_TMK (Terminal Master Key), TYPE_ZPK (Zone PIN Key)....- Returns:
- keyType
-
setScheme
public void setScheme(KeyScheme scheme)
Key scheme indicates protection metchod appiled to this key by the security module.- Parameters:
scheme
- key scheme used to protect this key.
-
getScheme
public abstract KeyScheme getScheme()
Gets the key scheme used to protect this key.- Returns:
- key scheme used to protect this key.
-
getKeyName
public java.lang.String getKeyName()
optional key name
-
setKeyName
public void setKeyName(java.lang.String keyName)
optional key name- Parameters:
keyName
- string
-
-