[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/interface/service/crypto/crypto_struct.h b/mcu/interface/service/crypto/crypto_struct.h
new file mode 100644
index 0000000..e0d9d76
--- /dev/null
+++ b/mcu/interface/service/crypto/crypto_struct.h
@@ -0,0 +1,405 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2012
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *   crypto_struct.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Defines crypto engine service ILM structure
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$ *
+ * 
+ * 
+ ****************************************************************************/
+#ifndef __CRYPTO_STRUCT_H__
+#define __CRYPTO_STRUCT_H__
+
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+#include "kal_general_types.h"
+
+typedef enum{
+    CAL_EC_CURVE_START,
+    CAL_EC_CURVE_NSIT_P_256 = CAL_EC_CURVE_START,   /* NID_X9_62_prime256v1 */
+    CAL_EC_CURVE_NSIT_P_384,                        /* NID_secp384r1 */
+    CAL_EC_CURVE_NSIT_P_521,                        /* NID_secp521r1 */
+    CAL_EC_CURVE_END
+}cal_ec_named_curves_t;
+
+
+typedef enum{
+    CAL_PKEY_TYPE_START,
+    CAL_PKEY_TYPE_DH = CAL_PKEY_TYPE_START,
+    CAL_PKEY_TYPE_RSA,
+    CAL_PKEY_TYPE_DSA,
+    CAL_PKEY_TYPE_EC,
+    CAL_PKEY_TYPE_END
+}cal_pkey_types_t;
+
+typedef struct
+{
+    kal_int32          data_len;
+    kal_int32          key_len;
+    kal_int32          iv_len;
+    kal_int32          aad_len;
+    kal_int32          tag_len;
+    kal_uint8          *data;      /* Plain text */
+    kal_uint8          *key;
+    kal_uint8          *iv;        /* Initialization vector */
+    kal_uint8          *aad;       /* Additional Authentical Data */
+} cipher_encrypt_in_para_struct;
+
+typedef struct{
+    kal_int32          tag_len;
+    kal_uint8          *data;
+    kal_uint8          *tag;
+} cipher_encrypt_out_para_struct;
+
+typedef struct
+{
+    kal_int32          data_len;
+    kal_int32          key_len;
+    kal_int32          iv_len;
+    kal_int32          aad_len;
+    kal_int32          tag_len;
+    kal_uint8          *data;      /* Encrypted text */
+    kal_uint8          *key;
+    kal_uint8          *iv;        /* Initialization vector */
+    kal_uint8          *aad;       /* Additional Authentical Data */
+    kal_uint8          *tag;
+} cipher_decrypt_in_para_struct;
+
+typedef struct{
+    kal_uint8          *data;
+} cipher_decrypt_out_para_struct;
+
+
+typedef struct{
+    kal_int32          data_len;
+    kal_int32          key_len;
+    kal_uint8          *data;      /* Plain text */
+    kal_uint8          *key;
+} generate_hmac_in_para_struct;
+
+typedef struct{
+    kal_uint8          *data;
+} generate_hmac_out_para_struct;
+
+typedef generate_hmac_in_para_struct generate_prn_in_para_struct;
+typedef generate_hmac_out_para_struct generate_prn_out_para_struct;
+
+typedef struct{
+    kal_int32          message_len;
+    kal_uint8          *message;
+} message_digest_in_para_struct;
+
+typedef struct{
+    kal_uint32          digest_len;
+    kal_uint8          *digest;
+} message_digest_out_para_struct;
+
+typedef struct{
+    kal_int32          message_len;
+    kal_int32          key_len;
+    kal_uint8          *message;      /* Plain text */
+    kal_uint8          *key;
+
+} pkey_generate_cmac_in_para_struct;
+
+typedef struct{
+    kal_int32          mac_len;
+    kal_uint8          *mac;
+} pkey_generate_cmac_out_para_struct;
+
+typedef struct{
+    kal_uint32         scheme;       /* Signature scheme cal_signature_scheme_type_t */
+    kal_int32          pubkey_len;
+    kal_int32          pubkey_exp_len;
+    kal_int32          msg_len;
+    kal_int32          signature_len;
+    kal_uint8          *pubkey;     /* For ECDSA : Public key, For RSA : RSA modulus */
+    kal_uint8          *pubkey_exp; /* For ECDSA : NULL, For RSA : RSA public exponent */
+    kal_uint8          *msg;
+    kal_uint8          *signature;
+} pkey_verify_signature_in_para_struct;
+
+typedef struct{
+    kal_int32          p_len;
+    kal_int32          g_len;
+    kal_uint8          *p;
+    kal_uint8          *g;
+} pkey_generate_dh_key_in_para_struct;
+
+typedef struct
+{
+    kal_int32          pub_len;
+    void               *dh;
+    kal_uint8          *pub;
+} pkey_generate_dh_key_out_para_struct;
+
+typedef struct
+{
+    kal_int32          peer_pub_len;
+    void               *dh;
+    kal_uint8          *peer_pub;
+} pkey_compute_dh_secret_in_struct;
+
+typedef struct
+{
+    kal_int32          secret_len;
+    kal_uint8          *secret;
+} pkey_compute_dh_secret_out_struct;
+
+/************************************************** 
+ *  CRYPTO ilm struct
+ **************************************************/
+
+// MSG_ID_CRPTBRG_CIPHER_ENCRYPT_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                          req_id;
+    kal_uint32                          algo;       /* Crypto algorithm to be used for decryption */
+    kal_uint32                          flags;
+    cipher_encrypt_in_para_struct       in;
+    kal_uint8                           *out;       /* Cipher text */
+    kal_uint8                           *tag;       /* Tag/Digest  */
+
+} crptbrg_cipher_encrypt_req_struct;
+
+// MSG_ID_CRPTBRG_CIPHER_DECRYPT_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                          req_id;
+    kal_uint32                          algo;       /* Crypto algorithm to be used for decryption */
+    kal_uint32                          flags;
+    cipher_decrypt_in_para_struct       in;
+    kal_uint8                           *out;       /* Plain text */
+} crptbrg_cipher_decrypt_req_struct;
+
+
+// MSG_ID_CRPTBRG_GENERATE_HMAC_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32         req_id;
+    kal_uint32         algo;       /* Crypto algorithm to be used for encryption */
+    generate_hmac_in_para_struct       in;
+    kal_uint8          *out;
+} crptbrg_generate_hmac_req_struct;
+
+// MSG_ID_CRPTBRG_GENERATE_PRN_REQ
+typedef crptbrg_generate_hmac_req_struct crptbrg_generate_prn_req_struct;
+
+
+// MSG_ID_CRPTBRG_VERIFY_SIGNATURE_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                                  req_id;
+    pkey_verify_signature_in_para_struct        in;
+
+} crptbrg_verify_signature_req_struct;
+
+// MSG_ID_CRPTBRG_GENERATE_DH_KEY_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                                  req_id;
+    pkey_generate_dh_key_in_para_struct         in;
+    kal_uint8                                   *out;       /* Public key */
+
+} crptbrg_generate_dh_key_req_struct;
+
+// MSG_ID_CRPTBRG_COMPUTE_DH_SECRET_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                               req_id;
+    pkey_compute_dh_secret_in_struct         in;
+    kal_uint8                                *out;       /* Shared secret */
+
+} crptbrg_compute_dh_secret_req_struct;
+
+// MSG_ID_CRPTBRG_ABORT_DH_KEY_IND
+typedef struct
+{
+    LOCAL_PARA_HDR
+    void                                  *dh;
+} crptbrg_abort_dh_key_ind_struct;
+
+// MSG_ID_CRPTBRG_CIPHER_ENCRYPT_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                          req_id;
+    kal_int32                           out_len;
+    kal_int32                           tag_len;
+    cipher_encrypt_in_para_struct       in;         /* Input struct back to app to free memory */
+    kal_uint8                           *out;       /* Cipher text */
+    kal_uint8                           *tag;
+} crptbrg_cipher_encrypt_cnf_struct;
+
+// MSG_ID_CRPTBRG_CIPHER_DECRYPT_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                          req_id;
+    kal_int32                           out_len;
+    cipher_decrypt_in_para_struct       in;         /* Input struct back to app to free memory */
+    kal_uint8                           *out;       /* Plain text */
+} crptbrg_cipher_decrypt_cnf_struct;
+
+
+// MSG_ID_CRPTBRG_GENERATE_HMAC_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32         req_id;
+    kal_int32          out_len;
+    generate_hmac_in_para_struct       in;         /* Input struct back to app to free memory */
+    kal_uint8          *out;
+} crptbrg_generate_hmac_cnf_struct;
+
+// MSG_ID_CRPTBRG_GENERATE_PRN_CNF
+typedef crptbrg_generate_hmac_cnf_struct crptbrg_generate_prn_cnf_struct;
+
+// MSG_ID_CRPTBRG_VERIFY_SIGNATURE_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                                  req_id;
+    kal_uint32                                  out;       /* Verify success or fail; 1 : Success, everything else is fail */
+    pkey_verify_signature_in_para_struct        in;
+
+} crptbrg_verify_signature_cnf_struct;
+
+// MSG_ID_CRPTBRG_GENERATE_DH_KEY_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                                  req_id;
+    kal_int32                                   out_len;
+    pkey_generate_dh_key_in_para_struct         in;         /* Input struct back to app to free memory */
+    kal_uint8                                   *out;       /* Public key */
+    void                                        *dh;        /* Needed by CAL to compute shared secret */
+} crptbrg_generate_dh_key_cnf_struct;
+
+// MSG_ID_CRPTBRG_COMPUTE_DH_SECRET_CNF
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                               req_id;
+    kal_int32                                out_len;
+    pkey_compute_dh_secret_in_struct         in;            /* Input struct back to app to free memory */
+    kal_uint8                                *out;          /* Shared secret */
+
+} crptbrg_compute_dh_secret_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32                               req_id;
+    kal_uint32                               algo;       /* Crypto algorithm to be used for decryption */   
+    pkey_generate_cmac_in_para_struct        in;
+    kal_uint8                                *out;       /* memory for cmac*/
+} crptbrg_generate_cmac_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32                               req_id;
+    kal_int32                                out_len;
+    pkey_generate_cmac_in_para_struct        in;         /* Input struct back to app to free memory */
+    kal_uint8                                *out;       /* cmac */
+} crptbrg_generate_cmac_cnf_struct;
+
+
+
+/*********************************************************************** 
+ *  CRYPTO Internal Task ilm structs : NOT TO BE USED BY OTHER MODULES *
+ ***********************************************************************/
+
+// MSG_ID_CRYPTO_INTERNAL_GENERATE_DH_KEY_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                                  src_mod_id;
+    kal_uint32                                  req_id;
+    pkey_generate_dh_key_in_para_struct         in;
+    kal_uint8                                   *out;       /* Public key */
+
+} crypto_internal_generate_dh_key_req_struct;
+
+// MSG_ID_CRYPTO_INTERNAL_COMPUTE_DH_SECRET_REQ
+typedef struct
+{
+    LOCAL_PARA_HDR
+
+    kal_uint32                               src_mod_id;
+    kal_uint32                               req_id;
+    pkey_compute_dh_secret_in_struct         in;
+    kal_uint8                                *out;       /* Shared secret */
+
+} crypto_internal_compute_dh_secret_req_struct;
+
+
+#endif // __CRYPTO_STRUCT_H__