Blame test-crypt-sha256.c

Packit 13e0ca
#include "crypt-port.h"
Packit 13e0ca
#include "crypt-base.h"
Packit 13e0ca
Packit 13e0ca
#include <stdio.h>
Packit 13e0ca
Packit 13e0ca
#if INCLUDE_sha256
Packit 13e0ca
Packit 13e0ca
static const struct
Packit 13e0ca
{
Packit 13e0ca
  const char *salt;
Packit 13e0ca
  const char *input;
Packit 13e0ca
  const char *expected;
Packit 13e0ca
} tests[] =
Packit 13e0ca
{
Packit 13e0ca
  {
Packit 13e0ca
    "$5$saltstring", "Hello world!",
Packit 13e0ca
    "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5"
Packit 13e0ca
  },
Packit 13e0ca
  /* explicit specification of rounds=5000 should be allowed and preserved */
Packit 13e0ca
  {
Packit 13e0ca
    "$5$rounds=5000$saltstring", "Hello world!",
Packit 13e0ca
    "$5$rounds=5000$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5"
Packit 13e0ca
  },
Packit 13e0ca
  {
Packit 13e0ca
    "$5$rounds=10000$saltstringsaltstring", "Hello world!",
Packit 13e0ca
    "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2."
Packit 13e0ca
    "opqey6IcA"
Packit 13e0ca
  },
Packit 13e0ca
  {
Packit 13e0ca
    "$5$rounds=1400$anotherlongsaltstring",
Packit 13e0ca
    "a very much longer text to encrypt.  This one even stretches over more"
Packit 13e0ca
    "than one line.",
Packit 13e0ca
    "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12"
Packit 13e0ca
    "oP84Bnq1"
Packit 13e0ca
  },
Packit 13e0ca
  {
Packit 13e0ca
    "$5$rounds=77777$short",
Packit 13e0ca
    "we have a short salt string but not a short password",
Packit 13e0ca
    "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/"
Packit 13e0ca
  },
Packit 13e0ca
  {
Packit 13e0ca
    "$5$rounds=123456$asaltof16chars..", "a short string",
Packit 13e0ca
    "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/"
Packit 13e0ca
    "cZKmF/wJvD"
Packit 13e0ca
  },
Packit 13e0ca
};
Packit 13e0ca
Packit 13e0ca
#define ntests ARRAY_SIZE (tests)
Packit 13e0ca
Packit 13e0ca
Packit 13e0ca
Packit 13e0ca
int
Packit 13e0ca
main (void)
Packit 13e0ca
{
Packit 13e0ca
  struct crypt_data output;
Packit 13e0ca
  int result = 0;
Packit 13e0ca
  unsigned int i;
Packit 13e0ca
Packit 13e0ca
  for (i = 0; i < ntests; ++i)
Packit 13e0ca
    {
Packit 13e0ca
      char *cp = crypt_r (tests[i].input, tests[i].salt, &output);
Packit 13e0ca
Packit 13e0ca
      if (strcmp (cp, tests[i].expected) != 0)
Packit 13e0ca
        {
Packit 13e0ca
          printf ("test %u: expected \"%s\", got \"%s\"\n",
Packit 13e0ca
                  i, tests[i].expected, cp);
Packit 13e0ca
          result = 1;
Packit 13e0ca
        }
Packit 13e0ca
    }
Packit 13e0ca
Packit 13e0ca
  return result;
Packit 13e0ca
}
Packit 13e0ca
Packit 13e0ca
#else
Packit 13e0ca
Packit 13e0ca
int
Packit 13e0ca
main (void)
Packit 13e0ca
{
Packit 13e0ca
  return 77; /* UNSUPPORTED */
Packit 13e0ca
}
Packit 13e0ca
Packit 13e0ca
#endif