]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/checksums/openssl/openssl.factor
Updating code to use with-out-parameters
[factor.git] / basis / checksums / openssl / openssl.factor
index 6f21d96e86192e4310516a1cf1fcd746d3ddaa06..1fec109d5f105219ee545c69de34f75cb2e38e2d 100644 (file)
@@ -1,8 +1,8 @@
-! Copyright (C) 2008 Slava Pestov
+! Copyright (C) 2008, 2010 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors byte-arrays alien.c-types kernel continuations
-destructors sequences io openssl openssl.libcrypto checksums
-checksums.stream ;
+USING: accessors byte-arrays alien.c-types alien.data kernel
+continuations destructors sequences io openssl openssl.libcrypto
+checksums checksums.stream classes.struct ;
 IN: checksums.openssl
 
 ERROR: unknown-digest name ;
@@ -23,10 +23,10 @@ TUPLE: evp-md-context < disposable handle ;
 
 : <evp-md-context> ( -- ctx )
     evp-md-context new-disposable
-    "EVP_MD_CTX" <c-object> dup EVP_MD_CTX_init >>handle ;
+    EVP_MD_CTX_create >>handle ;
 
 M: evp-md-context dispose*
-    handle>> EVP_MD_CTX_cleanup drop ;
+    handle>> EVP_MD_CTX_destroy ;
 
 : with-evp-md-context ( quot -- )
     maybe-init-ssl [ <evp-md-context> ] dip with-disposal ; inline
@@ -47,9 +47,10 @@ M: evp-md-context dispose*
 
 : digest-value ( ctx -- value )
     handle>>
-    EVP_MAX_MD_SIZE <byte-array> 0 <int>
-    [ EVP_DigestFinal_ex ssl-error ] 2keep
-    *int memory>byte-array ;
+    { { int EVP_MAX_MD_SIZE } int }
+    [ EVP_DigestFinal_ex ssl-error ]
+    [ memory>byte-array ]
+    with-out-parameters ;
 
 PRIVATE>