`
`#ifdef PTMX
`
`getmaster()
`
`{
`
`if ((master = open("/dev/ptmx", O_RDWR)) == -1)
`return (-1);
`
`if ((s1ave_name =
`
`(char *)ptsname(master)) == NULL ||
`
`un1ockpt(master)
`
`grantpt(master))
`c1ose(master);
`
`||
`
`{
`
`fai1();
`
`} (
`
`void)
`
`ioct1(master, TIOCFLUSH, NULL);
`
`tcgetattr(O. &tt);
`(void)
`(Void)
`ioct1(O, TIOCGWINSZ,
`
`(char *)&win);
`
`} g
`
`{
`
`ets1ave()
`
`(void) setsid();
`
`if ((s1ave = open(s1ave_name, O_RDWR))
`fai1();
`
`< O)
`
`{
`
`I_PUSH, "ptem"))
`
`{
`
`I_PUSH, "1dterm"))
`
`{
`
`I_PUSH, "ttcompat"))
`
`{
`
`if (ioct1(s1ave,
`fai1();
`
`} i
`
`f (ioct1(s1ave,
`fai1();
`
`} i
`
`f (ioct1(s1aVe,
`fai1();
`
`}
`
`}
`(void)
`
`tcsetattr(s1ave, TCSAFLUSH, &tt);
`
`(void)
`
`ioct1(s1ave, TIOCSWINSZ,
`
`(char *)&win);
`
`} #
`
`e1se
`
`getmaster()
`
`{
`
`char *pty, *bank, *cp;
`struct stat stb;
`
`pty = &1ine[str1en("/dev/ptyp")];
`
`for (bank = "pqrstuvwxyz"; *bank; bank++)
`1ine[str1en("/dev/pty")] = *bank;
`*pty =
`'0';
`if (stat(1ine, &stb)
`break;
`
`< 0)
`
`{
`
`for (cp = "Ol23456789abcdef"; *cp; cp++)
`*pty = *cp:
`
`{
`
`master = open(1ine, O_RDWR);
`
`{
`if (master >= 0)
`char *tp = &1ine[str1en("/dev/")1;
`
`int Ok’
`
`EXNbflD
`
`
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 187
`
`/* verify slave side is usable */
`*tp =
`'t';
`
`ok = access(1ine, R_OK|W_OK) == 0;
`*tp =
`'p';
`
`{
`if (ok)
`tcgetattr(O. &tt);
`(void)
`(Void)
`ioCt1(O, TIOCGWINSZ,
`
`(char *)&win);
`return;
`
`}
`(void) c1ose(master);
`
`"Out of pty's\n");
`
`}
`
`}
`
`} f
`
`fprintf(stderr,
`ai1();
`
`} g
`
`{
`
`ets1ave()
`
`1ine[str1en("/dev/")] =
`
`'t';
`
`slave = open(1ine, O_RDWR);
`
`{
`if (slave < O)
`perror(1ine);
`fai1();
`
`}
`(void)
`
`tcsetattr(s1ave, TCSAFLUSH, &tt);
`
`(void)
`
`ioct1(s1ave, TIOCSWINSZ,
`
`(char *)&win);
`
`(void) setsid();
`
`(void)
`
`ioct1(s1ave, TIOCSCTTY, O);
`
`} #
`
`endif
`
`waitenter()
`
`{
`
`} s
`
`{
`
`}
`
`unsigned char b;
`
`do {
`
`read(O.&b.1);
`
`} while (b!='\r');
`printf("\r\n");
`
`endhex(fp,c)
`
`FILE *fp;
`
`unsigned int c;
`
`static char buf[l6];
`
`sprintf(buf,"%O2x",c);
`
`bwrite(fp,buf,2);
`
`EXNbflD
`
`
`
`esm.h
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 188
`
`
`
`The author of this software is Matt Blaze.
`
`Perm
`
`Copyright
`COPY.
`ission to use,
`
`(c)
`
`1995 by AT&T.
`
`and modify this software without fee
`
`is hereby granted, provided that this entire notice is included in
`
`all copies of any software which is or includes a copy or
`
`modification of this software and in all copies of the supporting
`documentation for such software.
`
`This software is subject to United States export controls.
`
`THIS SOFTWARE IS BEING PROVIDED
`
`HAS Isl! I
`
`WITHOUT ANY EXPRESS OR IMPLIED
`
`WARRANTY.
`
`IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
`REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
`
`OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
`
`typedef
`cha
`
`struct {
`r ekl[l28];
`
`cha
`
`cha
`
`} keyst
`extern
`
`r ek2[l28];
`
`r ek3[l28];
`I7
`
`keystr ks;
`
`extern unsigned char check[8];
`
`unsigned int cfb8_encrypt();
`
`unsigned int cfb8_decrypt();
`extern
`R_RANDOM_STRUCT rs ;
`
`extern
`
`extern
`
`extern
`
`extern
`
`extern
`
`R_DH_PARAMS dhparams[];
`iVin[],
`iVout[];
`unsigned char
`
`unsigned char
`
`otherpub[];
`
`unsigned char
`
`ourpub[];
`
`unsigned char
`
`ourpriv[];
`
`extern int ourprivlen;
`extern
`
`int pklen;
`
`#define
`
`#define
`
`#define
`
`SHORT O
`
`MEDIUM 1
`
`LONG 2
`
`#define
`
`MAXPUBKEY 512
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 189
`
`
`
`esm_cipher.c
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 190
`
`
`
`/*
`
`* ESM crypto interface
`* V0.6
`
`*/
`
`/*
`* The author of this software is Matt Blaze.
`
`*
`
`Copyright
`
`(c) 1995 by AT&T.
`
`* Permission to use, Copy, and modify this software without fee
`
`* is hereby granted, provided that this entire notice is included in
`
`* all copies of any software which is or includes a copy or
`
`* modification of this software and in all copies of the supporting
`* documentation for such software.
`
`* This software is subject to United States export controls.
`
`* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
`
`IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
`* WARRANTY.
`* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
`
`* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
`
`*/
`#include <stdio.h>
`
`#include <sys/types.h>
`
`#include <sys/time.h>
`#include <signal.h>
`
`#inc1ude "global.h"
`#include "rsaref.h"
`
`#include "esm.h"
`
`unsigned char check[8];
`
`unsigned char skeyl[8];
`
`unsigned char skey2[8];
`
`unsigned char skey3[8];
`
`unsigned char mkeyl[8];
`
`unsigned char mkey2[8];
`
`unsigned char mkey3[8];
`
`unsigned char ivin[8];
`
`unsigned char iVout[8];
`
`R_RANDOM_STRUCT rs ;
`
`R_DH_PARAMs dhparams[3];
`
`unsigned char otherpub[MAXPUBKEY+2];
`
`unsigned char ourpub[MAXPUBKEY+2];
`
`unsigned char ourpriv[MAXPUBKEY];
`
`int ourprivlen;
`
`int pklen;
`
`keystr inks, outks;
`
`cipherinit(master)
`int master;
`
`{
`
`{
`if (master)
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 191
`
`
`
`des_key_setup(skeyl,inks.ek1);
`
`des_key_setup(skey2,inks.ek2);
`
`des_key_setup(skey3,inks.ek3);
`
`des_key_setup(mkeyl,outks.ekl);
`
`des_key_setup(mkey2,outks.ek2);
`
`des_key_setup(mkey3,outks.ek3);
`
`} else {
`des_key_setup(skeyl,outks.ekl);
`
`des_key_setup(skey2,outks.ek2);
`
`des_key_setup(skey3,outks.ek3);
`
`des_key_setup(mkeyl,inks.ekl);
`
`des_key_setup(mkey2,inks.ek2);
`
`des_key_setup(mkey3,inks.ek3);
`
`/* 8 bit Cfb encrypt */
`
`unsigned int Cfb8_enCrypt(C)
`unsigned int C;
`
`int i;
`
`Char b1k[8];
`
`for (i=0;
`
`i<8;
`
`i++)
`
`b1k[i]=ivout[i];
`
`des_b1oCk_Cipher(outks.ekl,b1k,O);
`
`des_b1oCk_Cipher(outks.ek2,b1k,1);
`
`des_b1oCk_Cipher(outks.ek3,b1k,O);
`for (i=0;
`i<7;
`i++)
`
`iVout[i]=iVout[i+l];
`
`= b1k[O]
`iVout[7]
`return (ivout[7]);
`
`A C;
`
`/*
`
`*
`*/
`
`8 bit Cfb decrypt
`
`unsigned int Cfb8_deCrypt(C)
`unsigned int C;
`
`int i;
`
`unsigned Char b1k[8];
`
`for (i=0;
`
`i<8;
`
`i++)
`
`b1k[i]=ivin[i];
`
`des_b1oCk_Cipher(inks.ekl,b1k,O);
`
`des_b1oCk_Cipher(inks.ek2,b1k,1);
`
`des_b1oCk_Cipher(inks.ek3,b1k,O);
`for (i=0;
`i<7;
`i++)
`
`ivin[i]=ivin[i+1];
`
`iVin[7]
`
`= C;
`
`return (b1k[O]
`
`A C);
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 192
`
`
`
`* alpha —> hex; used for encoding
`
`(ascii only — bfd)
`
`*
`*/
`int atoh(ch)
`
`int Ch;
`
`if (isdigit(ch))
`return ch—'O';
`
`if (islower(ch))
`
`return lO+ch—'a';
`
`if (isupper(ch))
`return lO+ch—'A';
`
`else
`
`return -1;
`
`/*???*/
`
`int count=O;
`
`int secs;
`
`unsigned int bits;
`
`void procbit()
`
`{
`
`secs--;
`
`bits |= ((count ‘
`
`(count>>4)) & Oxf)<<(secs*4);
`
`{
`if (secs)
`alarm(l);
`
`signal(SIGALRM,procbit);
`
`getuid();
`
`/* do a syscall to slow things a bit */
`
`int verbose=l;
`
`/*
`
`* init the random number generator — seed with
`* truerandbits.
`
`* Use a combination of OS load and processor clock skew to get
`
`* enough entropy to generate the secret parameter
`
`(we only need a
`
`* total of 128 or so bits, so we just get more than we need to
`
`* compensate for any non-randomness).
`
`* WARNING: use oldrand()
`
`(below) on new platforms
`
`* if you aren't sure about truerand().
`*/
`randinit()
`
`{
`
`unsigned int n;
`int i;
`
`struct timeval tv;
`
`unsigned long truerand();
`
`unsigned char b[20];
`
`R_RandomInit(&rs);
`
`{
`if (verbose)
`fprintf(stderr,"randomizing...");
`fflush(stderr);
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 193
`}
`/* we just grab 160 truerand bits and keep feeding them
`EXNbflD
`
`
`
`over and over to R_RandomUpdate until it's happy */
`
`i++)
`i<20;
`for (i=0;
`b[i]=randbyte();
`
`{
`
`fprintf(stderr,".");
`
`} w
`
`hile (R_GetRandomBytesNeeded(&n,&rs),
`R_RandomUpdate(&rs,b,sizeof(b));
`
`(n>O))
`
`{
`
`} i
`
`{
`f (verbose)
`fprintf(stderr,"done\n");
`fflush(stderr);
`
`* OLD CODE HERE.
`
`NOT CALLED.
`
`* generate 8 random clock skew bits
`
`* we don't use this anymore..
`
`instead we generate more
`
`* bits using the mitchell code.
`
`* modify the code to use this instead if you don't trust
`
`the higher—bandwidth mitchell numbers.
`
`*
`*/
`int rnd8()
`
`{
`
`secs=2;
`
`bits=O;
`
`signal(SIGALRM,procbit);
`alarm(l);
`
`getpid();
`while (secs)
`Count++;
`
`return bits;
`
`* OLD CODE HERE.
`
`NOT CALLED.
`
`* this is the old, slow but simple truerand routine
`
`* you should change the code use this on new platforms instead of
`*
`the "randinit" above.
`
`*/
`oldrandinit()
`
`{
`
`unsigned int n;
`
`unsigned char b[l8];
`struct timeval tv;
`
`R_RandomInit(&rs);
`
`/* but we ignore */
`R_GetRandomBytesNeeded(&n,&rs);
`/* RSAREF wants 256 bytes, which is an awful lot at 4bps.
`
`we
`
`really only need enough to do justice to the entropy of
`
`the block cipher (3des), so we just generate 18. */
`
`if (verbose)
`
`fprintf (stderr, "Randomizing (takes about 45 secs) Peflfigfier Orac|e_App|e _ EXhibit1010 _ Page194
`fflush(stderr);
`EXMDHD
`
`
`
`for (n=O; n<18; n++)
`b[n]=rnd8( );
`
`{
`
`if (verbose && (n%4==3))
`fprintf(stderr,".");
`ff1ush(stderr);
`
`{
`
`} w
`
`hile (R_GetRandomBytesNeeded(&n,&rs),
`
`(n>O))
`
`{
`
`R_RandomUpdate(&rs,b,l8);
`if (verbose)
`
`fprintf(stderr,".");
`
`}
`/* Just for good measure, we throw in a couple other things */
`
`n=getpid();
`
`R_RandomUpdate(&rs,(unsigned char*)&n,sizeof(n));
`gettimeofday(&tv,NULL);
`
`R_RandomUpdate(&rs,(unsigned char*)&tv,sizeof(tv));
`if (verbose)
`
`fprintf(stderr,"done\n");
`
`#define
`
`#define
`
`#define
`
`#define
`
`#define
`
`#define
`
`#define
`
`#define
`
`BLANKLINE
`
`0
`
`TERM 1
`
`NONE 2
`
`SHORTKEY 3
`MEDKEY 4
`
`LONGKEY 5
`
`HEX 6
`FILENAME 7
`
`int size[3];
`
`int keysize=O;
`
`getpubkey()
`
`{
`
`fprintf(stderr,"Calculator not
`return;
`
`implemented,
`
`sorry\n");
`
`createdh(param)
`
`int param;
`
`int 67
`
`if ((param<O)
`return -1;
`
`||
`
`(param>2))
`
`ourpriv1en=(dhparams[param].generatorLen)/2;
`
`/* from gen'd params */
`
`if ((e=R_SetupDHAgreement(ourpub, ourpriv, ourprivlen,
`
`&dhparams[param], &rs))!=O)
`
`{
`
`return -1;
`
`}
`re turn 0 7
`
`dhagree(param,master)
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 195
`
`
`
`int param;
`int master;
`
`unsigned char buf[MAXPUBKEY];
`int i;
`
`if ((param<O)
`return -1;
`
`||
`
`(param>2))
`
`if (R_ComputeDHAgreedKey(buf,otherpub,ourpriv,ourpriv1en,
`&dhparams[param])
`!= 0)
`return -1;
`
`{
`i++)
`i<8;
`for (i=0;
`mkeyl[i]
`= buf[i];
`
`/* always have enough agreed bits */
`
`mkey2[i]
`
`= buf[i+8];
`
`mkey3[i]
`
`= buf[i+l6];
`
`skeyl[i] = buf[24+i];
`
`skey2[i]
`
`= buf[24+i+8];
`
`skey3[i]
`check[i]
`
`= buf[24+i+l6];
`= buf[32+i];
`
`} c
`
`ipherinit(master);
`return 0;
`
`{
`
`}
`
`de1key()
`
`{ }
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 196
`
`
`
`esm_gen.c
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 197
`
`
`
`/9:
`
`* ESM DH parameter generator
`
`* The author of this software is Matt Blaze.
`
`Copyright
`(c) 1995 by AT&T.
`*
`COPY.
`* Permission to use,
`
`and modify this software without fee
`
`* is hereby granted, provided that this entire notice is included in
`
`* all copies of any software which is or includes a copy or
`
`* modification of this software and in all copies of the supporting
`* documentation for such software.
`
`* This software is subject to United States export controls.
`
`* WARRANTY.
`
`* THIS SOFTWARE IS BEING PROVIDED
`
`HAS Isl! I WITHOUT ANY EXPRESS OR IMPLIED
`IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
`* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
`
`* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
`
`#include
`
`<stdio.h>
`
`#include
`
`#include
`
`"global.h"
`"rsaref.h"
`
`#include "esm.h"
`
`main()
`
`{
`
`R_DH_PARAMS dhparams[3];
`unsigned char pO[5l2],pl[5l2],p2[5l2],g0[5l2],gl[5l2],g2[5l2];
`int x;
`
`randinit();
`
`fprintf(stderr,"Generating 512\n");
`
`dhparams[O].prime=pO;
`
`dhparams[0].generator=gO;
`
`if (x=R_GenerateDHParams(&dhparams[O],5l2,256,&rs))
`fprintf(stderr,"failed %x\n",x);
`
`fprintf(stderr,"Generating 768\n");
`dhparams[l].prime=pl;
`
`dhparams[l].generator=gl;
`
`if (x=R_GenerateDHParams(&dhparams[1],768,384,&rs))
`fprintf(stderr,"failed %x\n",x);
`
`fprintf(stderr,"Generating l024\n");
`
`dhparams[2].prime=p2;
`
`dhparams[2].generator=g2;
`
`if (x=R_GenerateDHParams(&dhparams[2],lO24,5l2,&rs))
`fprintf(stderr,"failed %x\n",x);
`
`fprintf(stderr,"Printing\n");
`
`printparams(dhparams);
`exit(O);
`
`printparams(dh)
`
`R_DH_PARAMS *dh;
`EXMDHD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 198
`
`
`
`int 1,3";
`
`printf("#inc1ude \"g1oba1.h\"\n");
`
`printf("#inc1ude \"rsaref.h\"\n");
`
`for (j=O;
`
`j<3;
`
`j++)
`
`{
`
`printf("static unsigned char p%d[]
`
`= {\n",j);
`
`i++)
`(dh[j].primeLen—l);
`i <
`for (i=0;
`printf(" Ox%O2x,",dh[j].prime[i]);
`if (i%6 == 5)
`
`{
`
`printf("\n");
`
`} p
`
`rintf(" Ox%O2x};\n",dh[j].prime[i]);
`
`printf("static unsigned char g%d[]
`
`= {\n",j);
`
`i++)
`(dh[j].generatorLen-1);
`i <
`for (i=0;
`printf(" Ox%O2x,",dh[j].generator[i]);
`if (i%6 == 5)
`
`{
`
`printf("\n");
`
`} p
`
`rintf(" Ox%O2x};\n",dh[j].generator[i]);
`
`} p
`
`rintf("\nR_DH_PARAMS dhparams[3]
`
`= {\n");
`
`for (j=O;
`
`j<3;
`
`j++)
`
`{
`
`printf(" {p%d, %d, g%d, %d}%s\n",j,dh[j].primeLen,
`
`j, dh[j].generatorLen,
`
`j== ?"};":",");
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 199
`
`
`
`getpass. C
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 200
`
`
`
`adapted from d. mitchell's code */
`
`includes code derived from the ucb getpass */
`
`Copyright
`
`(c)
`
`1988 The Regents of the University of California.
`
`All rights reserved.
`
`Redistribution and use in source and binary forms, with or without
`
`modification, are permitted provided that the following conditions
`are met:
`
`1. Redistributions of source code must retain the above copyright
`
`notice,
`
`this list of conditions and the following disclaimer.
`
`2. Redistributions in binary form must reproduce the above copyright
`
`notice,
`
`this list of conditions and the following disclaimer in the
`
`documentation and/or other materials provided with the distribution.
`
`3. All advertising materials mentioning features or use of this software
`
`must display the following acknowledgement:
`
`This product includes software developed by the University of
`
`California, Berkeley and its contributors.
`
`4. Neither the name of the University nor the names of its contributors
`
`may be used to endorse or promote products derived from this software
`
`without specific prior written permission.
`
`THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ‘OAS IS" AND
`
`INCLUDING, BUT NOT LIMITED TO, THE
`ANY EXPRESS OR IMPLIED WARRANTIES,
`IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
`
`ARE DISCLAIMED.
`
`IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
`
`FOR ANY DIRECT,
`
`INDIRECT,
`
`INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
`
`DAMAGES
`
`(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
`
`OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
`HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
`* LIABI LITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
`* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
`* SUCH
`DAMAGE.
`
`#include
`
`<StdiO.h>
`
`#include
`
`#ifndef
`
`#include
`
`#endif
`
`#include
`
`#include
`
`#include
`
`#include
`
`#include
`
`<signal.h>
`linux
`
`<Sgtty.h>
`
`<sys/types.h>
`
`<rpc/rpc.h>
`"nfsproto.h"
`
`"admproto.h"
`"cfs.h"
`
`#include
`
`"shs.h"
`
`#if defi
`
`ned(irix)
`
`|| defined(linux)
`/* hacks to use POSIX style termios instead of old BSD style sgttyb */
`#inc1ude <termios.h>
`
`#define sgttyb termios
`
`#define gtty(a,b) tcgetattr((a),
`
`(b))
`
`#define stty(a,b) tcsetattr((a), TCSAFLUSH,
`
`(b))
`
`#define sg_f1ags c_lflag
`#endif
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 201
`
`
`
`char *
`
`getpassword(prompt)
`
`char *prompt;
`
`{
`
`struct sgttyb ttyb;
`
`int flags;
`
`register char *p;
`
`register c;
`FILE *fi;
`
`static char pbuf[l28];
`#ifdef MACH
`
`int (*signal())();
`
`int (*sig)();
`#else
`
`Void (*sig)();
`#endif
`
`if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL)
`fi = stdin;
`
`else
`
`setbuf(fi,
`
`(char *)NULL);
`
`sig = signal(SIGINT, SIG_IGN);
`gtty(fileno(fi). &ttyb);
`
`flags = ttyb.sg_flags;
`
`ttyb.sg_flags &= ~ECHO;
`stty(fileno(fi), &ttyb);
`
`fprintf(stderr,
`
`"%s", prompt); fflush(stderr);
`
`(c = getc(fi) !='\n' && c!=EOF;)
`for (p=pbuf;
`if (p < &pbuf[l27])
`c;
`*p++
`
`{
`
`} *
`
`p =
`
`'\o';
`
`fprintf(stderr, "\n"); fflush(stderr);
`
`ttyb.sg_flags = flags;
`stty(fileno(fi), &ttyb);
`
`signal(SIGINT, sig);
`if (fi
`!= stdin)
`
`fclose(fi);
`
`return(pbuf);
`
`} o
`
`{
`
`ld_pwcrunch(b,k)
`char *b;
`
`cfs_admkey *k;
`
`int 1;
`
`u_char kl[8];
`
`u_char k2[8];
`
`if ((l=strlen(b))<3)
`return -1;
`
`/* note that we always use the DES key crunch. */
`
`/* that's not a significant weakness, since here DES */
`
`/* is just being used as s “°“'srYPt°9rsPhis hash‘ */ Petitioner Oracle-Apple-Exhibit1010-Page 202
`/* note also that kl and k2 are created from disjoint parts */
`EXNbflD
`
`
`
`/* of the passphrase. */
`
`key_crunch(&b[1/2],1-1/2,k1);
`
`key_crunch(b,1/2,k2);
`
`{
`switch (k—>cipher)
`case CFS_STD_DES:
`
`bcopy(kl,k->cfs_admkey_u.deskey.primary,8);
`
`bcopy(k2,k->cfs_admkey_u.deskey.secondary,8);
`break;
`
`case CFS_THREE_DES:
`
`bcopy(kl,k->cfs_admkey_u.des3key.primaryl,8);
`
`bcopy(kl,k->cfs_admkey_u.des3key.secondaryl,8);
`
`bcopy(k2,k->cfs_admkey_u.des3key.primary2,8);
`
`bcopy(k2,k->cfs_admkey_u.des3key.secondary2,8);
`break;
`
`case CFS_TRUE_THREE_DES:
`
`/* this is really 2des */
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.primaryl,8);
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.secondaryl,8);
`
`bcopy(k2,k->cfs_admkey_u.tdes3key.primary2,8);
`
`bcopy(k2,k->cfs_admkey_u.tdes3key.secondary2,8);
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.primary3,8);
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.secondary3,8);
`break;
`
`case CFS_MACGUFFIN:
`
`bcopy(kl,k->cfs_admkey_u.mcgkey.primary,8);
`
`bcopy(k2,&(k->cfs_admkey_u.mcgkey.primary[8]),8);
`
`bcopy(kl,k->cfs_admkey_u.mcgkey.secondary,8);
`
`bcopy(k2,&(k->cfs_admkey_u.mcgkey.secondary[8]),8);
`break;
`#ifdef NOTDEF
`
`case CFS_BLOWFISH:
`
`bcopy(kl,k->cfs_admkey_u.b1owkey.primary,8);
`
`bcopy(k2,&(k->cfs_admkey_u.b1owkey.primary[8]),8)
`
`bcopy(kl,k->cfs_admkey_u.b1owkey.secondary,8);
`
`.I
`
`bcopy(k2,&(k->cfs_admkey_u.b1owkey.secondary[8]),8);
`break;
`
`#endif
`
`case CFS_SAFER_SKl28:
`
`bcopy(kl,k->cfs_admkey_u.saferkey.primary,8);
`
`bcopy(k2,&(k->cfs_admkey_u.saferkey.primary[8]),8);
`
`bcopy(kl,k->cfs_admkey_u.saferkey.secondary,8);
`
`bcopy(k2,&(k->cfs_admkey_u.saferkey.secondary[8])
`default:
`
`.8);
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 203
`
`break;
`
`}r
`
`eturn 0;
`
`} n
`
`ew_pwcrunch(b,k)
`char *b;
`
`cfs_admkey *k;
`
`int 1;
`
`u_char
`
`u_char
`
`u_char
`
`u_char
`
`*kl;
`
`*k2;
`
`*k3;
`
`*hash;
`
`u_char hl[20];
`EXNDHD
`
`
`
`u_char h2[20];
`
`if ((1=str1en(b))<3)
`return -1;
`
`hash = qshs(b,1);
`
`bcopy(hash,h1,20);
`kl
`hl;
`
`k2 = &(hl[8]);
`
`/* for true threedes, we do one more hash to get the third key */
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 204
`
`hash = qshs(hl,20);
`
`bcopy(hash,h2,20);
`k3
`h2;
`
`{
`switch (k—>cipher)
`case CFS_STD_DES:
`
`bcopy(kl,k->cfs_admkey_u.deskey.primary,8);
`
`bcopy(k2,k->cfs_admkey_u.deskey.secondary,8);
`break;
`
`case CFS_THREE_DES:
`
`bcopy(kl,k->cfs_admkey_u.des3key.primaryl,8);
`
`bcopy(kl,k->cfs_admkey_u.des3key.secondaryl,8);
`
`bcopy(k2,k->cfs_admkey_u.des3key.primary2,8);
`
`bcopy(k2,k->cfs_admkey_u.des3key.secondary2,8);
`break;
`
`case CFS_TRUE_THREE_DES:
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.primaryl,8);
`
`bcopy(kl,k->cfs_admkey_u.tdes3key.secondaryl,8);
`
`bcopy(k2,k->cfs_admkey_u.tdes3key.primary2,8);
`
`bcopy(k2,k->cfs_admkey_u.tdes3key.secondary2,8);
`
`bcopy(k3,k->cfs_admkey_u.tdes3key.primary3,8);
`
`bcopy(k3,k->cfs_admkey_u.tdes3key.secondary3,8);
`break;
`
`case CFS_MACGUFFIN:
`
`bcopy(kl,k->cfs_admkey_u.mcgkey.primary,16);
`
`bcopy(kl,k->cfs_admkey_u.mcgkey.secondary,16);
`break;
`
`#ifdef NOTDEF
`
`case CFS_BLOWFISH:
`
`bcopy(kl,k->cfs_admkey_u.b1owkey.primary,16);
`
`bcopy(kl,k->cfs_admkey_u.b1owkey.secondary,16);
`break;
`
`#endif
`
`case CFS_SAFER_SKl28:
`
`bcopy(kl,k->cfs_admkey_u.saferkey.primary,16);
`
`bcopy(kl,k->cfs_admkey_u.saferkey.secondary,16);
`break;
`default:
`
`break;
`
`}r
`
`e turn 0 ;
`
`decrypt_key(k,ek)
`cfs_admkey *k;
`
`u_char *ek;
`
`{
`
`mcg_key mk;
`ExmbflD
`
`
`
`#ifdef NOTDEF
`
`bfkey bk;
`#endif
`
`safer_key_t sk;
`
`{
`switch (k—>cipher)
`case CFS_STD_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[0]),1);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.secondary,&(ek[0]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[0]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.secondary,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[8]),l);
`
`bcopy(&(ek[O]),k->cfs_admkey_u.deskey.primary,8);
`
`bcopy(&(ek[8]),k->cfs_admkey_u.deskey.secondary,8);
`break;
`
`case CFS_THREE_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primary2,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primary2,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[8]),l);
`
`bcopy(&(ek[O]),k->cfs_admkey_u.des3key.primaryl,8);
`
`bcopy(&(ek[O]),k->cfs_admkey_u.des3key.secondaryl,8);
`
`bcopy(&(ek[8]),k->cfs_admkey_u.des3key.primary2,8);
`
`bcopy(&(ek[8]),k->cfs_admkey_u.des3key.secondary2,8);
`break;
`
`case CFS_TRUE_THREE_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,&(ek[l6]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[l6]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[l6]),l);
`
`bcopy(&(ek[O]),k->cfs_admkey_u.tdes3key.primaryl,8);
`
`bcopy(&(ek[O]),k->cfs_admkey_u.tdes3key.secondaryl,8);
`
`bcopy(&(ek[8]),k->cfs_admkey_u.tdes3key.primary2,8);
`
`bcopy(&(ek[8]),k->cfs_admkey_u.tdes3key.secondary2,8);
`
`bcopy(&(ek[l6]),k->cfs_admkey_u.tdes3key.primary3,8);
`
`bcopy(&(ek[l6]),k->cfs_admkey_u.tdes3key.secondary3,8);
`break;
`
`case CFS_MACGUFFIN:
`
`mcg_keyset(k—>cfs_admkey_u.mcgkey.primary,&mk);
`
`mcg_b1ock_decrypt(&mk,&(ek[O]));
`
`mcg_b1ock_decrypt(&mk,&(ek[8]));
`
`bcopy(ek,k->cfs_admkey_u.mcgkey.primary,16);
`
`bcopy(ek,k->cfs_admkey_u.mcgkey.secondary,16);
`break;
`#ifdef NOTDEF
`
`case CFS_BLOWFISH:
`
`B1owfish_Initia1ize (k—>cfs_admkey_u.blowkey.primaE\étigi(§“é¢lb6l)a;c|e_App|e _ EXhibit1010 _ Page 205
`B1owfish_decipher(&(ek[O]),&bk);
`EXMDHD
`
`
`
`B1owfish_decipher(&(ek[8]),&bk);
`
`bcopy(ek,k->cfs_admkey_u.b1owkey.primary,16);
`
`bcopy(ek,k->cfs_admkey_u.b1owkey.secondary,16);
`break;
`
`#endif
`
`case CFS_SAFER_SKl28:
`
`Safer_Init_Modu1e();
`
`Safer_Expand_Userkey(k->cfs_admkey_u.saferkey.primary,
`
`&(k->cfs_admkey_u.saferkey.primary[8]),
`SAFER_SKl28_DEFAULT_NOF_ROUNDS, 1.
`sk);
`
`Safer_Decrypt_B1ock(&(ek[O]),sk,&(ek[O]));
`
`Safer_Decrypt_B1ock(&(ek[8]),sk,&(ek[8]));
`
`bcopy(ek,k->cfs_admkey_u.saferkey.primary,16);
`
`bcopy(ek,k->cfs_admkey_u.saferkey.secondary,16);
`break;
`default:
`
`break;
`
`encrypt_key(k,ek)
`
`cfs_admkey *k;
`
`u_char *ek;
`
`mcg_key mk;
`#ifdef NOTDEF
`
`bfkey bk;
`#endif
`
`safer_key_t sk;
`
`{
`switch (k—>cipher)
`case CFS_STD_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.secondary,&(ek[0]),1);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.secondary,&(ek[8]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.deskey.primary,&(ek[8]),O);
`break;
`
`case CFS_THREE_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primary2,&(ek[O]),l);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primaryl,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.des3key.primary2,&(ek[8]),l);
`
`q_b1ock_cipher(k—>cfs_admkey_u.des3key.primary1,&(ek[8]),O);
`break;
`
`case CFS_TRUE_THREE_DES:
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[O]),0);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,&(ek[O]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[8]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,§gfi§&fiéRo8%jeflApme__Exmbfl1010__Page206
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primaryl,&(ek[l6]),O);
`EXMDHD
`
`
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary2,&(ek[l6]),O);
`
`q_b1ock_cipher(k->cfs_admkey_u.tdes3key.primary3,&(ek[l6]),O);
`break;
`
`#ifdef NOTDEF
`
`case CFS_BLOWFISH:
`
`B1owfish_Initia1ize(k—>cfs_admkey_u.b1owkey.primary,l6,&bk);
`
`B1owfish_encipher(&(ek[O]),&bk);
`
`B1owfish_encipher(&(ek[8]),&bk);
`break;
`
`#endif
`
`case CFS_MACGUFFIN:
`
`mcg_keyset(k->cfs_admkey_u.mcgkey.primary,&mk);
`
`mcg_b1ock_encrypt(&mk,&(ek[O]));
`
`mcg_b1ock_encrypt(&mk,&(ek[8]));
`break;
`
`case CFS_SAFER_SKl28:
`
`Safer_Init_Modu1e();
`
`Safer_Expand_Userkey(k->cfs_admkey_u.saferkey.primary,
`
`&(k->cfs_admkey_u.saferkey.primary[8]),
`SAFER_SKl2 8_DEFAULT_NOF_ROUNDS ,
`1 .
`sk);
`
`Safer_Encrypt_B1ock(&(ek[O]),sk,&(ek[O]));
`
`Safer_Encrypt_B1ock(&(ek[8]),sk,&(ek[8]));
`break;
`default:
`
`break;
`
`ExmbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 207
`
`
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 208
`
`
`
`#1/bin/sh
`
`cattach —i 45 $HOME/.secrets $USER
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 209
`
`
`
`make_with_bad_1pcgen
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 210
`
`
`
`#1/bin/sh
`# this will make CFS for linux
`
`# wrong Version of rpcgen
`
`(and other) systems with the
`
`make CC="cc —traditiona1 —Dd_fi1eno=d_ino
`—Dnfsproc_nu11_2_sVc=nfsproc_nu11_2
`
`\
`
`\
`
`—Dnfsproc_getattr_2_svc=nfsproc_getattr_2
`
`—Dnfsproc_setattr_2_svc=nfsproc_setattr_2
`\
`
`-Dnfsproc_root_2_sVc=nfsproc_root_2
`
`—Dnfsproc_1ookup_2_svc=nfsproc_1ookup_2 \
`
`-Dnfsproc_read1ink_2_sVc=nfsproc_read1ink_2
`\
`
`—Dnfsproc_read_2_svc=nfsproc_read_2
`
`—Dnfsproc_writecache_2_svc=nfsproc_writecache_2 \
`\
`-Dnfsproc_write_2_sVc=nfsproc_write_2
`
`—Dnfsproc_create_2_svc=nfsproc_create_2 \
`
`-Dnfsproc_remoVe_2_sVc=nfsproc_remoVe_2 \
`
`-Dnfsproc_rename_2_sVc=nfsproc_rename_2 \
`\
`—Dnfsproc_1ink_2_sVc=nfsproc_1ink_2
`
`-Dnfsproc_sym1ink_2_sVc=nfsproc_sym1ink
`
`_2
`
`\ \
`
`-Dnfsproc_mkdir_2_sVc=nfsproc_mkdir_2
`
`-Dnfsproc_rmdir_2_sVc=nfsproc_rmdir_2
`
`-Dnfsproc_readdir_2_svc=nfsproc_readdir_2
`
`—Dnfsproc_statfs_2_svc=nfsproc_statfs_2 \
`\
`—Dadmproc_nu11_l_svc=admproc_nu11_l
`
`—Dadmproc_attach_l_svc=admproc_attach_l \
`
`—Dadmproc_detach_l_svc=admproc_detach_l \
`
`-Dadmproc_1s_l_svc=admproc_1s_l \
`$9:
`
`EXNbflD
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 211
`
`
`
`Makefile
`
`Exhibit D
`
`Petitioner Oracle-Apple - Exhibit 1010 - Page 212
`
`
`
`# Makefile for cfs 1.3.3, ESM 1.0
`#9:
`
`#* The author of this software is Matt Blaze.
`
`#*
`
`Copyright
`
`(C) 1992, 1993, 1994, 1995 by AT&T.
`
`#* Permission to use, Copy, and modify this software without fee
`
`#* is hereby granted, provided that this entire notice is included in
`
`#* all copies of any software which is or includes a copy or
`
`#* modification of this software and in all copies of the supporting
`#* documentation for such software.
`
`#9:
`
`#* This software is subject to United States export controls.
`#9:
`
`#* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
`
`IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
`#* WARRANTY.
`#* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
`
`#* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
`
`#9:
`
`=o-"I: See the README* and the CFS release notes (notes.ms)
`=o-"I:
`
`for instructions.
`
`Edit the three "CONFIGURE:" sections below to customize for your platform.
`
`Note that I've tested only the SunOS and BSDI configurations.
`
`Good luck if you're using something weird like Solaris...
`
`=o‘=l==8=t==H==8=l==8=l=
`
`NOTE TO LINUX USERS and others with a non—standard rpcgen:
`
`There are two versions of rpcgen floating around. You MUST make sure
`
`that you are using the compile options for the right one so that
`
`it that emits standard SunRPC compatible C code with standard names.
`
`The version of rpcgen distributed with some (but not all) versions of
`
`Linux does not do this by default.
`
`If CFS won't compile out of the box,
`
`this is the most likely problem. Change RPC options, and things should
`
`work fine (do a "make clean" after re-editing the makefile).
`
`As a last resort, if you absolutely can't make your rpcgen work,
`
`try
`
`using "./make_with_bad_rpcgen" in this directory instead of "make".
`(You'll need to do a "make clean" first if you've already failed with
`
`=fi==8=l==fi==fi==o‘=l==8=l==fi==fi==fi==+”l==+*l==+*t=+*t
`
`=81:=o‘=t==H==H==8=l==o‘=l= WARNING:
`
`the existing rpcgen.)
`
`Hack at it long enough, and it will work.
`
`ESM NOTE: You need RSAREF 2.0 (not
`
`included in the distribution) to
`
`compile ESM. You can get RSAREF by ftp from rsa.com
`
`To compille, edit the configuration section for your platform below.
`
`You'll probably need to change the RSALIB and CFLAGS to point tothe
`
`right places for your local copy of RSAREF
`
`ESM RUNS ON FEWER PLATFORMS THAN CFS.
`
`COMPILE ESM AT
`
`=o-"I:
`
`YOUR OWN RISK IF YOU AREN'T USING BSDI OR SUNOS 4.x.
`
`# I think ESM now runs under Solaris, but test carefully.
`
`#CFS PORTS:
`
`# HP/UX, Irix, Linux and AIX ported by Mark Henderson (markh@wimsey.com)
`
`PetitionerOrac|e_App|e_Exhibit1010_Page213
`# Ultrix 4.2 ported by Ed Gould (ed@left.wing.org)
`# Solaris 2.3 ported by Mark Stein (Mark.Stein@Eng.Sun.COM)
`EXNbflD
`
`
`
`# More Solaris/Linux help by Christopher Oliver (oliver@fritz.co.traverse.com)
`
`and Greg Onufer <Greg.Onufer@Eng.Sun.COM>
`
`(1/3) CONFIGURE:
`
`local customization
`
`configuration options for all platforms
`
`1A, 1B: pathnames, compiler, etc:
`
`#
`
`# # # # #
`
`# #
`
`#lA: compiler:
`# for cc, use
`#CC=cc
`
`#COPT=—O —DNOT_ANSI_C -DPROTOTYPES=O
`# for gcc, use
`CC=gcc
`COPT=—O2 —DPROTOTYPES=l
`
`#1B: paths:
`BINDIR=/usr/local/bin
`
`ETCDIR=/usr/local/etc
`
`PRINTCMD=enscript
`
`-Gr2
`
`# you only need RSAREF for ESM
`RSALIB=/usr/mab/rsaref/install/rsaref.a
`
`RINCLUDES=/usr/mab/rsaref/source
`
`if you're a paranoid fascist, you might want to configure
`
`default timeouts on the attach command.
`
`If you do,
`
`just add definitions for TMOUT and IDLE with the default number
`
`of minutes you want to the CFLAGS line.
`
`So the COPT line for the SUNOS CC configuration with a timeout
`of 12 hours and an idle timer of 2 hours would look like:
`COPT:-O —DTMOUT=72O —DIDLE=l2O
`
`If you leave them out the default timeouts are infinite. You
`
`=o-"l==8=l==o-"l==o-"l==o‘=l==o-"l==o-"l==o-"l==o-"l= can override them, of course, on the cattach command line.
`=H==H==H==H==H= You'll need to figure out how to install man pages yourself.
`
`(2/3) CONFIGURE: platform selection
`
`Uncomment the options for the your local platform.
`
`## use these for vanilla SUNOS 4.x
`
`-I$(RINCLUDES)
`
`-DSUN
`
`#CFLAGS=$(COPT)
`#LIBS=
`
`#COMPAT=
`
`#RPCOPTS=
`
`## use these for recent versions of Linux with rpcgen—from-hell
`# See NOTE TO LINUX USERS above, and also README.linux,
`
`# if you can't make things work.
`
`#CFLAGs=$ (COPT) —U_oPTIMIzE_ -traditional -Dd_fileno=d_%,Ié<fiti6rlgr(8lIé%?é1R1B%fiJ’)_ Exhibit 1010 _ Page 214
`#LIBS=
`
`EXMDHD
`
`
`
`#COMPAT=
`
`#RPCOPTS= -k -b
`
`## use these for older versions Linux (Slackware 1.1.2)
`
`# See NOTE TO LINUX USERS above, and also README.linux,
`
`# if you can't make things work.
`#CFLAGS=$(COPT)
`-I$(RINCLUDES)
`#LIBS=
`
`#COMPAT=
`
`#RPCOPTS=
`
`## Irix 4.0 —— markh@wimsey.bc.ca
`# see README.irix
`
`#CFLAGS=-cckr $(COPT)
`
`-Dirix -I$(RINCLUDES)
`
`#LIBS=—lrpcsvc —lsun
`#COMPAT=
`
`#RPCOPTS=
`
`## hpux 8.0 —— markh@wimsey.bc.ca
`# also thanks to Charles Henrich (henrich@crh.cl.msu.edu)
`
`# and Eric Ross
`
`(ericr@hpvclq.vcd.hp.com)
`
`#CFLAGS=$(COPT) —DhpuX —DNORLIMITS —I$(RINCLUDES)
`#COMPAT=
`
`#RPCOPTS=
`
`#LIBS=—lBSD
`
`# on later hpux versions, use
`#LIBS=
`
`## use these for AIX 3.2.0 —— markh@wimsey.bc.ca
`
`-D_BSD -D_SUN -DAIX32OEUIDBUG -I$(RINCLUDES)
`
`#CFLAGS=$(COPT)
`#LIBS=
`
`#COMPAT=
`
`#RPCOPTS=
`
`## use these for 4.4/BSD386 systems with CFS on its own port
`#CFLAGS=$(COPT)
`-DBSD44 -DANYPORT -I$(RINCLUDES)
`
`#LIBS=—lrpc
`
`#COMPAT=—lcompat
`#RPCOPTS=
`
`## Ultrix 4.2a
`
`#CFLAGS=$(COPT)
`#LIBS=
`
`#COMPAT=
`
`#RPCOPTS=
`
`-DANYPORT -I$(RINCLUDES)
`
`## use these for 4.4/BSD386 systems with CFS on its own port
`# Use this for BSDI 2.1 or later
`
`# BSDI support by mab
`#CFLAGS=$(COPT)
`-DBSD44 -DANYPORT -DSHORTLINKS -I$(RINCLUDES)
`
`#LIBS=—lrpc
`
`#COMPAT=—lcompat
`#RPCOPTS=
`
`## use these for 4.4/BSD386 systems with CFS on the NFS pg%%fi8a§aBEEmg£fi&é_EXmb“1010_Page215
`# support for the port options in the mount syscall
`EXNbflD
`
`
`
`# Use this for BSDI 2.0 or earlier.
`
`# BSDI support by mab
`
`# Also works under freeBSD,
`
`though you may want to use -static on the
`
`#
`
`linker (dean@deanstoy.wa.com (Dean M. Phillips))
`
`#CFLAGS=$(COPT) —DBSD44 —DANYPORT —DCFS_PORT=2049 —DSHORTLINKS —I$(RINCLUDES)
`#LIBS=—lrpc
`
`#COMPAT=—lcompat
`#RPCOPTS=
`
`##use these for NetBSD i386 1.0 (John Kohl)
`
`# for mounting, you need to use a command like:
`
`mount —o —P,—c localhost:/null /crypt
`#
`# use —DSHORTLINKS to support the BSD 4.4 symbolic links (Dave Carrel)
`
`#CFLAGS=$(COPT) —DBSD44 —DANYPORT —DCFS_PORT=2049 —DSHORTLINKS —I$(RINCLUDES)
`#LIBS=
`
`#COMPAT=—lcompat
`#RPCOPTS=
`
`## use these flags on Solaris 2.3 / SUNOS 5.x
`#CFLAGS=$(COPT)
`-DSOLARISZX -DPORTMAP -I$(RINCLUDES)
`#LIBS=—lsocket —lnsl
`
`-DPTMX
`
`#COMPAT=
`
`#RPCOPTS=
`
`## not sure what to do for NeXT.
`
`I think this works:
`
`#CFLAGS=$(COPT)
`
`-posix -D_BS