brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 7738aec Raw
115 lines · cpp
1// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s2 3#include <sys/param.h>4 5#include <assert.h>6#include <endian.h>7#include <md2.h>8#include <stdio.h>9#include <stdlib.h>10#include <string.h>11 12void test1() {13  MD2_CTX ctx;14  uint8_t entropy[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};15  uint8_t digest[MD2_DIGEST_LENGTH];16 17  MD2Init(&ctx);18  MD2Update(&ctx, entropy, __arraycount(entropy));19  MD2Final(digest, &ctx);20 21  printf("test1: '");22  for (size_t i = 0; i < __arraycount(digest); i++)23    printf("%02x", digest[i]);24  printf("'\n");25}26 27void test2() {28  MD2_CTX ctx;29  uint8_t entropy[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};30  char digest[MD2_DIGEST_STRING_LENGTH];31 32  MD2Init(&ctx);33  MD2Update(&ctx, entropy, __arraycount(entropy));34  char *p = MD2End(&ctx, digest);35  assert(p == digest);36 37  printf("test2: '%s'\n", digest);38}39 40void test3() {41  MD2_CTX ctx;42  uint8_t entropy[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};43 44  MD2Init(&ctx);45  MD2Update(&ctx, entropy, __arraycount(entropy));46  char *p = MD2End(&ctx, NULL);47  assert(strlen(p) == MD2_DIGEST_STRING_LENGTH - 1);48 49  printf("test3: '%s'\n", p);50 51  free(p);52}53 54void test4() {55  char digest[MD2_DIGEST_STRING_LENGTH];56 57  char *p = MD2File("/etc/fstab", digest);58  assert(p == digest);59 60  printf("test4: '%s'\n", p);61}62 63void test5() {64  char *p = MD2File("/etc/fstab", NULL);65  assert(strlen(p) == MD2_DIGEST_STRING_LENGTH - 1);66 67  printf("test5: '%s'\n", p);68 69  free(p);70}71 72void test6() {73  uint8_t entropy[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};74  char digest[MD2_DIGEST_STRING_LENGTH];75 76  char *p = MD2Data(entropy, __arraycount(entropy), digest);77  assert(p == digest);78 79  printf("test6: '%s'\n", p);80}81 82void test7() {83  uint8_t entropy[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};84 85  char *p = MD2Data(entropy, __arraycount(entropy), NULL);86  assert(strlen(p) == MD2_DIGEST_STRING_LENGTH - 1);87 88  printf("test7: '%s'\n", p);89 90  free(p);91}92 93int main(void) {94  printf("MD2\n");95 96  test1();97  test2();98  test3();99  test4();100  test5();101  test6();102  test7();103 104  // CHECK: MD2105  // CHECK: test1: 'e303e49b34f981c2740cdf809200d51b'106  // CHECK: test2: 'e303e49b34f981c2740cdf809200d51b'107  // CHECK: test3: 'e303e49b34f981c2740cdf809200d51b'108  // CHECK: test4: '{{.*}}'109  // CHECK: test5: '{{.*}}'110  // CHECK: test6: 'e303e49b34f981c2740cdf809200d51b'111  // CHECK: test7: 'e303e49b34f981c2740cdf809200d51b'112 113  return 0;114}115