- Home
- Download
- News
- Documentation

- FAQ
- Tutorial
- API reference
- Examples

- XML Digital Signature

- Online Verifier

- XML Encryption
- XML Canonicalization
- Reporting Bugs
- Mailing list
- Related
- Authors

# bn

## Name

bn --

## Synopsis

    enum        xmlSecBnFormat;
    xmlSecBnPtr xmlSecBnCreate                  (xmlSecSize size);
    void        xmlSecBnDestroy                 (xmlSecBnPtr bn);
    int         xmlSecBnInitialize              (xmlSecBnPtr bn,
                                                 xmlSecSize size);
    void        xmlSecBnFinalize                (xmlSecBnPtr bn);
    xmlSecByte* xmlSecBnGetData                 (xmlSecBnPtr bn);
    int         xmlSecBnSetData                 (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);
    xmlSecSize  xmlSecBnGetSize                 (xmlSecBnPtr bn);
    void        xmlSecBnZero                    (xmlSecBnPtr bn);
    int         xmlSecBnFromString              (xmlSecBnPtr bn,
                                                 const xmlChar *str,
                                                 xmlSecSize base);
    xmlChar*    xmlSecBnToString                (xmlSecBnPtr bn,
                                                 xmlSecSize base);
    int         xmlSecBnFromHexString           (xmlSecBnPtr bn,
                                                 const xmlChar *str);
    xmlChar*    xmlSecBnToHexString             (xmlSecBnPtr bn);
    int         xmlSecBnFromDecString           (xmlSecBnPtr bn,
                                                 const xmlChar *str);
    xmlChar*    xmlSecBnToDecString             (xmlSecBnPtr bn);
    int         xmlSecBnMul                     (xmlSecBnPtr bn,
                                                 int multiplier);
    int         xmlSecBnDiv                     (xmlSecBnPtr bn,
                                                 int divider,
                                                 int *mod);
    int         xmlSecBnAdd                     (xmlSecBnPtr bn,
                                                 int delta);
    int         xmlSecBnReverse                 (xmlSecBnPtr bn);
    int         xmlSecBnCompare                 (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize dataSize);
    int         xmlSecBnCompareReverse          (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize dataSize);
    int         xmlSecBnGetNodeValue            (xmlSecBnPtr bn,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse);
    int         xmlSecBnSetNodeValue            (xmlSecBnPtr bn,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse,
                                                 int addLineBreaks);
    int         xmlSecBnBlobSetNodeValue        (const xmlSecByte *data,
                                                 xmlSecSize dataSize,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse,
                                                 int addLineBreaks);

## Description

## Details

### enum xmlSecBnFormat

    typedef enum {
        xmlSecBnBase64,
        xmlSecBnHex,
        xmlSecBnDec
    } xmlSecBnFormat;

The big numbers formats.

xmlSecBnBase64 | the base64 decoded binary blob.
xmlSecBnHex | the hex number.
xmlSecBnDec | the decimal number.

### xmlSecBnCreate ()

    xmlSecBnPtr xmlSecBnCreate                  (xmlSecSize size);

Creates a new BN object. Caller is responsible for destroying it by calling xmlSecBnDestroy function.

size : | the initial allocated BN size.
Returns : | the newly BN or a NULL if an error occurs.

### xmlSecBnDestroy ()

    void        xmlSecBnDestroy                 (xmlSecBnPtr bn);

Destroys bn object created with xmlSecBnCreate function.

bn : | the pointer to BN.

### xmlSecBnInitialize ()

    int         xmlSecBnInitialize              (xmlSecBnPtr bn,
                                                 xmlSecSize size);

Initializes a BN object. Caller is responsible for destroying it by calling xmlSecBnFinalize function.

bn : | the pointer to BN.
size : | the initial allocated BN size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnFinalize ()

    void        xmlSecBnFinalize                (xmlSecBnPtr bn);

Destroys bn object created with xmlSecBnInitialize function.

bn : | the pointer to BN.

### xmlSecBnGetData ()

    xmlSecByte* xmlSecBnGetData                 (xmlSecBnPtr bn);

Gets pointer to the binary bn representation.

bn : | the pointer to BN.
Returns : | pointer to binary BN data or NULL if an error occurs.

### xmlSecBnSetData ()

    int         xmlSecBnSetData                 (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);

Sets the value of bn to data.

bn : | the pointer to BN.
data : | the pointer to new BN binary data.
size : | the size of new BN data.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnGetSize ()

    xmlSecSize  xmlSecBnGetSize                 (xmlSecBnPtr bn);

Gets the size of binary data in bn.

bn : | the pointer to BN.
Returns : | the size of binary data.

### xmlSecBnZero ()

    void        xmlSecBnZero                    (xmlSecBnPtr bn);

Sets the value of bn to zero.

bn : | the pointer to BN.

### xmlSecBnFromString ()

    int         xmlSecBnFromString              (xmlSecBnPtr bn,
                                                 const xmlChar *str,
                                                 xmlSecSize base);

Reads bn from string str assuming it has base base.

bn : | the pointer to BN.
str : | the string with BN.
base : | the base for str.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnToString ()

    xmlChar*    xmlSecBnToString                (xmlSecBnPtr bn,
                                                 xmlSecSize base);

Writes bn to string with base base. Caller is responsible for freeing returned string with xmlFree.

bn : | the pointer to BN.
base : | the base for returned string.
Returns : | the string represenataion if BN or a NULL if an error occurs.

### xmlSecBnFromHexString ()

    int         xmlSecBnFromHexString           (xmlSecBnPtr bn,
                                                 const xmlChar *str);

Reads bn from hex string str.

bn : | the pointer to BN.
str : | the string with BN.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnToHexString ()

    xmlChar*    xmlSecBnToHexString             (xmlSecBnPtr bn);

Writes bn to hex string. Caller is responsible for freeing returned string with xmlFree.

bn : | the pointer to BN.
Returns : | the string represenataion if BN or a NULL if an error occurs.

### xmlSecBnFromDecString ()

    int         xmlSecBnFromDecString           (xmlSecBnPtr bn,
                                                 const xmlChar *str);

Reads bn from decimal string str.

bn : | the pointer to BN.
str : | the string with BN.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnToDecString ()

    xmlChar*    xmlSecBnToDecString             (xmlSecBnPtr bn);

Writes bn to decimal string. Caller is responsible for freeing returned string with xmlFree.

bn : | the pointer to BN.
Returns : | the string represenataion if BN or a NULL if an error occurs.

### xmlSecBnMul ()

    int         xmlSecBnMul                     (xmlSecBnPtr bn,
                                                 int multiplier);

Multiplies bn with multiplier.

bn : | the pointer to BN.
multiplier : | the multiplier.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnDiv ()

    int         xmlSecBnDiv                     (xmlSecBnPtr bn,
                                                 int divider,
                                                 int *mod);

Divides bn by divider and places modulus into mod.

bn : | the pointer to BN.
divider : | the divider
mod : | the pointer for modulus result.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnAdd ()

    int         xmlSecBnAdd                     (xmlSecBnPtr bn,
                                                 int delta);

Adds delta to bn.

bn : | the pointer to BN.
delta : | the delta.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnReverse ()

    int         xmlSecBnReverse                 (xmlSecBnPtr bn);

Reverses bytes order in bn.

bn : | the pointer to BN.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBnCompare ()

    int         xmlSecBnCompare                 (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize dataSize);

Compares the bn with data.

bn : | the pointer to BN.
data : | the data to compare BN to.
dataSize : | the data size.
Returns : | 0 if data is equal, negative value if bn is less or positive value if bn is greater than data.

### xmlSecBnCompareReverse ()

    int         xmlSecBnCompareReverse          (xmlSecBnPtr bn,
                                                 const xmlSecByte *data,
                                                 xmlSecSize dataSize);

Compares the bn with reverse data.

bn : | the pointer to BN.
data : | the data to compare BN to.
dataSize : | the data size.
Returns : | 0 if data is equal, negative value if bn is less or positive value if bn is greater than data.

### xmlSecBnGetNodeValue ()

    int         xmlSecBnGetNodeValue            (xmlSecBnPtr bn,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse);

Converts the node content from format to bn.

bn : | the pointer to BN.
cur : | the poitner to an XML node.
format : | the BN format.
reverse : | if set then reverse read buffer after reading.
Returns : | 0 on success and a negative values if an error occurs.

### xmlSecBnSetNodeValue ()

    int         xmlSecBnSetNodeValue            (xmlSecBnPtr bn,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse,
                                                 int addLineBreaks);

Converts the bn and sets it to node content.

bn : | the pointer to BN.
cur : | the poitner to an XML node.
format : | the BN format.
reverse : | the flag that indicates whether to reverse the buffer before writing.
addLineBreaks : | the flag; it is equal to 1 then linebreaks will be added before and after new buffer content.
Returns : | 0 on success and a negative values if an error occurs.

### xmlSecBnBlobSetNodeValue ()

    int         xmlSecBnBlobSetNodeValue        (const xmlSecByte *data,
                                                 xmlSecSize dataSize,
                                                 xmlNodePtr cur,
                                                 xmlSecBnFormat format,
                                                 int reverse,
                                                 int addLineBreaks);

Converts the blob and sets it to node content.

data : | the pointer to BN blob.
dataSize : | the size of BN blob.
cur : | the poitner to an XML node.
format : | the BN format.
reverse : | the flag that indicates whether to reverse the buffer before writing.
addLineBreaks : | if the flag is equal to 1 then linebreaks will be added before and after new buffer content.
Returns : | 0 on success and a negative values if an error occurs.