
#use wml::openssl-macros area=docs page=BN_add_word

<title>Documents, BN_add_word(3)</title>

<h1>BN_add_word(3)</h1>

#use wml::imp::generic

{:
## What's this? [[s|(<STRONG>[^<].+?)</A>(</STRONG><DD>)|$1$2|sg]]
[[s|<P>\s+<P>|<P>|sg]]
[[s|<P>\s+</|</|sg]]
[[s|<DD>\s*<DT>|<DD>&nbsp;<DT>|sg]]
[[s|<DD>\s*</DL>|<DD>&nbsp;</DL>|sg]]
[[s|\[|&#91;|sg]]
[[s|\]|&#93;|sg]]

<!-- INDEX BEGIN -->

<UL>

	<LI><A HREF="#NAME">NAME</A>
	<LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
	<LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
	<LI><A HREF="#RETURN_VALUES">RETURN VALUES</A>
	<LI><A HREF="#SEE_ALSO">SEE ALSO</A>
	<LI><A HREF="#HISTORY">HISTORY</A>
</UL>
<!-- INDEX END -->

<HR>
<P>
<HR>
<H1><A NAME="NAME">NAME</A></H1>
<P>
BN_add_word, BN_sub_word, BN_mul_word, BN_div_word, BN_mod_word -
arithmetic functions on BIGNUMs with integers

</P>
<P>
<HR>
<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
<PRE> #include &lt;openssl/bn.h&gt;
</PRE>
<PRE> int BN_add_word(BIGNUM *a, BN_ULONG w);
</PRE>
<PRE> int BN_sub_word(BIGNUM *a, BN_ULONG w);
</PRE>
<PRE> int BN_mul_word(BIGNUM *a, BN_ULONG w);
</PRE>
<PRE> BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
</PRE>
<PRE> BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
</PRE>
<P>
<HR>
<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
<P>
These functions perform arithmetic operations on BIGNUMs with unsigned
integers. They are much more efficient than the normal BIGNUM arithmetic
operations.

</P>
<P>
<CODE>BN_add_word()</CODE> adds <STRONG>w</STRONG> to <STRONG>a</STRONG> (<CODE>a+=w</CODE>).

</P>
<P>
<CODE>BN_sub_word()</CODE> subtracts <STRONG>w</STRONG> from <STRONG>a</STRONG> (<CODE>a-=w</CODE>).

</P>
<P>
<CODE>BN_mul_word()</CODE> multiplies <STRONG>a</STRONG> and <STRONG>w</STRONG> (<CODE>a*=w</CODE>).

</P>
<P>
<CODE>BN_div_word()</CODE> divides <STRONG>a</STRONG> by <STRONG>w</STRONG> (<CODE>a/=w</CODE>) and returns the remainder.

</P>
<P>
<CODE>BN_mod_word()</CODE> returns the remainder of <STRONG>a</STRONG> divided by <STRONG>w</STRONG> (<CODE>a%w</CODE>).

</P>
<P>
For <CODE>BN_div_word()</CODE> and <CODE>BN_mod_word(),</CODE> <STRONG>w</STRONG> must not be 0.

</P>
<P>
<HR>
<H1><A NAME="RETURN_VALUES">RETURN VALUES</A></H1>
<P>
<CODE>BN_add_word(),</CODE> <CODE>BN_sub_word()</CODE> and
<CODE>BN_mul_word()</CODE> return 1 for success, 0 on error. The error
codes can be obtained by <A HREF="../crypto/ERR_get_error.html#">ERR_get_error(3)</A>.

</P>
<P>
<CODE>BN_mod_word()</CODE> and <CODE>BN_div_word()</CODE> return <STRONG>a</STRONG>%<STRONG>w</STRONG> on success and
<STRONG>(BN_ULONG)-1</STRONG> if an error occurred.

</P>
<P>
<HR>
<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
<P>
<A HREF="../crypto/bn.html#">bn(3)</A>, <A HREF="../crypto/ERR_get_error.html#">ERR_get_error(3)</A>, <A HREF="../crypto/BN_add.html#">BN_add(3)</A>



</P>
<P>
<HR>
<H1><A NAME="HISTORY">HISTORY</A></H1>
<P>
<CODE>BN_add_word()</CODE> and <CODE>BN_mod_word()</CODE> are available in
all versions of SSLeay and OpenSSL. <CODE>BN_div_word()</CODE> was added in
SSLeay 0.8, and <CODE>BN_sub_word()</CODE> and <CODE>BN_mul_word()</CODE>
in SSLeay 0.9.0.

</P>
<P>
Before 0.9.8a the return value for <CODE>BN_div_word()</CODE> and
<CODE>BN_mod_word()</CODE> in case of an error was 0.

</P>
:}

