SIO Command $C5 Hash Output - FujiNetWIFI/fujinet-firmware GitHub Wiki

This is a command for Device $70 - The FujiNet Device itself (see SIO-Commands-for-Device-ID-$70).

Hash Output ($C5)

Description

This function retrieves the output buffer containing the hash data previously input and computed. You can fetch as many bytes up to the pre-set lengths of the given hash algorithms. Any attempt to get more bytes than are in the buffer will result in an error.

Supported hash output string sizes (bytes):

Hash Binary Hexadecimal
MD5 16 32
SHA1 20 40
SHA256 32 64
SHA512 64 128

Note, you must select size based on desired output type and the last call to Hash Compute.

Firmware version required: 1.1 (2023.08.22) +

Parameters

DCB Value
DDEVIC $70
DUNIT $01
DCOMND $C5
DSTATS $40
DBUF a buffer as big as set by DBYT
DTIMLO $03
DBYT the number of bytes to send back
DAUX1 the type of output to retreive (0=binary, 1=hexadecimal)

Examples

CC65

unsigned char hash_output(char *s, unsigned short len)                                                                      
{                                                                                                                                    
  OS.dcb.ddevic   = 0x70;                                                                                                   
  OS.dcb.dunit    = 1;                                                                                                               
  OS.dcb.dcomnd   = 0xC5;                                                                                                            
  OS.dcb.dstats   = 0x40;                                                                                                            
  OS.dcb.dbuf     = s;                                                                                                               
  OS.dcb.dtimlo   = 0x03;                                                                                                  
  OS.dcb.dbyt     = len;                                                                                                             
  OS.dcb.daux1    = 1;                                                                                                             
  siov();                                                                                                                            
                                                                                                                                     
  return OS.dcb.dstats; // Return SIO error or success.                                                                              
}                                                                                                                                    

Related Functions