view dcrypt/crypto/MAC.d @ 14:5ce3012f1def

Removed some redundancy in code. Added NotSupportedError, a base PRNG class and a class which creates a PRNG from a hash function. Changed the MAC class' finalization methods to digest and hexDigest instead of finish and hexFinish respectively. Also added a base Checksum class, crc32 and adler32 in dcrypt.misc as per request.
author Thomas Dixon <reikon@reikon.us>
date Tue, 18 Nov 2008 18:03:40 -0500
parents 3de3a2de13a0
children 0de48552be35
line wrap: on
line source

/**
 * This file is part of the dcrypt project.
 *
 * Copyright: Copyright (C) dcrypt contributors 2008. All rights reserved.
 * License:   MIT
 * Authors:   Thomas Dixon
 */

module dcrypt.crypto.MAC;

public import dcrypt.crypto.params.CipherParameters;
public import dcrypt.crypto.errors.InvalidParameterError;
import dcrypt.misc.Util;

/** Base MAC class */
abstract class MAC {
    /**
     * Initialize a MAC.
     * 
     * Params:
     *     params  = Parameters to be passed to the MAC. (Key, etc.)
     */
    void init(CipherParameters params);
    
    /**
     * Introduce data into the MAC.
     * 
     * Params:
     *     input_ = Data to be processed.
     */
    void update(void[] input_);
    
    /** Returns: The name of this MAC. */
    char[] name();
    
    /** Reset MAC to its state immediately subsequent the last init. */
    void reset();
    
    /** Returns: The block size in bytes that this MAC will operate on. */
    uint blockSize();
    
    /** Returns: The output size of the MAC in bytes. */
    uint macSize();
    
    /** Returns: The computed MAC. */
    ubyte[] digest();
    
    /** Returns: The computed MAC in hexadecimal. */
    char[] hexDigest() {
        return Util.ubytesToHex(digest());
    }
}