[erlang-questions] How to use crypto:hmac_init() and friends?

Dmitry Belyaev be.dmitry@REDACTED
Thu Nov 19 15:27:48 CET 2015


Wouldn't it make sense to introduce a separate data type for these custom data? Or even allow to define new custom types in nifs or drivers with serialization and comparison rules.
-- 
Best wishes,
Dmitry Belyaev

On 20 November 2015 1:18:42 AM AEDT, Sverker Eriksson <sverker.eriksson@REDACTED> wrote:
>On 11/19/2015 02:37 PM, Frans Schneider wrote:
>> Dear list,
>>
>> I have to create the HMAC of a message by including data at several 
>> points in my code as shown below:
>>
>> ...
>> Mac_ctxt_init = crypto:hmac_init(sha256, Mac_key),
>> Mac_ctxt = case Version of
>>                3 ->
>>                    Mac_ctxt1 = crypto:hmac_update(Mac_ctxt_init, 
>> Dhi_pub),
>>                    crypto:hmac_update(Mac_ctxt1, Dhir_pub);
>>                2 ->
>>                    Mac_ctxt_init
>>            end,
>> ...
>> ...
>> ...
>> LMac_ctxt = crypto:hmac_update(Mac_ctxt, <<Version/binary, 
>> Serialized/binary>>),
>> LMac = crypto:hmac_final_n(LMac_ctxt, 8),
>> ...
>>
>> This will always return <<>>! It already starts with the hmac_init() 
>> which returns <<>>.
>>
>> Erlang/OTP 18 [erts-7.1] [source] [64-bit] [smp:2:2] 
>> [async-threads:10] [hipe] [kernel-poll:false]
>>
>> Eshell V7.1  (abort with ^G)
>> 1> K = 
>>
><<9,138,157,154,221,37,75,104,28,207,127,232,193,207,68,39,22,88,62,219,15,114,22,236,68,226,141,39,69,212,143,123>>.
>> <<9,138,157,154,221,37,75,104,28,207,127,232,193,207,68,
>>   39,22,88,62,219,15,114,22,236,68,226,141,39,69,...>>
>> 2> crypto:hmac_init(sha256, K).
>> <<>>
>> 3>
>>
>> Using crypto:hmac(sha256, K, Data, 8) works fine, but is not usable.
>>
>> Any idea what goes wrong or what I am doing wrong?
>>
>Nothing is wrong (ugly maybe, but not wrong).
>
>That empty binary is not really empty. It's a magic binary!
>It's referring some internal emulator state (the hmac context in this
>case).
>
>Just pass it along to hmac_update and hmac_final and you will get a
>nice 
>regular binary in the end.
>
>The magic binary looks and behaves like an empty binary. It will even 
>lose its magic powers
>and turn into a regular binary if serialized with term_to_binary.
>
>
>/Sverker, Erlang/OTP
>
>
>
>
>
>
>_______________________________________________
>erlang-questions mailing list
>erlang-questions@REDACTED
>http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20151120/a0253650/attachment.htm>


More information about the erlang-questions mailing list