bn: XML Security Library Reference Manual

## bn bn — Big numbers support functions. |

## Stability Level

Stable, unless otherwise indicated

## Functions

xmlSecBnPtr | xmlSecBnCreate ()
void | xmlSecBnDestroy ()
int | xmlSecBnInitialize ()
void | xmlSecBnFinalize ()
xmlSecByte * | xmlSecBnGetData ()
int | xmlSecBnSetData ()
xmlSecSize | xmlSecBnGetSize ()
void | xmlSecBnZero ()
int | xmlSecBnFromString ()
xmlChar * | xmlSecBnToString ()
int | xmlSecBnFromHexString ()
xmlChar * | xmlSecBnToHexString ()
int | xmlSecBnFromDecString ()
xmlChar * | xmlSecBnToDecString ()
int | xmlSecBnMul ()
int | xmlSecBnDiv ()
int | xmlSecBnAdd ()
int | xmlSecBnReverse ()
int | xmlSecBnCompare ()
int | xmlSecBnCompareReverse ()
int | xmlSecBnGetNodeValue ()
int | xmlSecBnSetNodeValue ()
int | xmlSecBnBlobSetNodeValue ()

## Types and Values

enum | xmlSecBnFormat

## Description

## Functions

### xmlSecBnCreate ()

    xmlSecBnPtr
    xmlSecBnCreate (xmlSecSize size);

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

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

bn | the pointer to BN. |

### xmlSecBnGetData ()

    xmlSecByte *
    xmlSecBnGetData (xmlSecBnPtr bn);

Gets pointer to the binary `bn` representation.

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

bn | the pointer to BN. |

#### Returns

the size of binary data.

### xmlSecBnZero ()

    void
    xmlSecBnZero (xmlSecBnPtr bn);

Sets the value of `bn` to zero.

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

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` .

#### Parameters

bn | the pointer to BN. |
cur | the pointer 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.

#### Parameters

bn | the pointer to BN. |
cur | the pointer 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.

#### Parameters

data | the pointer to BN blob. |
dataSize | the size of BN blob. |
cur | the pointer 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.

## Types and Values

### enum xmlSecBnFormat

The big numbers formats.

#### Members

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