1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
8 #include <openssl/md5.h>
9 #include <openssl/sha.h>
11 #include "include/types.h"
12 #include "objclass/objclass.h"
17 int md5_method(cls_method_context_t ctx
, char *indata
, int datalen
,
18 char **outdata
, int *outdatalen
)
23 cls_log("md5 method");
24 cls_log("indata=%.*s data_len=%d", datalen
, indata
, datalen
);
26 md
= (unsigned char *)cls_alloc(MD5_DIGEST_LENGTH
);
31 MD5_Update(&c
, indata
, (unsigned long)datalen
);
34 *outdata
= (char *)md
;
35 *outdatalen
= MD5_DIGEST_LENGTH
;
40 int sha1_method(cls_method_context_t ctx
, char *indata
, int datalen
,
41 char **outdata
, int *outdatalen
)
46 cls_log("sha1 method");
47 cls_log("indata=%.*s data_len=%d", datalen
, indata
, datalen
);
49 md
= (unsigned char *)cls_alloc(SHA_DIGEST_LENGTH
);
54 SHA1_Update(&c
, indata
, (unsigned long)datalen
);
57 *outdata
= (char *)md
;
58 *outdatalen
= SHA_DIGEST_LENGTH
;
65 cls_log("Loaded crypto class!");
68 cls_method_handle_t h_md5
;
69 cls_method_handle_t h_sha1
;
71 cls_register("crypto", &h_class
);
72 cls_register_method(h_class
, "md5", CLS_METHOD_RD
, md5_method
, &h_md5
);
73 cls_register_method(h_class
, "sha1", CLS_METHOD_RD
, sha1_method
, &h_sha1
);