]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/ecdsa/ecdsa.factor
factor: trim using lists
[factor.git] / extra / ecdsa / ecdsa.factor
index c4d889991edf25be4e0b5184ee42dd9f9412a4d0..c01550e62877fa507ddfb95d9204fa8029143551 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 
 USING: kernel accessors sequences sequences.private destructors math namespaces
-       locals openssl openssl.libcrypto byte-arrays bit-arrays.private
+       openssl openssl.libcrypto byte-arrays bit-arrays.private
        alien.c-types alien.destructors alien.data ;
 
 IN: ecdsa
@@ -19,7 +19,7 @@ M: ec-key dispose
     EC_KEY_new_by_curve_name dup ssl-error ec-key boa ;
 
 : ec-key-handle ( -- handle )
-    ec-key get dup handle>> [ nip ] [ already-disposed ] if* ;
+    ec-key get dup handle>> [ ] [ already-disposed ] ?if ;
 
 DESTRUCTOR: BN_clear_free
 
@@ -50,11 +50,11 @@ PRIVATE>
 
 : get-private-key ( -- bin/f )
     ec-key-handle EC_KEY_get0_private_key
-    dup [ dup BN_num_bits bits>bytes <byte-array> tuck BN_bn2bin drop ] when ;
+    dup [ dup BN_num_bits bits>bytes <byte-array> [ BN_bn2bin drop ] keep ] when ;
 
 :: get-public-key ( -- bin/f )
     ec-key-handle :> KEY
-    KEY EC_KEY_get0_public_key dup 
+    KEY EC_KEY_get0_public_key dup
     [| PUB |
         KEY EC_KEY_get0_group :> GROUP
         GROUP EC_GROUP_get_degree bits>bytes 1 + :> LEN
@@ -67,9 +67,9 @@ PRIVATE>
 :: ecdsa-sign ( DGST -- sig )
     ec-key-handle :> KEY
     KEY ECDSA_size dup ssl-error <byte-array> :> SIG
-    "uint" <c-object> :> LEN
+    0 uint <ref> :> LEN
     0 DGST dup length SIG LEN KEY ECDSA_sign ssl-error
-    LEN *uint SIG resize ;
+    LEN uint deref SIG resize ;
 
 : ecdsa-verify ( dgst sig -- ? )
     ec-key-handle [ 0 -rot [ dup length ] bi@ ] dip ECDSA_verify 0 > ;