~mathiaz/+junk/ceph-new-pkg-review

« back to all changes in this revision

Viewing changes to src/cls_crypto.cc

  • Committer: Mathias Gug
  • Date: 2010-07-29 03:10:42 UTC
  • Revision ID: mathias.gug@canonical.com-20100729031042-n9n8kky962qb4onb
Import ceph_0.21-0ubuntu1 from https://launchpad.net/~clint-fewbar/+archive/ceph/+packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
 
 
4
#include <iostream>
 
5
#include <string.h>
 
6
#include <stdlib.h>
 
7
#include <errno.h>
 
8
 
 
9
#include <openssl/md5.h>
 
10
#include <openssl/sha.h>
 
11
 
 
12
#include "include/types.h"
 
13
#include "objclass/objclass.h"
 
14
 
 
15
 
 
16
CLS_VER(1,0)
 
17
CLS_NAME(crypto)
 
18
 
 
19
cls_handle_t h_class;
 
20
 
 
21
cls_method_handle_t h_md5;
 
22
cls_method_handle_t h_sha1;
 
23
 
 
24
int md5_method(cls_method_context_t ctx, char *indata, int datalen,
 
25
                                 char **outdata, int *outdatalen)
 
26
{
 
27
   int i;
 
28
   MD5_CTX c;
 
29
   unsigned char *md;
 
30
 
 
31
   cls_log("md5 method");
 
32
   cls_log("indata=%.*s data_len=%d", datalen, indata, datalen);
 
33
 
 
34
   md = (unsigned char *)cls_alloc(MD5_DIGEST_LENGTH);
 
35
   if (!md)
 
36
     return -ENOMEM;
 
37
 
 
38
   MD5_Init(&c);
 
39
   MD5_Update(&c, indata, (unsigned long)datalen);
 
40
   MD5_Final(md,&c);
 
41
 
 
42
   *outdata = (char *)md;
 
43
   *outdatalen = MD5_DIGEST_LENGTH;
 
44
 
 
45
   return 0;
 
46
}
 
47
 
 
48
int sha1_method(cls_method_context_t ctx, char *indata, int datalen,
 
49
                                 char **outdata, int *outdatalen)
 
50
{
 
51
   int i;
 
52
   SHA_CTX c;
 
53
   unsigned char *md;
 
54
 
 
55
   cls_log("sha1 method");
 
56
   cls_log("indata=%.*s data_len=%d", datalen, indata, datalen);
 
57
 
 
58
   md = (unsigned char *)cls_alloc(SHA_DIGEST_LENGTH);
 
59
   if (!md)
 
60
     return -ENOMEM;
 
61
 
 
62
   SHA1_Init(&c);
 
63
   SHA1_Update(&c, indata, (unsigned long)datalen);
 
64
   SHA1_Final(md,&c);
 
65
 
 
66
   *outdata = (char *)md;
 
67
   *outdatalen = SHA_DIGEST_LENGTH;
 
68
 
 
69
   return 0;
 
70
}
 
71
 
 
72
void __cls_init()
 
73
{
 
74
   cls_log("Loaded crypto class!");
 
75
 
 
76
   cls_register("crypto", &h_class);
 
77
   cls_register_method(h_class, "md5", CLS_METHOD_RD, md5_method, &h_md5);
 
78
   cls_register_method(h_class, "sha1", CLS_METHOD_RD, sha1_method, &h_sha1);
 
79
 
 
80
   return;
 
81
}
 
82