function ProofSpec(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }
/**
     * Constructs a new ProofSpec.
     * @exports ProofSpec
     * @classdesc ProofSpec defines what the expected parameters are for a given proof type.
     * This can be stored in the client and used to validate any incoming proofs.
     * 
     * verify(ProofSpec, Proof) -> Proof | Error
     * 
     * As demonstrated in tests, if we don't fix the algorithm used to calculate the
     * LeafHash for a given tree, there are many possible key-value pairs that can
     * generate a given hash (by interpretting the preimage differently).
     * We need this for proper security, requires client knows a priori what
     * tree format server uses. But not in code, rather a configuration object.
     * @implements IProofSpec
     * @constructor
     * @param {IProofSpec=} [properties] Properties to set
     */
Constructs a new ProofSpec.
@exports ProofSpec
@classdesc ProofSpec defines what the expected parameters are for a given proof type.
This can be stored in the client and used to validate any incoming proofs.

verify(ProofSpec, Proof) -> Proof | Error

As demonstrated in tests, if we don't fix the algorithm used to calculate the
LeafHash for a given tree, there are many possible key-value pairs that can
generate a given hash (by interpretting the preimage differently).
We need this for proper security, requires client knows a priori what
tree format server uses. But not in code, rather a configuration object.
@implements IProofSpec
@constructor
@param {IProofSpec=} [properties] Properties to set
Constructs a new ProofSpec . @exports ProofSpec @classdesc ProofSpec defines what the expected parameters are for a given proof type . This can be stored in the client and used to validate any incoming proofs . verify ( ProofSpec Proof ) - > Proof | Error As demonstrated in tests if we don ' t fix the algorithm used to calculate the LeafHash for a given tree there are many possible key - value pairs that can generate a given hash ( by interpretting the preimage differently ) . We need this for proper security requires client knows a priori what tree format server uses . But not in code rather a configuration object . @implements IProofSpec @constructor @param { IProofSpec = } [ properties ] Properties to set
function ProofSpec(properties) {
        if (properties)
            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                if (properties[keys[i]] != null)
                    this[keys[i]] = properties[keys[i]];
    }
function ProofSpec ( properties ) { if ( properties ) for ( var keys = Object . keys ( properties ) , i = 0 ; i < keys . length ; ++ i ) if ( properties [ keys [ i ] ] != null ) this [ keys [ i ] ] = properties [ keys [ i ] ] ; }
Constructs a new ProofSpec.
Constructs a new ProofSpec .