| 67 |
79 |
| 68 void ws_sha1_final(char *md, WS_SHA1_CTX *ctx) { |
80 void ws_sha1_final(char *md, WS_SHA1_CTX *ctx) { |
| 69 SHA_Final(md, ctx); |
81 SHA_Final(md, ctx); |
| 70 } |
82 } |
| 71 |
83 |
| 72 void ws_sha256_init(WS_SHA1_CTX *ctx) { |
84 void ws_sha256_init(WS_SHA256_CTX *ctx) { |
| 73 SHA_Init(ctx); |
85 SHA_Init(ctx); |
| 74 return 0; |
86 return 0; |
| 75 } |
87 } |
| 76 |
88 |
| 77 void ws_sha256_update(WS_SHA1_CTX *ctx, const void *data, size_t length) { |
89 void ws_sha256_update(WS_SHA256_CTX *ctx, const void *data, size_t length) { |
| 78 SHA_Update(ctx, data, length); |
90 SHA_Update(ctx, data, length); |
| 79 } |
91 } |
| 80 |
92 |
| 81 void ws_sha256_final(char *md, WS_SHA1_CTX *ctx) { |
93 void ws_sha256_final(char *md, WS_SHA256_CTX *ctx) { |
| 82 SHA_Final(md, ctx); |
94 SHA_Final(md, ctx); |
| |
95 } |
| |
96 |
| |
97 void ws_sha512_init(WS_SHA512_CTX *ctx) { |
| |
98 SHA512_Init(ctx); |
| |
99 return 0; |
| |
100 } |
| |
101 |
| |
102 void ws_sha256_update(WS_SHA512_CTX *ctx, const void *data, size_t length) { |
| |
103 SHA512_Update(ctx, data, length); |
| |
104 } |
| |
105 |
| |
106 void ws_sha256_final(char *md, WS_SHA512_CTX *ctx) { |
| |
107 SHA512_Final(md, ctx); |
| 83 } |
108 } |
| 84 |
109 |
| 85 #else |
110 #else |
| 86 |
111 |
| 87 int ws_sha1_init(WS_SHA256_CTX *ctx) { |
112 int ws_sha1_init(WS_SHA256_CTX *ctx) { |
| 118 |
143 |
| 119 void ws_sha256_final(WS_SHA256_CTX *ctx, unsigned char *md) { |
144 void ws_sha256_final(WS_SHA256_CTX *ctx, unsigned char *md) { |
| 120 EVP_DigestFinal(*ctx, md, NULL); |
145 EVP_DigestFinal(*ctx, md, NULL); |
| 121 } |
146 } |
| 122 |
147 |
| |
148 int ws_sha512_init(WS_SHA512_CTX *ctx) { |
| |
149 EVP_MD_CTX *mdctx = EVP_MD_CTX_new(); |
| |
150 if(!mdctx) { |
| |
151 return 1; |
| |
152 } |
| |
153 EVP_DigestInit_ex(mdctx, EVP_sha512(), NULL); |
| |
154 *ctx = mdctx; |
| |
155 return 0; |
| |
156 } |
| |
157 |
| |
158 void ws_sha512_update(WS_SHA256_CTX *ctx, const char *data, size_t length) { |
| |
159 EVP_DigestUpdate(*ctx, data, length); |
| |
160 } |
| |
161 |
| |
162 void ws_sha512_final(WS_SHA256_CTX *ctx, unsigned char *md) { |
| |
163 EVP_DigestFinal(*ctx, md, NULL); |
| |
164 } |
| |
165 |
| 123 #endif |
166 #endif |