text: /*******************************************************************************
  * Copyright 2016-2020 Intel Corporation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *******************************************************************************/
  
  /* 
  // 
  //  Purpose:
  //     Cryptography Primitive.
  //     Security Hash Standard
  //     Generalized Functionality
  // 
  //  Contents:
  //     cpFinalize_rmf()
  // 
  */
  
  #include "owndefs.h"
  #include "owncp.h"
  #include "pcphash_rmf.h"
  #include "pcptool.h"
  
  
  void cpFinalize_rmf(DigestSHA512 pHash,
                const Ipp8u* inpBuffer, int inpLen,
                      Ipp64u lenLo, Ipp64u lenHi,
                const IppsHashMethod* method)
  {
     int mbs = method->msgBlkSize;    /* messge block size */
     int mrl = method->msgLenRepSize; /* processed length representation size */
  
     /* local buffer and it length */
     Ipp8u buffer[MBS_SHA512*2];
     int bufferLen = inpLen < (mbs-mrl)? mbs : mbs*2; 
  
     /* copy rest of message into internal buffer */
     CopyBlock(inpBuffer, buffer, inpLen);
  
     /* padd message */
     buffer[inpLen++] = 0x80;
     PadBlock(0, buffer+inpLen, bufferLen-inpLen-mrl);
  
     /* message length representation */
     method->msgLenRep(buffer+bufferLen-mrl, lenLo, lenHi);
  
     /* copmplete hash computation */
     method->hashUpdate(pHash, buffer, bufferLen);
  }
  