Annotation of pgp/src/rsaio.h, revision 1.1

1.1     ! root        1: /*     C include file for RSA library I/O routines
        !             2: 
        !             3:        (c) Copyright 1986 by Philip Zimmermann.  All rights reserved.
        !             4:        The author assumes no liability for damages resulting from the use 
        !             5:        of this software, even if the damage results from defects in this 
        !             6:        software.  No warranty is expressed or implied.  
        !             7: 
        !             8:        The external data representation for RSA messages and keys that
        !             9:        some of these library routines assume is outlined in a paper by 
        !            10:        Philip Zimmermann, "A Proposed Standard Format for RSA Cryptosystems",
        !            11:        IEEE Computer, September 1986, Vol. 19 No. 9, pages 21-34.
        !            12:        Some revisions to this data format have occurred since the paper
        !            13:        was published.
        !            14: 
        !            15:        NOTE:  This assumes previous inclusion of "rsalib.h"
        !            16: */
        !            17: 
        !            18: /* #define XHIGHFIRST */ /* determines external integer byteorder for I/O */
        !            19: 
        !            20: /*--------------------- Byte ordering stuff -------------------*/
        !            21: #ifdef NEEDSWAP
        !            22: #undef NEEDSWAP        /* make sure NEEDSWAP is initially undefined */
        !            23: #endif
        !            24: 
        !            25: #ifdef HIGHFIRST       /* internal HIGHFIRST byte order */
        !            26: #ifndef XHIGHFIRST     /* external LOWFIRST byte order */
        !            27: #define NEEDSWAP /* internal byteorder differs from external byteorder */
        !            28: #endif
        !            29: #else  /* internal LOWFIRST byte order */
        !            30: #ifdef XHIGHFIRST      /* external HIGHFIRST byte order */
        !            31: #define NEEDSWAP /* internal byteorder differs from external byteorder */
        !            32: #endif
        !            33: #endif /* internal LOWFIRST byte order */
        !            34: 
        !            35: #ifdef NEEDSWAP
        !            36: #define hilo_swap(r1,numbytes) hiloswap(r1,numbytes)
        !            37: #define convert_order(r) hiloswap(r,units2bytes(global_precision))
        !            38: #else
        !            39: /* hilo_swap is nil because external representation is already the same */
        !            40: #define hilo_swap(r1,numbytes) /* nil statement */
        !            41: #define convert_order(r)       /* nil statement */
        !            42: #endif /* not NEEDSWAP */
        !            43: 
        !            44: /*------------------ End byte ordering stuff -------------------*/
        !            45: 
        !            46: 
        !            47: #ifndef RSAIO  /* not compiling RSAIO */
        !            48:        /*      Bug in DSP2101 C compiler -- no function protypes 
        !            49:                allowed when compiling those same functions. */
        !            50: 
        !            51: #ifdef EMBEDDED
        !            52: int putchar(int c);            /* standard C library function from <stdio.h> */
        !            53: #endif /* EMBEDDED */
        !            54: 
        !            55: int string_length(char *s);
        !            56:        /* Returns string length */
        !            57: 
        !            58: int str2reg(unitptr reg,string digitstr);
        !            59:        /* Converts a possibly-signed digit string into a large binary number.
        !            60:           Returns assumed radix, derived from suffix 'h','o',b','.' */
        !            61: 
        !            62: void putstr(string s); /* Put out null-terminated ASCII string via putchar. */
        !            63: void puthexbyte(byte b); /* Put out byte in ASCII hex via putchar. */
        !            64: void puthexw16(word16 w); /* Put out 16-bit word in hex, high byte first. */
        !            65: 
        !            66: int display_in_base(string s,unitptr n,short radix);
        !            67:        /* Display n in any base, such as base 10.  Returns number of digits. */
        !            68: 
        !            69: void mp_display(string s,unitptr r);
        !            70:        /* Display register r in hex, with prefix string s. */
        !            71: 
        !            72: word16 checksum(register byteptr buf, register word16 count);
        !            73:        /* Returns checksum of buffer. */
        !            74: 
        !            75: void fill0(byteptr buf,word16 bytecount);
        !            76:        /* Zero-fill the byte buffer. */
        !            77: 
        !            78: void cbc_xor(register unitptr dst, register unitptr src, word16 bytecount);
        !            79:        /* Performs the XOR necessary for RSA Cipher Block Chaining. */
        !            80: 
        !            81: void hiloswap(byteptr r1,short numbytes);
        !            82:        /* Reverses the order of bytes in an array of bytes. */
        !            83: 
        !            84: short mpi2reg(register unitptr r, register byteptr buf);
        !            85:        /* Converts to unit array from byte array with bit length prefix word. */
        !            86: 
        !            87: short reg2mpi(register byteptr buf, register unitptr r);
        !            88:        /* Converts from unit array to byte array with bit length prefix word. */
        !            89: 
        !            90: short preblock(unitptr outreg, byteptr inbuf, short bytecount,
        !            91:        unitptr modulus, boolean cksbit, byteptr randompad);
        !            92:        /* Converts plaintext block into form suitable for RSA encryption. */
        !            93: 
        !            94: short postunblock(byteptr outbuf, unitptr inreg,
        !            95:        unitptr modulus, boolean padded, boolean cksbit);
        !            96:        /*      Converts a just-decrypted RSA block back 
        !            97:                into unblocked plaintext form. */
        !            98: 
        !            99: #endif /* not compiling RSAIO */
        !           100: 
        !           101: /****************** end of RSA I/O library ************************/
        !           102: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.