Class SecureChannelProtocol


  • public class SecureChannelProtocol
    extends java.lang.Object
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] computeAES_CBCEncryption​(org.mozilla.jss.crypto.SymmetricKey symKey, java.lang.String selectedToken, byte[] input, byte[] iv)  
      byte[] computeCryptogram_SCP01​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] card_challenge, byte[] host_challenge, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, int cryptogramType, byte[] authKeyArray, java.lang.String useSoftToken_s, java.lang.String keySet, java.lang.String transportKeyName)  
      byte[] computeCryptogram_SCP03​(org.mozilla.jss.crypto.SymmetricKey symKey, java.lang.String selectedToken, byte[] context, byte cryptoType)  
      byte[] computeDes3EcbEncryption​(org.mozilla.jss.crypto.SymmetricKey desKey, java.lang.String selectedToken, byte[] input)  
      org.mozilla.jss.crypto.SymmetricKey computeKEKKey_SCP01​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, byte[] devKeyArray, java.lang.String useSoftToken_s, java.lang.String keySet, java.lang.String transportKeyName)  
      byte[] computeKeyCheck​(org.mozilla.jss.crypto.SymmetricKey desKey, java.lang.String selectedToken)  
      byte[] computeKeyCheck_SCP03​(org.mozilla.jss.crypto.SymmetricKey symKey, java.lang.String selectedToken)  
      byte[] computeMAC_SCP01​(org.mozilla.jss.crypto.SymmetricKey symKey, byte[] input, byte[] icv, java.lang.String selectedToken)  
      org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP01​(java.lang.String keyType, java.lang.String selectedToken, java.lang.String keyNickName, byte[] card_challenge, byte[] host_challenge, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, byte[] devKeyArray, java.lang.String useSoftToken_s, java.lang.String keySet, java.lang.String transportKeyName)  
      org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP02​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, byte[] macKeyArray, byte[] sequenceCounter, byte[] derivationConstant, java.lang.String useSoftToken_s, java.lang.String keySet, java.lang.String transportKeyName)  
      org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP03​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] keyInfo, java.lang.String keyType, byte[] devKeyArray, java.lang.String keySet, byte[] xCUID, byte[] xKDD, byte[] host_challenge, byte[] card_challenge, java.lang.String transportKeyName, GPParams params)  
      static void debugByteArray​(byte[] array, java.lang.String message)  
      static void displayByteArray​(byte[] ba, boolean has_check_sum)  
      byte[] diversifyKey​(java.lang.String tokenName, java.lang.String newTokenName, java.lang.String oldMasterKeyName, java.lang.String newMasterKeyName, byte[] oldKeyInfo, byte[] newKeyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] CUIDValue, byte[] KDD, byte[] kekKeyArray, byte[] encKeyArray, byte[] macKeyArray, java.lang.String useSoftToken, java.lang.String keySet, byte protocol, GPParams params)  
      byte[] ecbEncrypt​(org.mozilla.jss.crypto.SymmetricKey devKey, org.mozilla.jss.crypto.SymmetricKey symKey, java.lang.String selectedToken)  
      byte[] encryptData​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] data, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, byte[] kekKeyArray, java.lang.String useSoftToken_s, java.lang.String keySet)  
      byte[] encryptData_SCP03​(java.lang.String selectedToken, java.lang.String keyNickName, byte[] data, byte[] keyInfo, byte nistSP800_108KdfOnKeyVersion, boolean nistSP800_108KdfUseCuidAsKdd, byte[] xCUID, byte[] xKDD, byte[] kekKeyArray, java.lang.String useSoftToken_s, java.lang.String keySet, GPParams params)  
      org.mozilla.jss.crypto.SymmetricKey extractDes2FromDes3​(org.mozilla.jss.crypto.SymmetricKey baseKey, java.lang.String selectedToken)  
      org.mozilla.jss.crypto.SymmetricKey generateSymKey​(java.lang.String selectedToken)  
      org.mozilla.jss.CryptoManager getCryptoManger()  
      static java.lang.String getHexString​(byte[] bytes)  
      int getProtocol()  
      org.mozilla.jss.crypto.SymmetricKey getSharedSecretKey​(org.mozilla.jss.crypto.CryptoToken token)  
      static java.lang.String getSharedSecretKeyName​(java.lang.String name)  
      static org.mozilla.jss.crypto.SymmetricKey getSymKeyByName​(org.mozilla.jss.crypto.CryptoToken token, java.lang.String name)  
      static byte[] longToBytes​(long x)  
      static byte[] makeDes3FromDes2​(byte[] des2)  
      org.mozilla.jss.crypto.SymmetricKey makeDes3KeyDerivedFromDes2​(org.mozilla.jss.crypto.SymmetricKey des3Key, java.lang.String selectedToken)  
      org.mozilla.jss.crypto.SymmetricKey returnDeveloperSymKey​(org.mozilla.jss.crypto.CryptoToken token, java.lang.String keyType, java.lang.String keySet, byte[] inputKeyArray, java.lang.String keyAlg)  
      org.mozilla.jss.crypto.CryptoToken returnTokenByName​(java.lang.String name, org.mozilla.jss.CryptoManager manager)  
      static void setDefaultPrefix​(java.lang.String masterkeyPrefix)  
      static java.lang.String setSharedSecretKeyName​(java.lang.String name)  
      org.mozilla.jss.crypto.SymmetricKey unwrapAESSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token, byte[] inputKeyArray, boolean isPerm)  
      org.mozilla.jss.crypto.SymmetricKey unwrapAESSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token, org.mozilla.jss.crypto.SymmetricKey keyToUnwrap, boolean isPerm)  
      org.mozilla.jss.crypto.SymmetricKey unwrapSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token, byte[] inputKeyArray, boolean isPerm)  
      org.mozilla.jss.crypto.SymmetricKey unwrapSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token, org.mozilla.jss.crypto.SymmetricKey unwrappingKey, byte[] inputKeyArray, boolean isPerm, org.mozilla.jss.crypto.SymmetricKey.Type finalKeyType)  
      org.mozilla.jss.crypto.SymmetricKey unwrapWrappedSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token, org.mozilla.jss.crypto.SymmetricKey unwrappingKey, byte[] inputKeyArray, boolean isPerm, org.mozilla.jss.crypto.SymmetricKey.Type keyType)  
      byte[] wrapSessionKey​(java.lang.String tokenName, org.mozilla.jss.crypto.SymmetricKey sessionKey, org.mozilla.jss.crypto.SymmetricKey wrappingKey)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SecureChannelProtocol

        public SecureChannelProtocol()
      • SecureChannelProtocol

        public SecureChannelProtocol​(int theProtocol)
    • Method Detail

      • computeCryptogram_SCP01

        public byte[] computeCryptogram_SCP01​(java.lang.String selectedToken,
                                              java.lang.String keyNickName,
                                              byte[] card_challenge,
                                              byte[] host_challenge,
                                              byte[] keyInfo,
                                              byte nistSP800_108KdfOnKeyVersion,
                                              boolean nistSP800_108KdfUseCuidAsKdd,
                                              byte[] xCUID,
                                              byte[] xKDD,
                                              int cryptogramType,
                                              byte[] authKeyArray,
                                              java.lang.String useSoftToken_s,
                                              java.lang.String keySet,
                                              java.lang.String transportKeyName)
                                       throws EBaseException
        Throws:
        EBaseException
      • computeSessionKey_SCP02

        public org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP02​(java.lang.String selectedToken,
                                                                           java.lang.String keyNickName,
                                                                           byte[] keyInfo,
                                                                           byte nistSP800_108KdfOnKeyVersion,
                                                                           boolean nistSP800_108KdfUseCuidAsKdd,
                                                                           byte[] xCUID,
                                                                           byte[] xKDD,
                                                                           byte[] macKeyArray,
                                                                           byte[] sequenceCounter,
                                                                           byte[] derivationConstant,
                                                                           java.lang.String useSoftToken_s,
                                                                           java.lang.String keySet,
                                                                           java.lang.String transportKeyName)
                                                                    throws EBaseException
        Throws:
        EBaseException
      • getProtocol

        public int getProtocol()
      • computeSessionKey_SCP03

        public org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP03​(java.lang.String selectedToken,
                                                                           java.lang.String keyNickName,
                                                                           byte[] keyInfo,
                                                                           java.lang.String keyType,
                                                                           byte[] devKeyArray,
                                                                           java.lang.String keySet,
                                                                           byte[] xCUID,
                                                                           byte[] xKDD,
                                                                           byte[] host_challenge,
                                                                           byte[] card_challenge,
                                                                           java.lang.String transportKeyName,
                                                                           GPParams params)
                                                                    throws EBaseException
        Throws:
        EBaseException
      • computeKEKKey_SCP01

        public org.mozilla.jss.crypto.SymmetricKey computeKEKKey_SCP01​(java.lang.String selectedToken,
                                                                       java.lang.String keyNickName,
                                                                       byte[] keyInfo,
                                                                       byte nistSP800_108KdfOnKeyVersion,
                                                                       boolean nistSP800_108KdfUseCuidAsKdd,
                                                                       byte[] xCUID,
                                                                       byte[] xKDD,
                                                                       byte[] devKeyArray,
                                                                       java.lang.String useSoftToken_s,
                                                                       java.lang.String keySet,
                                                                       java.lang.String transportKeyName)
                                                                throws EBaseException
        Throws:
        EBaseException
      • computeSessionKey_SCP01

        public org.mozilla.jss.crypto.SymmetricKey computeSessionKey_SCP01​(java.lang.String keyType,
                                                                           java.lang.String selectedToken,
                                                                           java.lang.String keyNickName,
                                                                           byte[] card_challenge,
                                                                           byte[] host_challenge,
                                                                           byte[] keyInfo,
                                                                           byte nistSP800_108KdfOnKeyVersion,
                                                                           boolean nistSP800_108KdfUseCuidAsKdd,
                                                                           byte[] xCUID,
                                                                           byte[] xKDD,
                                                                           byte[] devKeyArray,
                                                                           java.lang.String useSoftToken_s,
                                                                           java.lang.String keySet,
                                                                           java.lang.String transportKeyName)
                                                                    throws EBaseException
        Throws:
        EBaseException
      • getSharedSecretKey

        public org.mozilla.jss.crypto.SymmetricKey getSharedSecretKey​(org.mozilla.jss.crypto.CryptoToken token)
                                                               throws EBaseException
        Throws:
        EBaseException
      • getSharedSecretKeyName

        public static java.lang.String getSharedSecretKeyName​(java.lang.String name)
                                                       throws EBaseException
        Throws:
        EBaseException
      • setSharedSecretKeyName

        public static java.lang.String setSharedSecretKeyName​(java.lang.String name)
                                                       throws EBaseException
        Throws:
        EBaseException
      • returnDeveloperSymKey

        public org.mozilla.jss.crypto.SymmetricKey returnDeveloperSymKey​(org.mozilla.jss.crypto.CryptoToken token,
                                                                         java.lang.String keyType,
                                                                         java.lang.String keySet,
                                                                         byte[] inputKeyArray,
                                                                         java.lang.String keyAlg)
                                                                  throws EBaseException
        Throws:
        EBaseException
      • unwrapAESSymKeyOnToken

        public org.mozilla.jss.crypto.SymmetricKey unwrapAESSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token,
                                                                          byte[] inputKeyArray,
                                                                          boolean isPerm)
                                                                   throws EBaseException
        Throws:
        EBaseException
      • unwrapAESSymKeyOnToken

        public org.mozilla.jss.crypto.SymmetricKey unwrapAESSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token,
                                                                          org.mozilla.jss.crypto.SymmetricKey keyToUnwrap,
                                                                          boolean isPerm)
                                                                   throws EBaseException
        Throws:
        EBaseException
      • unwrapSymKeyOnToken

        public org.mozilla.jss.crypto.SymmetricKey unwrapSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token,
                                                                       org.mozilla.jss.crypto.SymmetricKey unwrappingKey,
                                                                       byte[] inputKeyArray,
                                                                       boolean isPerm,
                                                                       org.mozilla.jss.crypto.SymmetricKey.Type finalKeyType)
                                                                throws EBaseException
        Throws:
        EBaseException
      • unwrapWrappedSymKeyOnToken

        public org.mozilla.jss.crypto.SymmetricKey unwrapWrappedSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token,
                                                                              org.mozilla.jss.crypto.SymmetricKey unwrappingKey,
                                                                              byte[] inputKeyArray,
                                                                              boolean isPerm,
                                                                              org.mozilla.jss.crypto.SymmetricKey.Type keyType)
                                                                       throws EBaseException
        Throws:
        EBaseException
      • unwrapSymKeyOnToken

        public org.mozilla.jss.crypto.SymmetricKey unwrapSymKeyOnToken​(org.mozilla.jss.crypto.CryptoToken token,
                                                                       byte[] inputKeyArray,
                                                                       boolean isPerm)
                                                                throws EBaseException
        Throws:
        EBaseException
      • getSymKeyByName

        public static org.mozilla.jss.crypto.SymmetricKey getSymKeyByName​(org.mozilla.jss.crypto.CryptoToken token,
                                                                          java.lang.String name)
                                                                   throws EBaseException
        Throws:
        EBaseException
      • returnTokenByName

        public org.mozilla.jss.crypto.CryptoToken returnTokenByName​(java.lang.String name,
                                                                    org.mozilla.jss.CryptoManager manager)
                                                             throws org.mozilla.jss.NoSuchTokenException,
                                                                    org.mozilla.jss.NotInitializedException
        Throws:
        org.mozilla.jss.NoSuchTokenException
        org.mozilla.jss.NotInitializedException
      • makeDes3FromDes2

        public static byte[] makeDes3FromDes2​(byte[] des2)
      • debugByteArray

        public static void debugByteArray​(byte[] array,
                                          java.lang.String message)
      • displayByteArray

        public static void displayByteArray​(byte[] ba,
                                            boolean has_check_sum)
      • getHexString

        public static java.lang.String getHexString​(byte[] bytes)
      • longToBytes

        public static byte[] longToBytes​(long x)
      • generateSymKey

        public org.mozilla.jss.crypto.SymmetricKey generateSymKey​(java.lang.String selectedToken)
                                                           throws EBaseException
        Throws:
        EBaseException
      • ecbEncrypt

        public byte[] ecbEncrypt​(org.mozilla.jss.crypto.SymmetricKey devKey,
                                 org.mozilla.jss.crypto.SymmetricKey symKey,
                                 java.lang.String selectedToken)
                          throws EBaseException
        Throws:
        EBaseException
      • makeDes3KeyDerivedFromDes2

        public org.mozilla.jss.crypto.SymmetricKey makeDes3KeyDerivedFromDes2​(org.mozilla.jss.crypto.SymmetricKey des3Key,
                                                                              java.lang.String selectedToken)
                                                                       throws EBaseException
        Throws:
        EBaseException
      • extractDes2FromDes3

        public org.mozilla.jss.crypto.SymmetricKey extractDes2FromDes3​(org.mozilla.jss.crypto.SymmetricKey baseKey,
                                                                       java.lang.String selectedToken)
                                                                throws EBaseException
        Throws:
        EBaseException
      • wrapSessionKey

        public byte[] wrapSessionKey​(java.lang.String tokenName,
                                     org.mozilla.jss.crypto.SymmetricKey sessionKey,
                                     org.mozilla.jss.crypto.SymmetricKey wrappingKey)
                              throws EBaseException
        Throws:
        EBaseException
      • computeAES_CBCEncryption

        public byte[] computeAES_CBCEncryption​(org.mozilla.jss.crypto.SymmetricKey symKey,
                                               java.lang.String selectedToken,
                                               byte[] input,
                                               byte[] iv)
                                        throws EBaseException
        Throws:
        EBaseException
      • computeDes3EcbEncryption

        public byte[] computeDes3EcbEncryption​(org.mozilla.jss.crypto.SymmetricKey desKey,
                                               java.lang.String selectedToken,
                                               byte[] input)
                                        throws EBaseException
        Throws:
        EBaseException
      • computeKeyCheck_SCP03

        public byte[] computeKeyCheck_SCP03​(org.mozilla.jss.crypto.SymmetricKey symKey,
                                            java.lang.String selectedToken)
                                     throws EBaseException
        Throws:
        EBaseException
      • computeCryptogram_SCP03

        public byte[] computeCryptogram_SCP03​(org.mozilla.jss.crypto.SymmetricKey symKey,
                                              java.lang.String selectedToken,
                                              byte[] context,
                                              byte cryptoType)
                                       throws EBaseException
        Throws:
        EBaseException
      • computeKeyCheck

        public byte[] computeKeyCheck​(org.mozilla.jss.crypto.SymmetricKey desKey,
                                      java.lang.String selectedToken)
                               throws EBaseException
        Throws:
        EBaseException
      • computeMAC_SCP01

        public byte[] computeMAC_SCP01​(org.mozilla.jss.crypto.SymmetricKey symKey,
                                       byte[] input,
                                       byte[] icv,
                                       java.lang.String selectedToken)
                                throws EBaseException
        Throws:
        EBaseException
      • diversifyKey

        public byte[] diversifyKey​(java.lang.String tokenName,
                                   java.lang.String newTokenName,
                                   java.lang.String oldMasterKeyName,
                                   java.lang.String newMasterKeyName,
                                   byte[] oldKeyInfo,
                                   byte[] newKeyInfo,
                                   byte nistSP800_108KdfOnKeyVersion,
                                   boolean nistSP800_108KdfUseCuidAsKdd,
                                   byte[] CUIDValue,
                                   byte[] KDD,
                                   byte[] kekKeyArray,
                                   byte[] encKeyArray,
                                   byte[] macKeyArray,
                                   java.lang.String useSoftToken,
                                   java.lang.String keySet,
                                   byte protocol,
                                   GPParams params)
                            throws EBaseException
        Throws:
        EBaseException
      • setDefaultPrefix

        public static void setDefaultPrefix​(java.lang.String masterkeyPrefix)
      • encryptData_SCP03

        public byte[] encryptData_SCP03​(java.lang.String selectedToken,
                                        java.lang.String keyNickName,
                                        byte[] data,
                                        byte[] keyInfo,
                                        byte nistSP800_108KdfOnKeyVersion,
                                        boolean nistSP800_108KdfUseCuidAsKdd,
                                        byte[] xCUID,
                                        byte[] xKDD,
                                        byte[] kekKeyArray,
                                        java.lang.String useSoftToken_s,
                                        java.lang.String keySet,
                                        GPParams params)
                                 throws EBaseException
        Throws:
        EBaseException
      • encryptData

        public byte[] encryptData​(java.lang.String selectedToken,
                                  java.lang.String keyNickName,
                                  byte[] data,
                                  byte[] keyInfo,
                                  byte nistSP800_108KdfOnKeyVersion,
                                  boolean nistSP800_108KdfUseCuidAsKdd,
                                  byte[] xCUID,
                                  byte[] xKDD,
                                  byte[] kekKeyArray,
                                  java.lang.String useSoftToken_s,
                                  java.lang.String keySet)
                           throws EBaseException
        Throws:
        EBaseException