#define CCA_PVT_EXT_CRT_SEC_FMT_CL 0x40
 
 /**
- * Set up private key fields of a type6 MEX message. The _pad variant
- * strips leading zeroes from the b_key.
- * Note that all numerics in the key token are big-endian,
- * while the entries in the key block header are little-endian.
+ * Set up private key fields of a type6 MEX message.
  *
  * @mex: pointer to user input data
  * @p: pointer to memory area for the key
                struct t6_keyblock_hdr t6_hdr;
                struct cca_token_hdr pubhdr;
                struct cca_public_sec pubsec;
-               char exponent[0];
+               char exponent[];
        } __packed *key = p;
-       unsigned char *temp;
-       int i;
+       unsigned char *ptr;
 
        /*
         * The inputdatalength was a selection criteria in the dispatching
        key->pubsec = static_pub_sec;
 
        /* key parameter block */
-       temp = key->exponent;
-       if (copy_from_user(temp, mex->b_key, mex->inputdatalength))
+       ptr = key->exponent;
+       if (copy_from_user(ptr, mex->b_key, mex->inputdatalength))
                return -EFAULT;
-       /* Strip leading zeroes from b_key. */
-       for (i = 0; i < mex->inputdatalength; i++)
-               if (temp[i])
-                       break;
-       if (i >= mex->inputdatalength)
-               return -EINVAL;
-       memmove(temp, temp + i, mex->inputdatalength - i);
-       temp += mex->inputdatalength - i;
+       ptr += mex->inputdatalength;
        /* modulus */
-       if (copy_from_user(temp, mex->n_modulus, mex->inputdatalength))
+       if (copy_from_user(ptr, mex->n_modulus, mex->inputdatalength))
                return -EFAULT;
 
        key->pubsec.modulus_bit_len = 8 * mex->inputdatalength;
        key->pubsec.modulus_byte_len = mex->inputdatalength;
-       key->pubsec.exponent_len = mex->inputdatalength - i;
+       key->pubsec.exponent_len = mex->inputdatalength;
        key->pubsec.section_length = sizeof(key->pubsec) +
-                                       2 * mex->inputdatalength - i;
+                                       2 * mex->inputdatalength;
        key->pubhdr.token_length =
                key->pubsec.section_length + sizeof(key->pubhdr);
        key->t6_hdr.ulen = key->pubhdr.token_length + 4;
        key->t6_hdr.blen = key->pubhdr.token_length + 6;
-       return sizeof(*key) + 2 * mex->inputdatalength - i;
+
+       return sizeof(*key) + 2 * mex->inputdatalength;
 }
 
 /**
  * Set up private key fields of a type6 CRT message.
- * Note that all numerics in the key token are big-endian,
- * while the entries in the key block header are little-endian.
  *
  * @mex: pointer to user input data
  * @p: pointer to memory area for the key
         * used.
         */
        memcpy((char *)(pub + 1), pk_exponent, 3);
+
        return size;
 }