/******************************************************************************/ /* LICENSE: */ /* This submission to NSS is to be made available under the terms of the */ /* Mozilla Public License, v. 2.0. You can obtain one at http: */ /* //mozilla.org/MPL/2.0/. */ /******************************************************************************/ /* Copyright(c) 2013, Intel Corp. */ /******************************************************************************/ /* Reference: */ /* [1] Shay Gueron, Michael E. Kounavis: Intel(R) Carry-Less Multiplication */ /* Instruction and its Usage for Computing the GCM Mode (Rev. 2.01) */ /* http://software.intel.com/sites/default/files/article/165685/clmul-wp-r*/ /*ev-2.01-2012-09-21.pdf */ /* [2] S. Gueron, M. E. Kounavis: Efficient Implementation of the Galois */ /* Counter Mode Using a Carry-less Multiplier and a Fast Reduction */ /* Algorithm. Information Processing Letters 110: 549-553 (2010). */ /* [3] S. Gueron: AES Performance on the 2nd Generation Intel(R) Core(TM) */ /* Processor Family (to be posted) (2012). */ /* [4] S. Gueron: Fast GHASH computations for speeding up AES-GCM (to be */ /* published) (2012). */
/* Prototypes of functions in the assembler file for fast AES-GCM, using Intel AES-NI and CLMUL-NI, as described in [1] [1] Shay Gueron, Michael E. Kounavis: Intel(R) Carry-Less Multiplication
Instruction and its Usage for Computing the GCM Mode */
/* Prepares the constants used in the aggregated reduction method */ void intel_aes_gcmINIT(unsignedchar Htbl[16 * 16], unsignedchar *KS, int NR);
/* Produces the final GHASH value */ void intel_aes_gcmTAG(unsignedchar Htbl[16 * 16], unsignedchar *Tp, unsignedlong Mlen, unsignedlong Alen, unsignedchar *X0, unsignedchar *TAG);
/* Hashes the Additional Authenticated Data, should be used before enc/dec.
Operates on whole blocks only. Partial blocks should be padded externally. */ void intel_aes_gcmAAD(unsignedchar Htbl[16 * 16], unsignedchar *AAD, unsignedlong Alen, unsignedchar *Tp);
/* Encrypts and hashes the Plaintext. Operates on any length of data, however partial block should only be encrypted
at the last call, otherwise the result will be incorrect. */ void intel_aes_gcmENC(constunsignedchar *PT, unsignedchar *CT, void *Gctx, unsignedlong len);
/* Similar to ENC, but decrypts the Ciphertext. */ void intel_aes_gcmDEC(constunsignedchar *CT, unsignedchar *PT, void *Gctx, unsignedlong len);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.