int core_hash_SHA2()

in xmss_hash.c [41:69]


int core_hash_SHA2(unsigned char *out, const unsigned int type, const unsigned char *key, unsigned int keylen, const unsigned char *in, unsigned long long inlen, unsigned int n){  
  unsigned long long i = 0;
  unsigned char buf[inlen + n + keylen];
  
  // Input is (toByte(X, 32) || KEY || M) 
  
  // set toByte
  to_byte(buf, type, n);
  
  for (i=0; i < keylen; i++) {
    buf[i+n] = key[i];
  }
  
  for (i=0; i < inlen; i++) {
    buf[keylen + n + i] = in[i];
  }

  if (n == 32) {
    SHA256(buf, inlen + keylen + n, out);
    return 0;
  }
  else {
    if (n == 64) {
      SHA512(buf, inlen + keylen + n, out);
      return 0;
    }
  }
  return 1;
}