# FreeBSD Manual Pages

FBB::BigInt(3bobcat) Big Integers FBB::BigInt(3bobcat)NAMEFBB::BigInt - Arithmetic on Integers of Unlimited SizeSYNOPSIS#include<bobcat/bigint> Linking option:-lbobcat-lcryptoDESCRIPTIONThis class is defined as a wrapper class around theopenSSLBNseries of functions, offering members to perform arithmetic on integral values of unlimited sizes. Members are offered to generate primes and to per- form all kinds of common arithmetic operations onBigIntobjects. Also, conversions to characters and standard numerical value types are of- fered. Below, the phrasetheobjectmay also refer to the object's value. The context in which this occurs will make clear that the object's value rather than the object as-is is referred to. Various constructors acceptBIGNUMarguments. TypeBIGNUMis the type containing an integer of unlimited precision as defined by OpenSSL. Signs ofBigIntare handled in a special way. Whether aBigIntis nega- tive or positive is determined by its sign-flag, and not by a sign bit as is the case withinttyped values. SinceBigIntvalues have unlim- ited precision shifting values to the left won't change their signs. Operators return either a reference to the current (modified) object or return aBigIntobject containing the computed value. The rule followed here was to implement the operators analogously to the way the opera- tors work oninttype values and variables. E.g.,operator+()returns aBigIntvalue whereasoperator+=()returns aBigInt_ reference. All members modifying their objects return a reference to the current (modified) object. All members not modifying the current object return aBigIntobject. If both members exists performing the same functional- ity the name of the member returning aBigIntobject ends in ac(const) (e.g.,addModandaddModc). Almost all operators, members and constructors (except for the default constructor) throwExceptionexceptions on failure.INHERITS FROM-TYPEThe classBigIntdefines the typeWord, which is equal to the typeBN_ULONGused byOpenSSLto store integral values of unlimited preci- sion. AWordis anunsignedlong, which is, depending on the architec- ture, usually 64 or 32 bits long.ENUMERATIONSMsbThis (most significant bit) enumeration is used when generating a cryp- tographically strong random number. Its values are: oMSB_UNKNOWN: The most significant bit may be 0 or 1. oMSB_IS_ONE: The most significant bit is guaranteed to be 1. oTOP_TWO_BITS_ONE: The two most significant bits are guaranteed to be 1, resulting in a product of two values each containingnBitshaving2*nBitsbits.LsbThis (least significant bit) enumeration is used when generating random numbers, ensuring that the resulting value is either odd or even. oEVEN: The random value will be an even value; oODD: The random value will be an odd value.CONSTRUCTORSoBigInt(): The default constructor initializes aBigIntvalue to 0. oexplicitBigInt(BIGNUMconst&value): This constructor initializes aBigIntfrom aconstBIGNUM. oexplicitBigInt(BIGNUMconst*value): This constructor initializes aBigIntfrom a pointer to aconstBIGNUM. oBigInt(Typevalue): This constructor is defined as a member template. Any type that can be converted using a static cast to anunsignedlongcan be used as argument to this constructor. Promotion is allowed, so in many situations whereBigInts are expected a plain numerical value can be used as well. oBigInt(charconst*bigEndian,size_tlength,boolnegative=false): This constructor initializes aBigIntfromlengthbig-endian en- coded bytes stored inbigEndian. This constructor interprets thecharvalues pointed at bybigEndianas unsigned values. Use this constructor to reconstruct aBigIntobject from the data made available by thebigEndianmember. If the number represents a negative value, then provide a third argumenttrue. oexplicitBigInt(std::stringconst&bigEndian,boolnegative=false): This constructor initializes aBigIntfrom the bytes stored inbigEndian, which must be big-endian encoded. This constructor interprets thecharvalues stored inbigEndianas unsigned val- ues. If the number that is stored inbigEndianrepresents a neg- ative value, then provide a second argumenttrue. The standard copy constructor is available, the move constructor is not available.MEMBER FUNCTIONSoBigInt&addMod(BigIntconst&rhs,BigIntconst&mod):Rhsis added (modulomod) to the current object. oBigIntaddModc(BigIntconst&rhs,BigIntconst&mod): The sum (modulomod) of the current object andrhsis returned. oBigInt::Wordat(size_tindex)const: Returns theWordatindex. E.g., on a 32 bit architecture, if theBigIntvalue equals 2, thenat(0)returns 0, andat(1)re- turns 2. Ifindexequals or exceeds the value returned bynWordsanFBB::Exceptionis thrown. oBIGNUMconst&bignum()const: A reference to theBIGNUMvalue maintained by the currentBigIntobject is returned. ochar*bigEndian()const: The value represented by the current object is stored in a se- ries ofchartyped values in big-endian order. If a value con- sists of 5chars the eight most significant bits will be stored in thecharhaving index value 0, the eight least significant bits will be stored in thecharhaving index value 4. When needed simply swapchar[i]withchar[j](i = 0 .. nBytes/2, j = nBytes-1 .. nBytes/2) to convert to little-endian order. The re- turn value consists of a series ofsizeInBytes()(see below) dy- namically allocatedcharvalues. The caller ofbigEndianowns the allocated memory and should eventually delete it again usingdelete[]. Note that the current object'ssigncannot be inferred from the return value. oBigInt&clearBit(size_tindex): The current object's bit at index positionindexis cleared. oBigIntclearBit(size_tindex)const: A copy of the current object having its bit at index positionindexcleared. olonglongdiophantus(longlong*factor1,longlong*factor2,longlongvalue1,longlongvalue2): The integral solution offactor1*value1+factor2*value2=gcdis computed. The function returns the greatest common divi- sor (gcd) ofvalue1andvalue2, and returns their multiplication factors in, respectively,*factor1and*factor2. The solution is not unique: another solution is obtained by addingk*value2tofactor1and subtractingk*value1fromfactor2. For values ex- ceedingstd::numeric_limits_long,long_::max()the next member can be used. oBigIntdiophantus(BigInt*factor1,BigInt*factor2,BigIntconst&value1,BigIntconst&value2): The integral solution offactor1*value1+factor2*value2=gcdis computed. The function returns the greatest common divi- sor (gcd) ofvalue1andvalue2, and returns their multiplication factors in, respectively,*factor1and*factor2. The solution is not unique: another solution is obtained by addingk*value2tofactor1and subtractingk*value1fromfactor2. oBigInt&div(BigInt*remainder,BigIntconst&rhs): The current object is divided byrhs. The division's remainder is returned in*remainder. oBigIntdivc(BigInt*remainder,BigIntconst&rhs)const: The quotient of the current object andrhsis returned. The di- vision's remainder is returned in*remainder. ointcompare(BigIntconst&rsh)const: Using signed values, if the current object is smaller thanrhs-1 is returned; if they are equal 0 is returned; if the current object is larger thanths1 is returned (see alsouCompare). oBigInt&exp(BigIntconst&exponent): The current object is raised to the powerexponent. oBigIntexpc(BigIntconst&exponent)const: The current object raised to the powerexponentis returned. oBigInt&expMod(BigIntconst&exponent,BigIntconst&mod): The current object is raised to the powerexponentmodulomod. oBigIntexpModc(BigIntconst&exponent,BigIntconst&mod)const: The current object raised to the powerexponentmodulomodis returned. oBigInt&gcd(BigIntconst&rhs): The greatest common divisor (gcd) of the current object andrhsis assigned to the current object. To compute the least common multiple (lcm) the following relationship can be used: lcm(a, b) = a * b / a.gcd(b) oBigIntgcdc(BigIntconst&rhs)const: The greatest common divisor (gcd) of the current object andrhsis returned. To compute the least common multiple (lcm) the fol- lowing relationship can be used: lcm(a, b) = a * b / a.gcd(b) oboolhasBit(size_tindex):Trueis returned if the bit at index positionindexhas been set,falseotherwise. oBigInt&inverseMod(BigIntconst&mod): The inverse of the current object modulomodis assigned to the current object. This is the valueretfor which the following expression holds true: (*this * ret) % mod = 1 oBigIntinverseModc(BigIntconst&mod)const: This inverse of the current object modulomodis returned. oboolisNegative()const: Returnstrueif the current object contains a negative value. oboolisOdd()const: Returnstrueif the current object is an odd value. oboolisOne()const: Returnstrueif the current object equals one (1). oBigInt&isqrt(): The current object's integer square root value is assigned to the current object. The integer square root of a valuexis the biggest integral value whose square does not exceedx. E.g.,isqrt(17)==4. AnExceptionexception is thrown if the current object's value is smaller than one. oBigIntisqrtc()const: The integer square root of the current object is returned. AnExceptionexception is thrown if the current object's value is smaller than one. oboolisZero()const: Returnstrueif the current object equals zero (0). oBigInt&lshift(): The current object's bits are shifted one bit to the left. The object's sign remains unaltered. oBigIntlshiftc(): The current object's bits shifted one bit to the left are re- turned. The object's sign will be equal to the current object's sign. oBigInt&lshift(size_tnBits): The current object's bits are shiftednBitsto the left. The ob- ject's sign remains unaltered. oBigIntlshiftc(size_tnBits)const: The current object's bits shiftednBitsbit to the left are re- turned. The object's sign will be equal to the current object's sign. oBigInt&maskBits(size_tlowerNBits): The current object'slowerNBitslower bits are kept, its higher order bits are cleared. The object's sign is not affected. oBigIntmaskBitsc(size_tlowerNBits)const: A copy of the current object is returned having all but itslow-erNBitslower bits cleared. The sign of the returned object will be equal to the current object's sign. osize_tmaxWordIndex()const: Returns the maximumWord-index that can be used with theatandsetWordmembers for the currentBigIntvalue. oBigInt&mulMod(BigIntconst&rhs,BigIntconst&mod): The current object is multiplied (modulomod) byrhs. oBigIntmulModc(BigIntconst&rhs,BigIntconst&mod)const: The current object multiplied (modulomod) byrhsis returned. oBigInt&negate(): The current object's value is negated (i.e., the value changes its sign). oBigIntnegatec()const: The negated value of the current object is returned. oBigInt&rshift(): The current object's bits are shifted one bit to the right. The object's sign remains unaltered. oBigIntrshiftc(): The current object's bits shifted one bit to the right are re- turned. The object's sign will be equal to the current object's sign. oBigInt&rshift(size_tnBits): The current object's bits are shiftednBitsto the right. The object's sign remains unaltered. oBigIntrshiftc(size_tnBits)const: The current object's bits shiftednBitsbit to the right are re- turned. The object's sign will be equal to the current object's sign. oBigInt&setBit(size_tindex): The bit at index positionindexis set. oBigIntsetBitc(size_tindex)const: A copy of the current object is returned having its bit at index positionindexset. oBigInt&setBit(size_tindex,boolvalue): The bit at index positionindexis set tovalue. oBigIntsetBitc(size_tindex,boolvalue)const: A copy of the current object is returned having its bit at index positionindexset tovalue. oBigInt&setNegative(boolnegative): The current object's sign will be set to negative if the func- tion's argument istrue, it will be set to positive if the func- tion's argument isfalse. oBigIntsetNegativec(boolnegative)const: A copy of the current object is return having a negative sign if the function's argument istrueand a positive sign if the func- tion's argument isfalse. ovoidsetWord(size_tindex,BigInt::Wordvalue): Assignsvalueto theWordatindex. E.g., on a 32 bit architec- ture, if theBigIntvalue equals 2, then aftersetWord(1,1)the value has become 2. Ifindexexceeds the value returned bynWordsanFBB::Exceptionis thrown. osize_tsize()const: The number of bytes required to store the currentBIGNUMvalue is returned. osize_tsizeInBits()const: The number of bits required to represent the currentBIGNUMvalue is returned. osize_tsizeInBytes()const: The number of bytes required to store the currentBIGNUMvalue is returned (returns the same value as thesizememeber does). osize_tconstexprsizeOfWord()const:BigIntvalues are stored in units of `words', which are unsigned long values. These values may consist of, e.g., 32 or 64 bits. The number of bytes occupied by a `word' is returned: 4 for a 32 bit value, 8 for a 64 bit value, and possibly other values, de- pending on specific architecture peculiarities. The value re- turned by this member, therefore, is architecture dependent. oBigInt&sqr(): The current object's value is squared. oBigIntsqrc()const: The square of the current object is returned. oBigInt&sqrMod(BigIntconst&mod)const: The current object's value is squared modulomod. oBigIntsqrModc(BigIntconst&mod)const: The square (modulomod) of the current object is returned. oBigInt&subMod(BigIntconst&rhs,BigIntconst&mod):Rhsis subtracted modulomodfrom the current object. oBigIntsubModc(BigIntconst&rhs,BigIntconst&mod)const: The difference (modulomod) of the current object andrhsis re- turned. ovoidswap(BigInt&other): The current object swaps its value withother. oBigInt&tildeBits(): All the bits in the bytes of the current object and the sign of the current object are toggled. So, after Bigint b(5); b.tildeBits();bcontains the value -250. Also see the discussion withopera-tor~()below. oBigInttildeBitsc()const: A copy of the current object whose bits are toggled is returned. oBigInt&tildeInt(): The `tilde' operation is performed on the current object using the standardintsemantics. E.g., ~5 results in -6. Also see the discussion withoperator~()below. oBigInttildeIntc()const: A copy of the current object is returned to which the `tilde' operation has been performed using the standardintsemantics. ounsignedlongulong()const: The absolute value stored in the current object is returned as an unsigned long. If it cannot be represented by an unsigned long it returns0xffffffffL. ointuCompare(BigIntconst&rsh)const: Using absolute values, if the current object is smaller thanrhs-1 is returned; if they are equal 0 is returned; if the current object is larger thanths1 is returned (see alsouCompare).OVERLOADED OPERATORSExcept for some operators all operators perform their intuitive opera- tions. Where that isn't completely true an explanatory remark is pro- vided. E.g.,operator*()multiplies twoBigInts, possibly promoting one of the operands;operator*=()multiplies the lhs by the rhsBigInt, possibly promoting the rhs operand. Here are the available operators:Unaryoperators:obooloperatorbool()const: Returnstrueif theBigIntvalue is unequal zero, otherwisefalseis returned. oBigInt&operator++(): oBigIntoperator++(int): oBigInt&operator--(): oBigIntoperator--(int): oBigIntoperator-(): ointoperator[](size_tidx)const: WithBigIntobjects it returns the bit-value of the object'sidxth bit as the value 0 or 1. oBigInt::Bitoperator[](size_tidx): With non-constBigIntobjects it returns a reference to the bit-value of the object'sidxth bit. When used aslvalueassign- ing a 0 or non-zero value to the operator's return value will either clear or set the bit. Likewise, the following arithmetic assignment operators may be used: binary or (|=), binary and (_=) or binary xor (^=). When used asrvaluethe value of the object'sidxth bit is returned as aboolvalue. When inseerted into astd::ostreamthe bit's value is displayed as 0 or 1. oBigIntoperator~(): This operator isnotimplemented as it cannot be implemented so that it matches the actions of this operator when applied tointtype values. When used onintvalues this operator toggles all theint's bits. E.g., ~5 represents -6, and ~-6 again equals five. The -6 is the result of the sign bit ofintvalues. The obvious imple- mentation ofBigInt::operator~()is to toggle all the value's bits and to toggle its sign bit. For 5 this would result in -250: 5, being 101 (binary), fits in one byte, so ~5 becomes 11111010 (binary), which is 250. Its sign must be reversed as well, so it becomes -250. This clearly differs from the value represented by theintconstant ~5: when constructingBig-Int(~5), the value -6 is obtained. It is possible to change the implementation. E.g., after Bigint b(5); b = ~b;~bcould be implemented so that it results in the value -6. But this too leads to unexpected results. While5_~5==0, this would no longer hold true forBigIntobjects: Assumingbcon- tains 5 thenb_~bwould expand to (binary)101_(negative)110which equals (binary) 100. Since either implementation produces unexpected resultsBig-Int::operator~()was not implemented. Instead two members are offered:tildeBits(), toggling all the bits of all theBigIntbytes and toggling its sign (so Bigint b(5); b.tildeBits(); changesb's value into -250), andtildeInt()changing the ob- ject's value into the value that would have been obtained if aBigIntwas a mereint(so Bigint b(5); b.tildeInt(); changesb's value into -6).Binaryoperators:oBigIntoperator*(BigIntconst&lhs,BigIntconst&rhs): oBigIntoperator/(BigIntconst&lhs,BigIntconst&rhs): This operator returns the quotient of thelhsobject divided by therhsobject. The remainder is lost (The memberdivperforms the division and makes the remainder available as well). oBigIntoperator%(BigIntconst&lhs,BigIntconst&rhs): oBigIntoperator+(BigIntconst&lhs,BigIntconst&rhs): oBigIntoperator-(BigIntconst&lhs,BigIntconst&rhs): oBigIntoperator<<(BigIntconst&lhs,size_tnBits): See also thelshiftmembers. Iflhsis positive, oBigIntoperator>>=(BigIntconst&lhs,size_tnBits): See also thershiftmembers. oBigIntoperator&(BigIntconst&lhs,BigIntconst&rhs): This operator returns aBigIntvalue consisting of thebit_and-ed bits and sign flags of lhs and rhs operands. Conse- quently, if one operand is positive, the resulting value will be positive. oBigIntoperator|(BigIntconst&lhs,BigIntconst&rhs): This operator returns aBigIntvalue consisting of thebit_or-ed bits and sign flags of lhs and rhs operands. Consequently, if either operand is negative, the result will be negative. oBigIntoperator^(BigIntconst&lhs,BigIntconst&rhs): This operator returns aBigIntvalue consisting of thebit_xor-ed bits and sign flags of lhs and rhs operands. Conse- quently, if exactly one operand is negative, the result will be negative.(Arithmetic)assignmentoperator(s):oBigInt&operator=(BigIntconst&rhs): oBigInt&operator*=(BigIntconst&rhs): oBigInt&operator/=(BigIntconst&rhs): This operator assigns the result of the (integer) division of the currentBigIntobject bythsto the current object. The re- mainder is lost. The memberdivdivides and makes the remainder available as well. oBigInt&operator%=(BigIntconst&rhs): oBigInt&operator+=(BigIntconst&rhs): oBigInt&operator-=(BigIntconst&rhs): oBigInt&operator<<=(size_tnBits): See also thelshiftmembers. oBigInt&operator>>=(size_tnBits): See also thershiftmembers. oBigInt&operator&=(BigIntconst&rhs): This operatorbit_ands the bits and sign flags of the current object and the rhs operand. oBigInt&operator|=(BigIntconst&rhs): This operatorbit_ors the bits and sign flags of the current ob- ject and the rhs operand. oBigInt&operator^=(BigIntconst&rhs): This operatorbit_xors the bits and sign flags of the current object and the rhs operand. Note that the move operator is not availableSTATIC MEMBERSAll members returning aBigIntcomputed from a set of arguments and not requiring an existingBigIntobject are defined as static members. oBigIntfromText(std::stringtext,intmode=0): This member converts a textual representation of a number to aBigIntvalue. Conversion continues until the end oftextor un- til a character outside of an expected range is encountered. The expected range may be preset by specifyingmodeasios::dec,ios::oct,orios::hexor (the default) the expected range is de- termined byfromTextitself by inspecting the characters intext. By default iftextcontains hexadecimal characters thenfromTextassumes that the number is represented as a hexadecimal value (e.g.,"abc"is converted to the (decimal) value 2748); iftextstarts with 0 and contains only characters in the range 0 until (including) 7 thenfromTextassumes the number is represented as an octal value (e.g.,"01234"is converted to the (decimal) value 668). Otherwise a decimal value is assumed. If the text does not represent a valid numerical value (of the given extraction mode) then aFBB::Exceptionexception is thrown (fromText:textdoesnotrepresentaBigIntvalue). oBigIntrand(size_tsize,Msbmsb=MSB_IS_ONE,Lsblsb=ODD): This member returns a cryptographically strong pseudo-random number ofsizebits. The most significant bit(s) can be con- trolled bymsb(by defaultMSB_IS_ONE), the least significant bit can be controlled bylsb(by defaultODD). Before calling this member the random number generator must have been seeded. From theRAND_add(3ssl) man-page: OpenSSL makes sure that the PRNG state is unique for each thread. On systems that provide/dev/urandom, the randomness de- vice is used to seed the PRNG transparently. However, on all other systems, the application is responsible for seeding the PRNG by callingRAND_add(3ssl),RAND_egd(3ssl),RAND_load_file(3ssl), orRAND_seed(3ssl). oBigIntrandRange(BigIntconst&max): This member returns a cryptographically strong pseudo-random number in the range0_=number_max. Before calling this mem- ber the random number generator must have been seeded (see alsorand, described above). oBigIntsetBigEndian(std::stringconst&bytes): Thebytes.length()bytes ofbytesare used to compute aBigIntobject which is returned by this function. The characters inbytesare interpreted as a series of bytes in big-endian order. See also the member functionbigEndian()above. The returnedBigInthas a positive value. oBigIntprime(size_tnBits,BigIntconst*mod=0,BigIntconst*rem=0,PrimeTypeprimeType=ANY): This member returns a prime number ofbBitsbits. If bothmodandremare non-zero, the condition prime % mod == rem. (E.g., useprime%mod==1in order to suit a given generator). The parameterprimeTypecan beANY,(prime-1)/2may or may not be a prime. If it isSAFEthen(prime-1)/2will be a (so-calledsafe) prime. oBigIntpseudoRand(size_tsize,Msbmsb=MSB_IS_ONE,Lsblsb=ODD): This member returns a potentially predictable pseudo-random num- ber ofsizebits. The most significant bit(s) can be controlled bymsb(by defaultMSB_IS_ONE), the least significant bit can be controlled bylsb(by defaultODD). It can be used for non-cryp- tographic purposes and for certain purposes in cryptographic protocols, but usually not for key generation. oBigIntpseudoRandRange(BigIntconst&max): This member returns a potentially predictable pseudo-random number in the range0_=number_max.FREE FUNCTIONS IN THE FBB NAMESPACEostd::ostream&operator<<(ostream&out,BigIntconst&value): Insertsvalueinto the providedostream. If thehexmanipulator has been inserted into the stream before inserting theBigIntvalue the value will be displayed as a hexadecimal value (with- out a leading0x); if theoctmanipulator has been inserted the value will be represented as an octal value (starting with a 0). The value will be displayed as a decimal value if thedecmanip- ulator is active. If theBigIntvalue is negative its value will be preceded by a minus character. ostd::istream&operator>>(istream&in,BigInt&value): Extractsvaluefrom the providedistream. Depending on the cur- rently set extraction mode (dec,oct,orhex) the matching set of characters will be extracted frominand converted to a num- ber which is stored invalue. Extraction stops at EOF or at the first character outside of the range of characters matching the extraction mode. if no numerical characters were extracted the stream'sfailbitis set. The extracted value may be preceded by a minus character, resulting in an extracted negative value.EXAMPLE#include <iostream> #include <bobcat/bigint> using namespace std; using namespace FBB; int main() { BigInt value(BigInt::prime(100)); BigInt mod(BigInt::rand(50)); BigInt inverse(value.inverseModc(mod)); cout << '(' << value << " * " << inverse << ") % " << mod << " = " << ( value * inverse ) % mod << endl; }FILESbobcat/bigint- defines the class interfaceSEE ALSObobcat(7),diffiehellman(3bobcat),RAND_add(3ssl),RAND_egd(3ssl),RAND_load_file(3ssl),RAND_seed(3).BUGSSep/Oct 2013: due to a change in library handling by the linker (cf. http://fedoraproject.org/wiki/UnderstandingDSOLinkChange and https://wiki.debian.org/ToolChain/DSOLinking) libraries that are indi- rectly required are no longer automatically linked to your program. WithBigIntthis islibcrypto, which requires programs to link to bothbobcatandcrypto.DISTRIBUTION FILESobobcat_3.25.01-x.dsc: detached signature; obobcat_3.25.01-x.tar.gz: source archive; obobcat_3.25.01-x_i386.changes: change log; olibbobcat1_3.25.01-x_*.deb: debian package holding the li- braries; olibbobcat1-dev_3.25.01-x_*.deb: debian package holding the li- braries, headers and manual pages; ohttp://sourceforge.net/projects/bobcat: public archive location;BOBCATBobcat is an acronym of `Brokken's Own Base Classes And Templates'.COPYRIGHTThis is free software, distributed under the terms of the GNU General Public License (GPL).AUTHORFrank B. Brokken (f.b.brokken@rug.nl). libbobcat-dev_3.25.01-x.tar.gz 2005-2015 FBB::BigInt(3bobcat)

NAME | SYNOPSIS | DESCRIPTION | INHERITS FROM | TYPE | ENUMERATIONS | CONSTRUCTORS | MEMBER FUNCTIONS | OVERLOADED OPERATORS | STATIC MEMBERS | FREE FUNCTIONS IN THE FBB NAMESPACE | EXAMPLE | FILES | SEE ALSO | BUGS | DISTRIBUTION FILES | BOBCAT | COPYRIGHT | AUTHOR

Want to link to this manual page? Use this URL:

<https://www.freebsd.org/cgi/man.cgi?query=bigint&sektion=3bobcat&manpath=FreeBSD+12.1-RELEASE+and+Ports>