Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC VCard Library SILC VCard Interface SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC Math Library SILC MP Interface SILC Math Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC Key Repository Library SILC SKR Interface SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Engine Interface SILC Public Key Payload Interface SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Function silc_mp_modinv SYNOPSIS
        void silc_mp_modinv(SilcMPInt *inv, SilcMPInt *a, SilcMPInt *n);
DESCRIPTION
        Find multiplicative inverse using Euclid's extended algorithm.
        Computes inverse such that a * inv mod n = 1, where 0 < a < n.
        Algorithm goes like this:

        g(0) = n    v(0) = 0
        g(1) = a    v(1) = 1

        y = g(i-1) / g(i)
        g(i+1) = g(i-1) - y * g(i) = g(i)-1 mod g(i)
        v(i+1) = v(i-1) - y * v(i)

        do until g(i) = 0, then inverse = v(i-1). If inverse is negative then n,
        is added to inverse making it positive again. (Sometimes the algorithm
        has a variable u defined too and it behaves just like v, except that
        initalize values are swapped (i.e. u(0) = 1, u(1) = 0). However, u is
        not needed by the algorithm so it does not have to be included.)
SILC MP Interface SilcMPInt silc_mp_init silc_mp_uninit silc_mp_size silc_mp_sizeinbase silc_mp_set silc_mp_set_ui silc_mp_set_si silc_mp_set_str silc_mp_get_ui silc_mp_get_str silc_mp_add silc_mp_add_ui silc_mp_sub silc_mp_sub_ui silc_mp_mul silc_mp_mul_ui silc_mp_mul_2exp silc_mp_sqrt silc_mp_div silc_mp_div_ui silc_mp_div_qr silc_mp_div_2exp silc_mp_div_2exp_qr silc_mp_mod silc_mp_mod_ui silc_mp_mod_2exp silc_mp_pow silc_mp_pow_ui silc_mp_pow_mod silc_mp_pow_mod_ui silc_mp_modinv silc_mp_gcd silc_mp_gcdext silc_mp_cmp silc_mp_cmp_si silc_mp_cmp_ui silc_mp_mp2bin silc_mp_mp2bin_noalloc silc_mp_bin2mp silc_mp_abs silc_mp_neg silc_mp_and silc_mp_or silc_mp_xor

Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index