Ext/openssl and newer OpenSSL

e$B$3$s$K$A$O!#e(B

e$B:G6a!"e(BNetBSD
currente$B$Ge(Bext/openssle$B$,%(%i!<$H$J$k$h$&$K$J$j$^$7$?!#e(B
e$BD>@$N860x$O!“e(BNetBSD
currente$B$G!“e(BOpenSSLe$B$Ne(B0.9.8ge$B$h$j$b?7$7$$!”$H$”$ke(B
snapshote$B$,<h$j9~$^$l$?e(B(e$B2?$G$de(B?)e$B$3$H$K$h$j$^$9!#e(B

ext/openssle$B$G$O!“e(BOpenSSLe$B$K7g$1$F$$$k4X?t$N%A%’%C%/$r9T$$!”$J$$$b$N$K$De(B
e$B$$$F$O!"<+A0$N$b$N$r;H$&$h$&$K$7$F$$$k$h$&$G$9!#$H$3$m$,!"$3$3$G4X?tDje(B
e$B5A$K0c$$$,H/@8$7$F$$$^$7$?!#e(B

Ruby:ext/openssl int HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in)
Newer OpenSSL void HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in)

e$B8e<T$Ne(BHMAC_CTX_copy()e$B$O!"$7$C$+$je(B OpenSSLe$B$Ne(Bhmac.h
e$B$H$$$C$?%X%C%@%U%!%$e(B
e$B%k$G$b@k8@$5$l$F$$$^$9!#e(B

ext/openssl/extconf.rbe$B$G$O!“e(BHMAC_CTX_copy()e$B$,B8:_$9$k$3$H$r8!CN$7$F$$$^e(B
e$B$9$,!“e(Bext/openssl/openssl_missing.he$B$G$N@k8@$OL5>r7o$K9T$C$F$$$k$?$a!”$^e(B
e$B$:$O$3$3$G4X?t@k8@$NIT0lCW$G%(%i!<$H$J$j$^$9!#e(B(e$B$3$NItJ,$K$D$$$F$O!”;}$Ce(B
e$B$F$$$k$HH=CG$7$?>l9g$O!"e(B#ifdef e$B$G@k8@$b$7$J$$$Y$-$G$7$g$&!#e(B)

e$B$3$NItJ,$rDL$7$?$H$7$F$b!“e(Bext/openssl/ossl_hmac.ce$B$NCf$G$O!”$A$c$s$He(B
HMAC_CTX_copy()e$B$NLa$jCM$r%A%’%C%/$7$F$$$^$9$N$G!"$3$NJU$j$bLdBj$H$J$je(B
e$B$^$9!#e(B

HMAC_CTX_copy()e$B$N?7$7$$e(BOpenSSLe$B$N<BAu$G$O!"FbIt$G8F$S=P$7$F$$$ke(B
EVP_MD_CTX_copy()e$B$NLa$jCM$OA4$/%A%’%C%/$7$F$$$J$+$C$?$j$9$kJU$j$O!“e(B
e$B<c43$N5?Ld$r46$8!”$3$NE@$G$O$`$7$me(BRubye$B$Ne(Bext/openssl/openssl_missing.c
e$B$NJ}$,%3!<%IE*$K$O@5$7$$$H;W$$$^$9!#e(B

e$B$$$:$l$K$7$F$b!"?7$7$$e(BOpenSSLe$B$N<BAu$K9g$o$;$k7A$G%Q%C%A$r:n@.$7$F$_$^e(B
e$B$7$?!#e(B


e$B?@8Me(B e$BN4Gne(B(e$B$+$s$Ye(B e$B$?$+$R$me(B) at e$B;E;v>le(B

— ext/openssl/openssl_missing.c.orig 2007-02-13 08:01:19.000000000
+0900
+++ ext/openssl/openssl_missing.c
@@ -22,7 +22,7 @@
#include “openssl_missing.h”

#if !defined(HAVE_HMAC_CTX_COPY)
-int
+void
HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in)
{
if (!out || !in) return 0;

— ext/openssl/openssl_missing.h.orig 2007-02-13 08:01:19.000000000
+0900
+++ ext/openssl/openssl_missing.h
@@ -56,14 +56,33 @@ extern “C” {
(char ()())d2i_PKCS7_RECIP_INFO, (char *)ri)
#endif

+#if !defined(HAVE_EVP_MD_CTX_INIT)
void HMAC_CTX_init(HMAC_CTX *ctx);
-int HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
+#endif
+
+#if !defined(HAVE_HMAC_CTX_COPY)
+void HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
+#endif
+
+#if !defined(HAVE_HMAC_CTX_CLEANUP)
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
+#endif

+#if !defined(HAVE_EVP_MD_CTX_CREATE)
EVP_MD_CTX *EVP_MD_CTX_create(void);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_INIT)
void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_CLEANUP)
int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_DESTROY)
void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
+#endif

#if !defined(HAVE_EVP_CIPHER_CTX_COPY)
int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, EVP_CIPHER_CTX *in);
@@ -107,19 +126,54 @@ int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *
#define OPENSSL_cleanse(p, l) memset(p, 0, l)
#endif

+#if !defined(HAVE_X509_STORE_SET_EX_DATA)
void *X509_STORE_get_ex_data(X509_STORE *str, int idx);
int X509_STORE_set_ex_data(X509_STORE *str, int idx, void *data);
+#endif
+
+#if !defined(HAVE_X509_CRL_SET_VERSION)
int X509_CRL_set_version(X509_CRL *x, long version);
+#endif
+
+#if !defined(HAVE_X509_CRL_SET_ISSUER_NAME)
int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
+#endif
+
+#if !defined(HAVE_X509_CRL_SORT)
int X509_CRL_sort(X509_CRL *c);
+#endif
+
+#if !defined(HAVE_X509_CRL_ADD0_REVOKED)
int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
+#endif
+
+#if !defined(HAVE_BN_MOD_SQR)
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX
*ctx);
+#endif
+
+#if !defined(HAVE_BN_MOD_ADD)
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const
BIGNUM *m, BN_CTX *ctx);
+#endif
+
+#if !defined(HAVE_BN_MOD_SUB)
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const
BIGNUM *m, BN_CTX *ctx);
+#endif
+
+#if !defined(HAVE_BN_RAND_RANGE)
int BN_rand_range(BIGNUM *r, BIGNUM *range);
+#endif
+
+#if !defined(HAVE_BN_PSEUDO_RAND_RANGE)
int BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range);
+#endif
+
+#if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE)
char *CONF_get1_default_config_file(void);
+#endif
+
+#if !defined(HAVE_PEM_DEF_CALLBACK)
int PEM_def_callback(char *buf, int num, int w, void *key);
+#endif

#if defined(__cplusplus)
}

— ext/openssl/ossl_hmac.c.orig 2007-03-12 13:12:32.000000000 +0900
+++ ext/openssl/ossl_hmac.c
@@ -81,9 +81,7 @@ ossl_hmac_copy(VALUE self, VALUE other)
GetHMAC(self, ctx1);
SafeGetHMAC(other, ctx2);

  • if (!HMAC_CTX_copy(ctx1, ctx2)) {
  • ossl_raise(eHMACError, NULL);
  • }
  • HMAC_CTX_copy(ctx1, ctx2);
    return self;
    }

@@ -104,9 +102,7 @@ hmac_final(HMAC_CTX *ctx, char **buf, in
{
HMAC_CTX final;

  • if (!HMAC_CTX_copy(&final, ctx)) {
  • ossl_raise(eHMACError, NULL);
  • }
  • HMAC_CTX_copy(&final, ctx);
    if (!(*buf = OPENSSL_malloc(HMAC_size(&final)))) {
    HMAC_CTX_cleanup(&final);
    OSSL_Debug(“Allocating %d mem”, HMAC_size(&final));

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34691] ext/openssl and newer OpenSSL”
on Wed, 14 May 2008 18:18:28 +0900, Takahiro K.
[email protected] writes:

|e$B:G6a!"e(BNetBSD currente$B$Ge(Bext/openssle$B$,%(%i!<$H$J$k$h$&$K$J$j$^$7$?!#e(B
|e$BD>@$N860x$O!“e(BNetBSD currente$B$G!“e(BOpenSSLe$B$Ne(B0.9.8ge$B$h$j$b?7$7$$!”$H$”$ke(B
|snapshote$B$,<h$j9~$^$l$?e(B(e$B2?$G$de(B?)e$B$3$H$K$h$j$^$9!#e(B

|e$B$$$:$l$K$7$F$b!"?7$7$$e(BOpenSSLe$B$N<BAu$K9g$o$;$k7A$G%Q%C%A$r:n@.$7$F$_$^e(B
|e$B$7$?!#e(B

e$B$H$/$KLdBj$O8+Ev$?$i$J$$$N$G<h$j9~$b$&$H;W$$$^$9!#?@8M$5$s$Ke(B
e$B$O%3%_%C%H8"$O$5$7$“$2$F$$$^$;$s$G$7$?$G$7$g$&$+!#$J$i!”;d$,e(B
e$B:n6H$7$^$9$,!#e(B

e$B$3$s$K$A$O!#e(B

In message [email protected]
on Wed, 14 May 2008 18:31:28 +0900,
Yukihiro M. [email protected] wrote:

|e$B:G6a!"e(BNetBSD currente$B$Ge(Bext/openssle$B$,%(%i!<$H$J$k$h$&$K$J$j$^$7$?!#e(B
|e$BD>@$N860x$O!“e(BNetBSD currente$B$G!“e(BOpenSSLe$B$Ne(B0.9.8ge$B$h$j$b?7$7$$!”$H$”$ke(B
|snapshote$B$,<h$j9~$^$l$?e(B(e$B2?$G$de(B?)e$B$3$H$K$h$j$^$9!#e(B

|e$B$$$:$l$K$7$F$b!"?7$7$$e(BOpenSSLe$B$N<BAu$K9g$o$;$k7A$G%Q%C%A$r:n@.$7$F$_$^e(B
|e$B$7$?!#e(B

e$B$H$/$KLdBj$O8+Ev$?$i$J$$$N$G<h$j9~$b$&$H;W$$$^$9!#?@8M$5$s$Ke(B
e$B$"$j$,$H$&$4$6$$$^$9!#<j85$Ne(BNetBSD
currente$B$H!"e(B(e$B$^$@e(BOpenSSLe$B$,?7$7$/$J$Ce(B
e$B$F$$$J$$e(B)NetBSD
4.0_STABLEe$B$N4D6-$G%3%s%Q%$%k$,DL$k$3$H$O3NG’$7$F$$$^$9!#e(B

e$B$O%3%%C%H8"$O$5$7$“$2$F$$$^$;$s$G$7$?$G$7$g$&$+!#$J$i!”;d$,e(B
e$B:n6H$7$^$9$,!#e(B
e$B$“$j$,$H$&$4$6$$$^$9!#$?$@!”;d<+?H$,e(Bsvn
readye$B$H8@$($k>u67$K$O$J$C$F$$e(B
e$B$J$$$3$H$H!"7QB3$7$F%3%
%C%H$G$-$k$h$&$J:n6H$,$G$-$k>u67$K$J$5$=$&$G$9e(B
e$B$N$G!":#2s$O:n6H$NJ}$r$*4j$$$7$^$9!#e(B

e$B$“$H!”$A$g$C$H%&%)!<%K%s%0$,L=P$D5$$,$7$^$9$N$G!“$b$&>/$7$@$13NG’$r9Te(B
e$B$$$?$$$H;W$$$^$9$N$G!”>/$7$*BT$A2<$5$$!#e(B(e$B:#HUCf$K$O:FEY%a!<%k$7$^$9!#e(B)

2e$BG/A0$N%a!<%k$KJV?.$G$9!#e(B

2008/5/14 Takahiro K. [email protected]:

e$B8e<T$Ne(BHMAC_CTX_copy()e$B$O!"$7$C$+$je(B OpenSSLe$B$Ne(Bhmac.h e$B$H$$$C$?%X%C%@%U%!%$e(B
e$B%k$G$b@k8@$5$l$F$$$^$9!#e(B

e$B$$$m$$$m$J7P0^$,$"$C$?$N$+$b$7$l$^$;$s$,!"8=;~E@$Ne(BOpenSSL
1.0.0e$B$G$O!"e(B
e$B5le(Bext/openssl/openssl_missing.*e$B$NDj5A$K$J$C$F$$$^$9!#$^$?!"e(B0.9.8oe$B$K$O!"e(B
HMAC_CTX_copye$B$NDj5A$OF~$C$F$$$^$;$s!#e(B

e$B85%a!<%k$G?@8M$5$s$,=q$+$l$F$$$k$H$*$j!“5lDj5A$N$[$&$,9%$^$7$$$3$H$K0c$$$”$j$^$;$s!#e(B
e$B$H$$$&$o$1$G!“$G$-$l$PLa$7$?$$$H;W$C$F$$$k$N$G$9$,!”>e5-e(Bvoid
e$B!A7O$NDj5A$,e(B
e$BF~$C$F$$$?e(BOpenSSLe$B$N%P!<%8%g%s$J$I!“$o$+$k$G$7$g$&$+!#e(BNetBSDe$B$N$H$”$k%9%J%C%W%7%g%C%H!“e(B
e$B$@$1$G$”$l$P!“$b$&%3%s%Q%$%k$G$-$J$/$F$b$$$$$+$J!”$H;W$$$^$9!#e(B

In message
[email protected]
on Mon, 21 Jun 2010 16:54:12 +0900,
“NAKAMURA, Hiroshi” [email protected] wrote:

2e$BG/A0$N%a!<%k$KJV?.$G$9!#e(B
e$B2?$He(B!

e$B$$$m$$$m$J7P0^$,$"$C$?$N$+$b$7$l$^$;$s$,!"8=;~E@$Ne(BOpenSSL 1.0.0e$B$G$O!"e(B
e$B5le(Bext/openssl/openssl_missing.*e$B$NDj5A$K$J$C$F$$$^$9!#$^$?!"e(B0.9.8oe$B$K$O!"e(B
HMAC_CTX_copye$B$NDj5A$OF~$C$F$$$^$;$s!#e(B

e$B85%a!<%k$G?@8M$5$s$,=q$+$l$F$$$k$H$*$j!“5lDj5A$N$[$&$,9%$^$7$$$3$H$Ke(B
e$B0c$$$”$j$^$;$s!#e(B
e$B$H$$$&$o$1$G!“$G$-$l$PLa$7$?$$$H;W$C$F$$$k$N$G$9$,!”>e5-e(Bvoid e$B!A7O$NDj5A$,e(B
e$BF~$C$F$$$?e(BOpenSSLe$B$N%P!<%8%g%s$J$I!“$o$+$k$G$7$g$&$+!#e(BNetBSDe$B$N$H$”$ke(B
e$B%9%J%C%W%7%g%C%H!“e(B
e$B$@$1$G$”$l$P!“$b$&%3%s%Q%$%k$G$-$J$/$F$b$$$$$+$J!”$H;W$$$^$9!#e(B
e$B;DG0$G$9$,!“!V$H$”$k%9%J%C%W%7%g%C%H!W$H$$$&$o$1$G$O$J$/!“?tF|A0$K=P$?e(B
NetBSD 5.1_RC3e$B$r4^$`e(B NetBSD 5
e$B7ONs$O!”$3$N$H$-$Ne(BOpenSSLe$B$N%P!<%8%g%s$Ge(B
e$B%V%i%s%A$,:n@.$5$l$F$$$k$N$G!"$9$Y$F3:Ev$9$k$3$H$K$J$j$^$9!#e(B:-(

e$B$3$l$O!"2>$Ke(B 5.2 e$B$H$+$K$J$C$F$bJQ$o$k$3$H$O$J$$$G$7$g$&!#e(B

e$B2?;~$K$J$k$+$o$+$i$J$$!“e(BNetBSD 6
e$B$G$O!”%Y!<%9%7%9%F%`$Ke(BOpenSSL 1.1.0
e$B0\9T$H$J$k$N$b3N<B$G$9!#e(B

In message [email protected]
on Wed, 14 May 2008 18:37:04 +0900,
Takahiro K. [email protected] wrote:

e$B$“$H!”$A$g$C$H%&%)!<%K%s%0$,L=P$D5$$,$7$^$9$N$G!“$b$&>/$7$@$13NG’$r9Te(B
e$B$$$?$$$H;W$$$^$9$N$G!”>/$7$*BT$A2<$5$$!#e(B(e$B:#HUCf$K$O:FEY%a!<%k$7$^$9!#e(B)
e$BL\N)$C$F$$$k$N$O!“e(BOpenSSLe$BB&$NLdBj$N5$$b$7$^$7$?$N$G$”$-$i$a$^$9!#e(B

e$B@h$N%Q%C%A$N$&$A!"e(Bext/openssl/openssl_missing.ce$B$KBP$9$kItJ,$@$1=$@5$7e(B
e$B$^$7$?$N$G!“2~$a$FE:IU$7$^$9!#:9$7;Y$($J$1$l$P!”<h$j9~$s$G2<$5$$!#e(B

(e$B$&$%$`!"$d$C$Q$je(Bvoide$B$K$9$k$N$K$O!"5$$,0z$1$ke(B…e$B!#e(B)


e$B?@8Me(B e$BN4Gne(B(e$B$+$s$Ye(B e$B$?$+$R$me(B) at e$B;E;v>le(B

— ext/openssl/openssl_missing.c.orig 2007-02-13 08:01:19.000000000
+0900
+++ ext/openssl/openssl_missing.c
@@ -22,17 +22,15 @@
#include “openssl_missing.h”

#if !defined(HAVE_HMAC_CTX_COPY)
-int
+void
HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in)
{

  • if (!out || !in) return 0;
  • if (!out || !in) return;
    memcpy(out, in, sizeof(HMAC_CTX));
  • if (!EVP_MD_CTX_copy(&out->md_ctx, &in->md_ctx)
  •  || !EVP_MD_CTX_copy(&out->i_ctx, &in->i_ctx)
    
  •  || !EVP_MD_CTX_copy(&out->o_ctx, &in->o_ctx))
    
  • return 0;
  • return 1;
  • EVP_MD_CTX_copy(&out->md_ctx, &in->md_ctx);
  • EVP_MD_CTX_copy(&out->i_ctx, &in->i_ctx);
  • EVP_MD_CTX_copy(&out->o_ctx, &in->o_ctx);
    }
    #endif /* HAVE_HMAC_CTX_COPY /
    #endif /
    NO_HMAC */

— ext/openssl/openssl_missing.h.orig 2007-02-13 08:01:19.000000000
+0900
+++ ext/openssl/openssl_missing.h
@@ -56,14 +56,33 @@ extern “C” {
(char ()())d2i_PKCS7_RECIP_INFO, (char *)ri)
#endif

+#if !defined(HAVE_EVP_MD_CTX_INIT)
void HMAC_CTX_init(HMAC_CTX *ctx);
-int HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
+#endif
+
+#if !defined(HAVE_HMAC_CTX_COPY)
+void HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
+#endif
+
+#if !defined(HAVE_HMAC_CTX_CLEANUP)
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
+#endif

+#if !defined(HAVE_EVP_MD_CTX_CREATE)
EVP_MD_CTX *EVP_MD_CTX_create(void);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_INIT)
void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_CLEANUP)
int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
+#endif
+
+#if !defined(HAVE_EVP_MD_CTX_DESTROY)
void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
+#endif

#if !defined(HAVE_EVP_CIPHER_CTX_COPY)
int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, EVP_CIPHER_CTX *in);
@@ -107,19 +126,54 @@ int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *
#define OPENSSL_cleanse(p, l) memset(p, 0, l)
#endif

+#if !defined(HAVE_X509_STORE_SET_EX_DATA)
void *X509_STORE_get_ex_data(X509_STORE *str, int idx);
int X509_STORE_set_ex_data(X509_STORE *str, int idx, void *data);
+#endif
+
+#if !defined(HAVE_X509_CRL_SET_VERSION)
int X509_CRL_set_version(X509_CRL *x, long version);
+#endif
+
+#if !defined(HAVE_X509_CRL_SET_ISSUER_NAME)
int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
+#endif
+
+#if !defined(HAVE_X509_CRL_SORT)
int X509_CRL_sort(X509_CRL *c);
+#endif
+
+#if !defined(HAVE_X509_CRL_ADD0_REVOKED)
int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
+#endif
+
+#if !defined(HAVE_BN_MOD_SQR)
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX
*ctx);
+#endif
+
+#if !defined(HAVE_BN_MOD_ADD)
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const
BIGNUM *m, BN_CTX *ctx);
+#endif
+
+#if !defined(HAVE_BN_MOD_SUB)
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const
BIGNUM *m, BN_CTX *ctx);
+#endif
+
+#if !defined(HAVE_BN_RAND_RANGE)
int BN_rand_range(BIGNUM *r, BIGNUM *range);
+#endif
+
+#if !defined(HAVE_BN_PSEUDO_RAND_RANGE)
int BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range);
+#endif
+
+#if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE)
char *CONF_get1_default_config_file(void);
+#endif
+
+#if !defined(HAVE_PEM_DEF_CALLBACK)
int PEM_def_callback(char *buf, int num, int w, void *key);
+#endif

#if defined(__cplusplus)
}

— ext/openssl/ossl_hmac.c.orig 2007-03-12 13:12:32.000000000 +0900
+++ ext/openssl/ossl_hmac.c
@@ -81,9 +81,7 @@ ossl_hmac_copy(VALUE self, VALUE other)
GetHMAC(self, ctx1);
SafeGetHMAC(other, ctx2);

  • if (!HMAC_CTX_copy(ctx1, ctx2)) {
  • ossl_raise(eHMACError, NULL);
  • }
  • HMAC_CTX_copy(ctx1, ctx2);
    return self;
    }

@@ -104,9 +102,7 @@ hmac_final(HMAC_CTX *ctx, char **buf, in
{
HMAC_CTX final;

  • if (!HMAC_CTX_copy(&final, ctx)) {
  • ossl_raise(eHMACError, NULL);
  • }
  • HMAC_CTX_copy(&final, ctx);
    if (!(*buf = OPENSSL_malloc(HMAC_size(&final)))) {
    HMAC_CTX_cleanup(&final);
    OSSL_Debug(“Allocating %d mem”, HMAC_size(&final));

e$B$5$C$=$/$"$j$,$H$&$4$6$$$^$9!#e(B

2010/6/21 Takahiro K. [email protected]:

e$B$H$$$&$o$1$G!“$G$-$l$PLa$7$?$$$H;W$C$F$$$k$N$G$9$,!”>e5-e(Bvoid e$B!A7O$NDj5A$,e(B
e$BF~$C$F$$$?e(BOpenSSLe$B$N%P!<%8%g%s$J$I!“$o$+$k$G$7$g$&$+!#e(BNetBSDe$B$N$H$”$ke(B
e$B%9%J%C%W%7%g%C%H!“e(B
e$B$@$1$G$”$l$P!“$b$&%3%s%Q%$%k$G$-$J$/$F$b$$$$$+$J!”$H;W$$$^$9!#e(B
e$B;DG0$G$9$,!“!V$H$”$k%9%J%C%W%7%g%C%H!W$H$$$&$o$1$G$O$J$/!“?tF|A0$K=P$?e(B
NetBSD 5.1_RC3e$B$r4^$`e(B NetBSD 5 e$B7ONs$O!”$3$N$H$-$Ne(BOpenSSLe$B$N%P!<%8%g%s$Ge(B
e$B%V%i%s%A$,:n@.$5$l$F$$$k$N$G!"$9$Y$F3:Ev$9$k$3$H$K$J$j$^$9!#e(B:-(

e$B$J$k$[$I!#$=$l$G$OEvLLJ|CV$G$9$M!#$“$H$G7P0^$r%3%a%s%H$H$7$FDI5-$7$F$*$-$^$9!#e(B
2008-11-02e$B$KF~$C$?$h$&$J$N$G!”$=$l0JA0$K<h$j9~$^$l$F$?$N$G$9$M!#e(B
http://cvs.openssl.org/filediff?f=openssl/crypto/hmac/hmac.h&v1=1.20&v2=1.21

e$B$A$c$s$H$7$?e(BSecurity Officere$B$N$$$k$H$3$m$O6/$$$J!<!#e(B

e$B$I$&$G$b$$$$OC$G$9$,!"$J$s$G$3$s$JOC$r>x$7JV$7$?$+$H$$$&$He(B:

  1. 64bite$B%^%7%s$r<j$KF~$l$?!#e(B
  2. Ubuntu 10.04e$B$rF~$l$?!Je(Bopenssl 0.9.8k+)
  3. /usr/local/ssle$B$Ke(Bopenssl 1.0.0ae$B$rF~$l$?e(B

–with-openssl-dir=/usr/local/ssle$B$Ge(Bruby_1_8e$B$r%3%s%Q%$%k$7$?$i!“e(B
openssl_missing.*e$B$N”,$N$H$3$m$G%3%s%Q%$%k%(%i!<!#e(B

e$B$b$A$m$s0-$$$N$O;d$G!“%X%C%@%U%!%$%k$Oe(B1.0.0ae$B!”%j%s%/$9$k%i%$%V%i%j$Oe(B0.9.8k+e$B!"e(B
e$B$H$$$&>u67$K$7$F$7$^$C$?$;$$$G$7$?!#2?$b9M$($:$Ke(Bopenssl
1.0.0ae$B$r%$%s%9%H!<%k$9$k$H!"e(B
e$B%i%$%V%i%j$Oe(B/usr/local/ss/lib64e$B$KF~$k$N$G!"e(B
–with-openssl-include=/usr/local/ssl/include
–with-openssl-lib=/usr/local/ssl/lib64
e$B$K$7$J$$$H$$$1$J$+$C$?!#e(B

e$B$G!“$3$N!J@5>o$G$J$$4D6-$G$N!K%3%s%Q%$%k%(%i!<$,!”>e5-$NDj5A%:%l$K$h$k$b$N$@$C$?!“e(B
e$B$H$$$&7P0^$G$7$?!#AG?M$G$b$J$1$l$P%O%^$i$J$$%l%”%1!<%9$J$N$G!"J|CV$G$h$$$H;W$$$^$9!#e(B