コード例 #1
0
bool OpensslManager::HashString(Openssl_Hash algorithm, unsigned char *input, int size, unsigned char *output, int *outlength)
{
	switch(algorithm)
	{
		case Openssl_Hash_MD5:
			MD5(input, size, output);
			*outlength = MD5_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_MD4:
			MD4(input, size, output);
			*outlength = MD4_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_MD2:
			MD2(input, size, output);
			*outlength = MD2_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA:
			SHA(input, size, output);
			*outlength = SHA_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA1:
			SHA1(input, size, output);
			*outlength = SHA_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA224:
			SHA224(input, size, output);
			*outlength = SHA224_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA256:
			SHA256(input, size, output);
			*outlength = SHA256_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA384:
			SHA384(input, size, output);
			*outlength = SHA384_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_SHA512:
			SHA512(input, size, output);
			*outlength = SHA512_DIGEST_LENGTH;
			return true;
		case Openssl_Hash_RIPEMD160:
			RIPEMD160(input, size, output);
			*outlength = RIPEMD160_DIGEST_LENGTH;
			return true;
	}

	return false;
}
コード例 #2
0
ファイル: sha_drv.c プロジェクト: Dumbris/MongooseIM
static ErlDrvSSizeT sha_drv_control(ErlDrvData handle,
			   unsigned int command,
			   char *buf, ErlDrvSizeT len,
			   char **rbuf, ErlDrvSizeT rlen)
{
  ErlDrvBinary *b = NULL;

  switch (command) {
#ifdef HAVE_MD2
  case 2:
    rlen = MD2_DIGEST_LENGTH;
    b = driver_alloc_binary(rlen);
    if (b) MD2((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
    break;
#endif
  case 224:
    rlen = SHA224_DIGEST_LENGTH;
    b = driver_alloc_binary(rlen);
    if (b) SHA224((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
    break;
  case 256:
    rlen = SHA256_DIGEST_LENGTH;
    b = driver_alloc_binary(rlen);
    if (b) SHA256((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
    break;
  case 384:
    rlen = SHA384_DIGEST_LENGTH;
    b = driver_alloc_binary(rlen);
    if (b) SHA384((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
    break;
  case 512:
    rlen = SHA512_DIGEST_LENGTH;
    b = driver_alloc_binary(rlen);
    if (b) SHA512((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
    break;
  };

  if (b) {
    *rbuf = (char *)b;
  } else {
    *rbuf = NULL;
    rlen = 0;
  };

  return rlen;
}
コード例 #3
0
ファイル: HashClass.cpp プロジェクト: radixvinni/aal
void Hash::MD2_Generate(FILE *hashfile)
{
   MD2(hashfile,digest);
}
コード例 #4
0
ファイル: test_matrix.cpp プロジェクト: alxempirical/crosscat
int main(int argc, char **argv) {
    const size_t n = 42, m = 87;
    matrix<std::pair<size_t, size_t> > M(n, m);
    size_t i, j;

    // Confirm sizes make sense.
    assert(M.size1() == n);
    assert(M.size2() == m);

    // Confirm storing values works.
    for (i = 0; i < n; i++)
	for (j = 0; j < m; j++)
	    M(i, j) = std::make_pair<size_t, size_t>(i, j);

    // Confirm retrieving values in another order works.
    for (i = n; 0 < i--;) {
	for (j = m; 0 < j--;) {
	    assert(M(i, j).first == i);
	    assert(M(i, j).second == j);
	}
    }

    // Confirm copying works.
    matrix<std::pair<size_t, size_t> > N = M;
    assert(N.size1() == n);
    assert(N.size2() == m);
    for (i = 0; i < n; i++) {
	for (j = 0; j < m; j++) {
	    assert(N(i, j).first == i);
	    assert(N(i, j).second == j);
	}
    }

    // Confirm assigning works.
    M = matrix<std::pair<size_t, size_t> >(1, 1);
    assert(M.size1() == 1);
    assert(M.size2() == 1);
    M(0, 0) = std::make_pair<size_t, size_t>(123456789, 8);
    assert(M(0, 0).first == 123456789);
    assert(M(0, 0).second == 8);

    // Confirm it did not affect the copy.
    assert(N.size1() == n);
    assert(N.size2() == m);
    for (i = 0; i < n; i++) {
	for (j = 0; j < m; j++) {
	    assert(N(i, j).first == i);
	    assert(N(i, j).second == j);
	}
    }

    // Confirm MatrixD = matrix<double> by confirming the pointer
    // types are compatible.
    matrix<double> MD0(42, 42);
    MatrixD &MD1 = MD0;
    assert(&MD1 == &MD0);

    // Confirm overflow detection.
    try {
	const size_t size_max = std::numeric_limits<size_t>::max();
	MatrixD MD2(size_max, size_max);
    } catch (std::bad_alloc &ba) {
    }
    return 0;
}
コード例 #5
0
ファイル: crypto.c プロジェクト: Hobbitron/tmi2_fluffos_v3
void f_hash(void)
{
    const char *algo;
        const char *data;
        char *res;
        
        algo = (sp - 1)->u.string;
        data = sp->u.string;
        
        /* MD2 Digest */
        if (strcasecmp(algo, (const char *)"md2") == 0)
        {
            unsigned char md[MD2_DIGEST_LENGTH];
                MD2((unsigned char *)data, strlen(data), md);
                res = hexdump(md, MD2_DIGEST_LENGTH);
        }
    
        /* MD4 Digest */
        else if (strcasecmp(algo, (const char *)"md4") == 0)
        {
            unsigned char md[MD4_DIGEST_LENGTH];
                MD4((unsigned char *)data, strlen(data), md);      
                res = hexdump(md, MD4_DIGEST_LENGTH);      
        }
    
        /* MD5 Digest */
        else if (strcasecmp(algo, (const char *)"md5") == 0)
        {
            unsigned char md[MD5_DIGEST_LENGTH];
                MD5((unsigned char *)data, strlen(data), md);      
                res = hexdump(md, MD5_DIGEST_LENGTH);      
        }
    
        /* MDC2 Digest */
        else if (strcasecmp(algo, (const char *)"mdc2") == 0)
        {
            unsigned char md[MDC2_DIGEST_LENGTH];
                MDC2((unsigned char *)data, strlen(data), md);      
                res = hexdump(md, MDC2_DIGEST_LENGTH);      
        }
    
        /* RIPEMD160 Digest */
        else if (strcasecmp(algo, (const char *)"ripemd160") == 0)
        {
            unsigned char md[RIPEMD160_DIGEST_LENGTH];
                RIPEMD160((unsigned char *)data, strlen(data), md);      
                res = hexdump(md, RIPEMD160_DIGEST_LENGTH);      
        }
    
        /* SHA1 Digest */
        else if (strcasecmp(algo, (const char *)"sha1") == 0)
        {
            unsigned char md[SHA_DIGEST_LENGTH];
                SHA1((unsigned char *)data, strlen(data), md);
                res = hexdump(md, SHA_DIGEST_LENGTH);
        }
    
        else
        {
            pop_stack();
                res = malloc(29 + strlen(algo));
                sprintf(res, "hash() unknown hash type: %s.\n", algo);
                error(res);
        }
    
        /* Pop the arguments off the stack and push the result */
        free_string_svalue(sp--);
        free_string_svalue(sp);
        
        sp->subtype = STRING_MALLOC;
        sp->u.string = res;
}