|  |  | 
|  | /* | 
|  | * Copyright (C) Igor Sysoev | 
|  | * Copyright (C) Nginx, Inc. | 
|  | */ | 
|  |  | 
|  |  | 
|  | #ifndef _NGX_MD5_H_INCLUDED_ | 
|  | #define _NGX_MD5_H_INCLUDED_ | 
|  |  | 
|  |  | 
|  | #include <ngx_config.h> | 
|  | #include <ngx_core.h> | 
|  |  | 
|  |  | 
|  | #if (NGX_HAVE_OPENSSL_MD5_H) | 
|  |  | 
|  | #include <openssl/md5.h> | 
|  |  | 
|  |  | 
|  | typedef MD5_CTX  ngx_md5_t; | 
|  |  | 
|  |  | 
|  | #define ngx_md5_init    MD5_Init | 
|  | #define ngx_md5_update  MD5_Update | 
|  | #define ngx_md5_final   MD5_Final | 
|  |  | 
|  |  | 
|  | #else /* !NGX_HAVE_OPENSSL_MD5_H */ | 
|  |  | 
|  |  | 
|  | typedef struct { | 
|  | uint64_t  bytes; | 
|  | uint32_t  a, b, c, d; | 
|  | u_char    buffer[64]; | 
|  | } ngx_md5_t; | 
|  |  | 
|  |  | 
|  | void ngx_md5_init(ngx_md5_t *ctx); | 
|  | void ngx_md5_update(ngx_md5_t *ctx, const void *data, size_t size); | 
|  | void ngx_md5_final(u_char result[16], ngx_md5_t *ctx); | 
|  |  | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #endif /* _NGX_MD5_H_INCLUDED_ */ |