`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 191
`
`
`
`C:\cfs-1.3.3\make_with_bad_rpcgen
`
`#1/bin/sh
`
`# this will make CFS for linux (and other) systems with the
`
`# wrong version of rpcgen
`
`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_1_svc=admproc_nu11_1
`
`\
`
`—Dadmproc_attach_1_svc=admproc_attach_1 \
`
`-Dadmproc_detach_1_svc=admproc_detach_1 \
`
`—Dadmproc_1s_1_svc=admproc_1s_1 \
`" $*
`
`\
`
`\
`
`1
`
`2
`
`3
`
`4
`
`5
`
`6
`
`7
`
`8
`
`9
`
`10
`
`11
`
`12
`
`13
`
`14
`
`15
`
`16
`
`17
`
`18
`
`19
`
`20
`
`21
`
`22
`
`23
`
`24
`
`25
`
`26
`27
`28
`
`29
`
`30
`
`'1'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 192
`
`
`
`Makefile
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 193
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`1
`2
`
`3
`
`4
`
`5
`
`6
`
`7
`
`8
`9
`
`10
`
`11
`12
`
`13
`
`14
`15
`
`16
`
`17
`18
`
`19
`
`20
`21
`22
`
`23
`
`24
`
`25
`
`26
`27
`28
`
`29
`
`30
`
`31
`
`32
`
`33
`
`34
`
`35
`
`36
`
`37
`
`38
`39
`
`40
`
`41
`42
`
`43
`
`44
`
`45
`
`46
`
`47
`48
`
`49
`
`50
`
`51
`52
`
`53
`
`54
`
`# Makefile for cfs 1.3.3, ESM 1.0
`#*
`
`#* 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.
`
`#*
`
`#* 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.
`
`#*
`
`#
`
`# See the README* and the CFS release notes (notes.ms)
`#
`
`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...
`#
`
`# 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
`
`# 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
`
`# WARNING:
`
`ESM RUNS ON FEWER PLATFORMS THAN CFS.
`
`COMPILE ESM AT
`
`# 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)
`
`'1'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 194
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`# Ultrix 4.2 ported by Ed Gould (ed@left.wing.org)
`
`# Solaris 2.3 ported by Mark Stein (Mark.Stein@Eng.Sun.COM)
`
`# 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:
`
`#
`
`#
`
`#
`
`#
`
`# # # #
`
`#1A: compiler:
`# for cc, use
`#CC=cc
`
`#COPT=-O -DNOT_ANSI_C -DPROTOTYPES=O
`# for gcc, use
`CC=gcc
`COPT=-O2 -DPROTOTYPES=1
`
`#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
`# can override them, of course, on the cattach command line.
`
`#
`
`# (2/3) CONFIGURE: platform selection
`#
`
`# Uncomment the options for the your local platform.
`
`# You'll need to figure out how to install man pages yourself.
`
`## use these for vanilla SUNOS 4.x
`
`#CFLAGS=$(COPT) —I$(RINCLUDES)
`#LIBS=
`
`-DSUN
`
`#COMPAT=
`
`#RPCOPTS=
`
`## use these for recent versions of Linux with rpcgen—from-hell
`
`'2'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 195
`
`55
`
`56
`
`57
`
`58
`59
`
`60
`
`61
`
`62
`
`63
`
`64
`65
`
`66
`
`67
`
`68
`
`69
`70
`71
`
`72
`73
`74
`75
`
`76
`
`77
`78
`
`79
`
`80
`
`81
`82
`
`83
`84
`
`85
`
`86
`
`87
`
`88
`
`89
`90
`
`91
`
`92
`93
`94
`
`95
`
`96
`
`97
`98
`
`99
`
`100
`101
`
`102
`
`103
`104
`
`105
`
`106
`107
`
`108
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`109
`
`110
`
`111
`112
`
`113
`
`114
`115
`
`116
`
`117
`
`118
`119
`120
`
`121
`
`122
`123
`
`124
`125
`
`126
`
`127
`128
`
`129
`130
`
`131
`132
`
`133
`
`134
`135
`
`136
`
`137
`
`138
`139
`140
`
`141
`
`142
`143
`
`144
`
`145
`146
`
`147
`148
`
`149
`
`150
`151
`152
`
`153
`
`154
`155
`
`156
`
`157
`158
`
`159
`160
`
`161
`162
`
`# See NOTE TO LINUX USERS above, and also README.1inux,
`
`# if you can't make things work.
`
`-U__OPTIMIZE__ -traditional -Dd_fileno=d_ino -I$(RINCLUDES)
`
`#CFLAGS=$(COPT)
`#LIBS=
`
`#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
`
`#CFLAGS=$(COPT) —D_BSD —D_SUN —DAIX32OEUIDBUG -I$(RINCLUDES)
`#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) —DANYPORT —I$(RINCLUDES)
`#LIBS=
`
`#COMPAT=
`
`#RPCOPTS=
`
`## 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)
`
`'3'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 196
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`163
`
`164
`165
`166
`
`167
`168
`169
`
`170
`
`171
`
`172
`
`173
`174
`
`175
`176
`177
`
`178
`
`179
`
`180
`
`181
`
`182
`183
`
`184
`185
`186
`
`187
`188
`189
`
`190
`
`191
`192
`
`193
`
`194
`195
`
`196
`
`197
`
`198
`
`199
`
`200
`
`201
`202
`
`203
`204
`
`205
`
`206
`
`207
`208
`209
`
`210
`
`211
`212
`
`213
`
`#LIBS=—lrpc
`
`#COMPAT=—lcompat
`#RPCOPTS=
`
`## use these for 4.4/BSD386 systems with CFS on the NFS port because of no
`# support for the port options in the mount syscall
`# 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) —DSOLARIS2X —DPORTMAP —I$(RINCLUDES) —DPTMX
`#LIBS=—lsocket —lnsl
`
`#COMPAT=
`
`#RPCOPTS=
`
`## not sure what to do for NeXT.
`
`I think this works:
`
`#CFLAGS=$(COPT) —pOsiX —D_BSD —DANYPORT —I$(RINCLUDES)
`
`33331333313333:
`
`(3/3) CONFIGURE: one last thing
`
`# finally, comment out the next line:
`
`CC=you_forgot_to_edit_the_makefile
`
`# now you're done with local configuration.
`
`#
`
`# CONFIGURE: you shouldn't touch anything below here
`#
`
`SRCS=Makefile admproto.x mount.x nfsproto.x cfs.c cfs_adm.c cfs_nfs.c cfs.h \
`
`cfs_fh.c cfs_des.c cfs_cipher.c mcg.c mcgsbox.c mcg.h shs.c shs.h cattach.c \
`getpass.c cdetach.c cmkdir.c adm.c cname.c ccat.c cpasswd.c truerand.c \
`
`safer.c safer.h ver.c i o ssh make_with_bad_rpcgen
`
`ESRCS=esm.c esm_cipher.c esm_gen.c dhparams.c esm.h
`214
`215 MANS=cattach.1 cdetach.1 cmkdir.1 ssh.1 cfsd.8 cname.8 ccat.8 cpasswd.1 \
`
`216
`
`README README.instal1 README.history notes.ms README.linux README.irix \
`
`'4'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 197
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`217
`
`218
`
`219
`220
`
`221
`
`222
`223
`224
`
`225
`226
`227
`
`228
`
`229
`230
`
`231
`232
`233
`
`234
`
`235
`236
`
`237
`238
`
`239
`
`240
`241
`242
`
`243
`
`244
`245
`246
`
`247
`248
`
`249
`250
`251
`
`252
`253
`
`254
`255
`256
`
`257
`258
`
`259
`
`260
`261
`262
`
`263
`264
`
`265
`
`266
`267
`268
`
`269
`270
`
`README.esm esm. 1
`
`OBJS= cfs.o nfsproto_xdr.o nfsproto_svr.o admproto_xdr.c admproto_svr.o \
`
`cfs_adm.o cfs_nfs.o cfs_fh.o cfs_des.o cfs_cipher.o adm.o ver.o mcgsbox.o \
`mcg.o safer.o
`
`EOBJS=dhparams.o truerand.o esm_gen.o esm.o esm_cipher.o
`
`COBJS=admproto_c1nt.o cfs_des.o cfs_cipher.o cattach.o getpass.o cmkdir.o \
`cdetach.o ver.o cname.o ccat.o mcgsbox.o mcgsbox.o mcg.o shs.o cpasswd.o \
`truerand.o safer.o
`
`OTHERS = nfsproto.h nfsproto_svr.c nfsproto_xdr.c admproto.h admproto_svr.c \
`admproto_xdr.c admproto_c1nt.c
`
`default:
`
`@echo make "cfs",
`
`"esm", "insta11_cfs" or "insta11_esm"
`
`cfs: cfsd cattach cmkdir cdetach cname ccat cpasswd
`@echo
`
`cfsd: $(OBJS)
`
`$(CC) $(oBJs) $(LIBs) —o cfsd
`
`cattach: cattach.o admproto_c1nt.o admproto_xdr.c getpass.o cfs_des.o \
`cfs_cipher.o adm.o ver.o mcg.o mcgsbox.o shs.o safer.o
`
`$(CC) cattach.o admproto_c1nt.o admproto_xdr.c cfs_des.o \
`
`cfs_cipher.o getpass.o adm.o ver.o mcg.o mcgsbox.o \
`shs.o safer.o $(COMPAT) $(LIBS) —o cattach
`
`cdetach: cdetach.o admproto_c1nt.o admproto_xdr.c adm.o ver.o
`
`$(CC) cdetach.o adm.o admproto_c1nt.o admproto_xdr.c \
`ver.o $(LIBS) —o cdetach
`
`cmkdir: getpass.o adm.o cfs_des.o cfs_cipher.o cmkdir.o ver.o mcg.o \
`mcgsbox.o safer.o shs.o truerand.o
`
`$(CC) cmkdir.o cfs_des.o cfs_cipher.o getpass.o adm.o ver.o mcg.o \
`mcgsbox.o safer.o shs.o truerand.o $(COMPAT) —o cmkdir
`
`cpasswd: getpass.o cfs_des.o cfs_cipher.o cpasswd.o ver.o mcg.o \
`mcgsbox.o safer.o shs.o truerand.o
`
`$(CC) cpasswd.o cfs_des.o cfs_cipher.o getpass.o ver.o mcg.o \
`mcgsbox.o safer.o shs.o truerand.o $(COMPAT) —o cpasswd
`
`cname: cname.o getpass.o cfs_des.o cfs_cipher.o cfs_adm.o cfs_fh.o \
`cfs_nfs.o ver.o mcg.o mcgsbox.o safer.o shs.o
`
`$(CC) cname.o getpass.o cfs_des.o cfs_cipher.o cfs_adm.o cfs_fh.o \
`
`cfs_nfs.o ver.o mcg.o mcgsbox.o safer.o shs.o \
`$(LIBS)
`$(COMPAT) —o cname
`
`ccat: ccat.o getpass.o cfs_des.o cfs_cipher.o cfs_adm.o cfs_fh.o cfs_nfs.o \
`ver.o mcg.o mcgsbox.o shs.o safer.o
`
`$(CC) ccat.o getpass.o cfs_des.o cfs_cipher.o cfs_adm.o cfs_fh.o \
`
`cfs_nfs.o ver.o mcg.o mcgsbox.o shs.o safer.o \
`$(LIBS)
`$(COMPAT)
`-O ccat
`
`$(OBJS): nfsproto.h admproto.h cfs.h mcg.h safer.h shs.h
`
`'5'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 198
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`271
`272
`
`273
`274
`
`275
`276
`
`277
`
`278
`279
`
`280
`
`281
`282
`
`283
`
`284
`285
`
`286
`
`287
`288
`
`289
`
`290
`291
`
`292
`
`293
`294
`
`295
`
`296
`297
`
`298
`
`299
`
`300
`301
`302
`
`303
`
`304
`305
`
`306
`
`307
`308
`
`309
`310
`
`311
`312
`
`313
`
`314
`315
`
`316
`317
`
`318
`
`319
`320
`
`321
`
`322
`323
`
`324
`
`$(COBJS): nfsproto.h admproto.h cfs.h mcg.h safer.h shs.h
`
`# truerand is a special case, no -0
`truerand.o:
`
`$(CC) —c truerand.c
`
`nfsproto_xdr.c: nfsproto.x
`
`rpcgen $(RPCOPTS) —c —o nfsproto_xdr.c nfsproto.x
`
`nfsproto_svr.c: nfsproto.x
`
`rpcgen $(RPCOPTS) —m —o nfsproto_svr.c nfsproto.x
`
`nfsproto.h: nfsproto.x
`
`rpcgen $(RPCOPTS) —h —o nfsproto.h nfsproto.x
`
`admproto_xdr.c: admproto.x
`
`rpcgen $(RPCOPTS) —c —o admproto_xdr.c admproto.x
`
`admproto_svr.c: admproto.x
`
`rpcgen $(RPCOPTS) —m —o admproto_svr.c admproto.x
`
`admproto.h: admproto.x
`
`rpcgen $(RPCOPTS) —h —o admproto.h admproto.x
`
`admproto_clnt.c: admproto.x
`
`rpcgen $(RPCOPTS)
`
`-1 —o admproto_clnt.c admproto.x
`
`clean:
`
`rm —f $(OBJS) $(CoBJs) $(OTHERS)
`
`rm —f cfsd cmkdir cattach cpassed cdetach cname ccat
`rm —f $(EOBJS) esm
`
`cfs.shar: $(SRCS) $(ESRCS) $(MANs)
`
`shar $(SRCS) $(ESRCS)
`
`$(MANS)
`
`> cfs.shar
`
`printout: $(SRCS) cfs.h mcg.h safer.h admproto.h nfsproto.h
`
`$(PRINTCMD) $(SRCS) cfs.h mcg.h safer.h admproto.h nfsproto.h
`
`install_cfs: cfsd cattach cdetach cmkdir
`install —m 0755 —c —o root cfsd $(ETCDIR)
`
`install -m 0755 —c —o root cattach cdetach cmkdir cpasswd ssh \
`cname ccat $(BINDIR)
`
`#
`
`install —m 0755 i o $(BINDIR)
`
`@echo "Kill any running cfsd prior to restarting."
`@echo "See the README file for more information."
`
`@echo "Don't forget to install the man pages (*.[18])."
`
`$(EOBJS): esm.h
`
`esm: esm.o cfs_des.o esm_cipher.o dhparams.o truerand.o shs.o
`
`$(CC) —o esm esm.o cfs_des.o esm_cipher.o dhparams.o truerand.o shs.o $(RSALIB)
`
`# to generate your own dhparams,
`
`remove the existing dhparams.c and
`
`'5'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 199
`
`
`
`C:\cfs-1.3.3\Makefi|e
`
`325
`
`326
`
`327
`
`328
`329
`
`330
`
`331
`
`332
`333
`
`334
`335
`336
`
`337
`
`338
`339
`340
`
`# remake esm. You shouldn't do this if you want to remain interoperable.
`
`# esm_gen takes a long time.
`
`esm_gen: esm_gen.o esm_cipher.o cfs_des.o truerand.o
`
`$(CC) —o esm_gen esm_gen.o esm_cipher.o cfs_des.o truerand.o $(RSALIB)
`
`dhparams.c:
`
`make esm_gen
`
`esm_gen > dhparams.c
`
`install_esm: esm
`install esm $(BINDIR)
`
`esm.shar:
`
`shar README.esm Makefile esm.c *.x cfs_des.c esm_cipher.c esm_gen.c \
`dhparams.c truerand.o shs.c esm.h esm.1> esm.shar
`
`'7'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 200
`
`
`
`mcg.c
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 201
`
`
`
`C:\cfs-1.3.3\mcg.c
`
`/9:
`* The author of this software is Matt Blaze.
`
`*
`
`Copyright
`
`(c) 1994 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.
`
`* macguffin block encrypt/decrypt
`
`* unrolled, constant mask (optimized) version
`
`* For a complete description of MacGuffin, see
`
`* M. Blaze & B. Schneier,
`
`"The MacGuffin Block Cipher Algorithm",
`
`* proc. 2nd Workshop on Cryptographic Algorithms, Leuven, Belgium, 1994.
`
`* 10/4/94 matt blaze
`*
`
`/
`
`#include "mcg.h"
`
`/*
`
`* codebook encrypt one block with given expanded key
`*/
`
`mcg_block_encrypt(blk,key)
`unsigned char *blk;
`
`mcg_key *key;
`
`unsigned short r0, r1, r2, r3, a, b, c;
`int i;
`
`unsigned short *ek;
`
`rO=blk[O]I(blk[l]<<8);
`
`rl=blk[2] | (blk[3]<<8) ;
`
`r2=blk[4] | (blk[5]<<8) ;
`
`r3=blk[6]I(blk[7]<<8);
`
`ek = &(key—>Val[O]);
`/*
`
`* round loop, unrolled 4x
`*/
`
`{
`i++)
`i<8;
`for (i=0;
`a=r1"
`*(ek++);
`
`b=]:‘2A
`
`*(ek++);
`
`i-'OkO<D\'iO\U'|i-i>UJ[\Ji-'
`
`i-' i-'
`
`i-' l\.)
`
`I-' OJ
`i-' i-i>
`
`i-' U'|
`i-' ON
`I-' \'i
`I-' (D
`
`19
`
`20
`21
`
`22
`
`23
`24
`
`25
`
`26
`27
`
`28
`
`29
`
`30
`
`31
`
`32
`
`33
`
`34
`
`35
`
`36
`
`37
`
`38
`
`39
`
`40
`41
`
`42
`
`43
`44
`
`45
`
`46
`47
`
`48
`
`49
`
`50
`
`51
`
`52
`
`53
`
`54
`
`'1'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 202
`
`
`
`C:\cfs-1.3.3\mcg.c
`
`55
`
`56
`
`57
`
`58
`
`59
`
`60
`
`61
`
`62
`
`63
`
`64
`
`65
`
`66
`
`67
`
`68
`
`69
`
`70
`71
`
`72
`
`73
`74
`
`75
`
`76
`77
`
`78
`
`79
`
`80
`
`81
`
`82
`
`83
`
`A
`
`*(ek++);
`
`r0
`
`=
`
`((OUTO & stab1e[(a & LOOKO0)
`
`I
`
`I
`(b & LOOK01)
`(c & LooK02)])
`
`I
`
`(OUTl & stab1e[(a & LooK1o)
`
`I
`LOOKll)
`LOOKl2)])
`
`stab1e[(a & LOOK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`63mmmmmmm
`
`I
`LOOK3l)
`(c & LOOK32)]));
`
`A
`
`A
`
`A
`
`II
`
`QJ
`
`II
`D"
`0 II
`
`r2
`
`r3
`
`r0
`
`*(ek++);
`
`*(ek++);
`
`*(ek++);
`
`r1
`
`=
`
`((OUTO & stab1e[(a & LOOKO0)
`
`I
`
`I
`(b & LOOK01)
`(c & LooK02)])
`
`I
`
`(OUTl & stab1e[(a & LOOK10)
`
`I
`LOOKll)
`LOOKl2)])
`
`stab1e[(a & LOOK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`63mmmmmmm
`
`I
`LOOK3l)
`(c & LOOK32)]));
`
`II
`
`QJ
`
`r3
`
`A
`
`*(ek++);
`
`84
`
`85
`
`86
`
`87
`
`88
`
`89
`
`90
`
`91
`
`92
`
`93
`
`94
`
`95
`
`96
`
`97
`
`98
`
`99
`
`100
`
`101
`
`102
`
`103
`
`104
`
`105
`
`106
`
`107
`
`108
`
`A
`
`A
`
`II
`D"
`0 II
`
`r0
`
`r1
`
`*(ek++);
`
`*(ek++);
`
`r2
`
`=
`
`((OUTO & stab1e[(a & LOOKO0)
`
`I
`
`I
`(b & LooKo1)
`(c & LooK02)])
`
`I
`
`(OUTl & stab1e[(a & LooK1o)
`
`I
`LOOKll)
`LOOKl2)])
`
`stab1e[(a & LOOK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`63ms:-mmmmm
`
`I
`LOOK3l)
`(c & LOOK32)]));
`
`II
`
`II
`
`QJ
`
`D"
`
`r0
`
`r1
`
`A
`
`A
`
`A
`
`*(ek++);
`
`*(ek++);
`
`c = r2
`
`*(ek++);
`
`r3
`
`=
`
`((OUTO & stab1e[(a & LOOKO0)
`
`I
`
`I
`(b & LOOK01)
`(c & LooK02)])
`
`I
`
`I
`
`(OUTl & stab1e[(a & LooK1o)
`
`I
`(b & LOOKll)
`(c & LOOKl2)])
`
`(OUT2 & stab1e[(a & LOOK20)
`
`(b & LOOK2l)
`
`I
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 203
`
`
`
`C:\cfs-1.3.3\mcg.c
`
`109
`
`110
`
`111
`112
`
`113
`114
`
`115
`
`116
`
`117
`
`118
`
`119
`
`120
`
`121
`
`122
`123
`
`124
`
`125
`126
`
`(c & LOOK22)])
`
`I
`
`(OUT3 & stab1e[(a & LooK3o)
`
`I
`
`I
`(b & LooK31)
`(c & LOOK32)]));
`
`}
`b1k[O]
`
`= r0;
`
`b1k[1]
`
`= rO>>8;
`
`b1k[2]
`
`= r1;
`
`b1k[3]
`
`= r1>>8;
`
`b1k[4]
`
`= r2;
`
`b1k[5]
`
`= r2>>8;
`
`b1k[6]
`
`= r3;
`
`b1k[7]
`
`= r3>>8;
`
`}
`
`/*
`
`* codebook decrypt one block with given expanded key
`*/
`
`127 mcg_b1ock_decrypt(b1k,key)
`128
`unsigned char *b1k;
`
`129
`130
`
`131
`132
`133
`
`134
`135
`
`136
`
`137
`
`138
`
`139
`140
`
`141
`142
`
`143
`144
`
`145
`146
`
`147
`
`148
`
`149
`
`150
`151
`
`152
`
`153
`154
`
`155
`
`156
`157
`
`158
`
`159
`160
`
`161
`
`162
`
`mcg_key *key;
`
`{
`
`unsigned short r0, r1, r2, r3, a, b, C;
`int 1;
`
`unsigned short *ek;
`
`rO=b1k[O]I(b1k[1]<<8);
`
`r1=b1k[2]|(b1k[3]<<8);
`
`r2=b1k[4] I (b1k[5]<<8);
`
`r3=b1k[6]I(b1k[7]<<8);
`
`ek = &(key->Va1[KSIZE]);
`/*
`
`* round loop, unrolled 4x
`*/
`
`{
`i<8; ++i)
`for (i=0;
`c = r2 ‘ *(——ek);
`
`b = r1 ‘ *(——ek);
`
`a = r0 ‘ *(—-ek);
`
`r3 ‘= ((OUTO & stab1e[(a & LOOKOO)
`
`I
`
`I
`(b & LooKo1)
`(c & LooK02)])
`
`I
`
`I
`
`I
`
`(OUT1 & stab1e[(a & LooK1o)
`
`I
`(b & LOOK11)
`(c & LOOK12)])
`
`(OUT2 & stab1e[(a & LooK2o)
`
`I
`(b & LOOK21)
`(c & LOOK22)])
`
`(OUT3 & stab1e[(a & LooK3o)
`
`I
`(b & LooK31)
`(c & LooK32)]));
`
`I
`
`I
`
`I
`
`c = r1 ‘ *(——ek);
`
`b = r0 ‘ *(--ek);
`
`'3'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 204
`
`
`
`C:\cfs-1.3.3\mcg.c
`
`163
`
`164
`
`165
`
`166
`
`167
`
`168
`
`169
`
`170
`171
`
`172
`
`173
`174
`
`175
`
`176
`177
`
`178
`
`179
`
`180
`
`181
`
`182
`
`183
`
`184
`
`185
`
`186
`
`187
`
`188
`
`189
`
`190
`
`a = r3 A *(--ek)
`
`oI
`
`((OUTO & stab1e[(a & LooK00)
`
`I
`
`I
`(b & LooK01)
`(C
`& LOOKO2)])
`
`I
`
`I
`
`I
`
`(OUT1 &
`(b &
`
`(C &
`
`(OUT2 &
`(b &
`
`(C &
`
`(OUT3 &
`(b &
`
`(C &
`
`C = r0 A *(--ek)
`
`b = r3 * *(--ek)
`
`a = r2 A *(--ek)
`rl A=
`
`stab1e[(a & LooK10)
`
`I
`LOOKll)
`LOOK12)])
`
`stab1e[(a & LooK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`I
`LooK31)
`LooK32)]));
`
`oI
`oI
`oI
`
`((OUTO & stab1e[(a & LooK00)
`
`I
`
`I
`(b & LooK01)
`(C
`& LOOKO2)])
`
`I
`
`I
`
`I
`
`(OUT1 &
`(b &
`
`(C &
`
`(OUT2 &
`(b &
`
`(C &
`
`(OUT3 &
`(b &
`
`stab1e[(a & LooK10)
`
`I
`LOOKll)
`LOOK12)])
`
`stab1e[(a & LooK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`I
`LooK31)
`LooK32)]));
`
`(C &
`
`C = r3 A *(--ek)
`
`b = r2 A *(--ek)
`
`a = r1 A *(--ek)
`r0 A=
`
`oI
`oI
`
`((OUTO & stab1e[(a & LooK00)
`
`I
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 205
`
`I
`(b & LooK01)
`(C
`& LOOKO2)])
`
`I
`
`I
`
`I
`
`(OUT1 &
`(b &
`
`(C &
`
`(OUT2 &
`(b &
`
`(C &
`
`(OUT3 &
`(b &
`
`(C &
`
`stab1e[(a & LooK10)
`
`I
`LOOKll)
`LOOK12)])
`
`stab1e[(a & LooK20)
`
`I
`LOOK2l)
`LOOK22)])
`
`stab1e[(a & LOOK30)
`
`I
`LooK31)
`LooK32)]));
`
`} b
`
`lk[O]
`
`= r0;
`
`b1k[l]
`
`= rO>>8;
`
`blk[2]
`
`= r1;
`
`b1k[3]
`
`= rl>>8;
`
`blk[4]
`
`= r2;
`
`b1k[5]
`
`= r2>>8;
`
`blk[6]
`
`= r3;
`
`b1k[7]
`
`= r3>>8;
`
`}
`
`191
`
`192
`
`193
`
`194
`
`195
`
`196
`
`197
`
`198
`
`199
`
`200
`
`201
`
`202
`
`203
`
`204
`
`205
`
`206
`
`207
`
`208
`
`209
`
`210
`211
`
`212
`
`213
`214
`
`215
`216
`
`
`
`mcg.h
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 206
`
`
`
`C:\cfs-1.3.3\mcg.h
`
`1
`2
`
`3
`
`4
`
`5
`
`6
`
`7
`8
`9
`
`10
`11
`
`l2
`
`l3
`l4
`
`15
`
`16
`17
`
`18
`19
`
`20
`
`21
`
`22
`
`23
`24
`
`25
`
`26
`27
`28
`
`29
`30
`
`31
`
`32
`
`33
`34
`
`35
`36
`
`37
`
`38
`
`39
`40
`
`41
`42
`
`43
`
`44
`
`45
`46
`
`47
`48
`
`49
`
`50
`
`51
`52
`
`53
`
`54
`
`/*
`* The author of this software is Matt Blaze.
`
`*
`
`Copyright
`
`(c) 1994 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.
`
`*/
`
`/* MacGuffin Constants */
`
`#define SIZE (1<<16)
`
`extern unsigned short stable[SIZE];
`
`extern unsigned short lookupmasks[4][3];
`
`extern unsigned short outputmasks[4];
`
`/*
`
`*
`*/
`
`input and output
`
`lookup masks
`
`/* sl+s2 */
`#define LOOKOO
`
`OXOO36
`
`#define LOOKOl
`
`OXO6CO
`
`#define LOOKO2
`
`OX69OO
`
`#define OUTO
`
`OxOOOf
`
`/* s3+s4 */
`#define LOOKlO Ox5048
`
`#define LOOKll Ox2lO6
`
`#define LOOKl2 Ox84ll
`
`#define OUTl
`
`OxOOfO
`
`/* s5+s7 */
`#define LOOK2O Ox860l
`
`#define LOOK2l OX4828
`
`#define LOOK22 OxlOC4
`
`#define OUT2
`
`Ox33OO
`
`/* s6+s8 */
`#define LOOK3O
`
`OX298O
`
`#define LOOK3l Ox90ll
`
`#define LOOK32 OxO22a
`
`#define OUT3
`
`OXCCOO
`
`#define ROUNDS 32
`
`#define KSIZE (ROUNDS*3)
`
`'1'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 207
`
`
`
`C:\cfs-1.3.3\mcg.h
`
`typedef struct mcg_key {
`unsigned short va1[KSIZE];
`
`} mcg_key;
`
`55
`56
`
`57
`58
`
`59
`
`'2'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 208
`
`
`
`mcgsbox.c
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 209
`
`
`
`C:\cfs-1.3.3\mcgsbox.c
`
`i-'OkO(XJ\'iO\U'|iJ>bJ[\Ji-'
`
`i-' i-'
`
`i-' [\J
`
`i-' Us)
`14
`
`15
`
`16
`17
`
`18
`
`19
`20
`
`21
`
`22
`23
`24
`
`25
`26
`
`27
`
`28
`
`29
`
`30
`31
`
`32
`
`33
`34
`
`35
`36
`
`37
`
`38
`
`39
`
`40
`
`41
`
`42
`43
`
`44
`45
`
`46
`
`47
`
`48
`
`49
`
`50
`
`51
`52
`
`53
`54
`
`/9:
`* The author of this software is Matt Blaze.
`
`*
`
`Copyright
`
`(c) 1992, 1993, 1994 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
`
`=1-
`
`>(-
`
`>(-
`
`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.
`
`*/
`
`/*
`
`* MacGuffin optimized table initialization and key setup
`*
`
`* 10/3/94 matt blaze
`
`*/
`
`#include "mcg.h"
`
`/*
`
`*
`
`the 8 s—boxes, expanded to put the output bits in the right
`
`* places.
`
`note that these are the des s—boxes
`
`(in left—right,
`
`* not cannonical, order), but with only the "outer" two output
`* bits.
`
`*/
`
`unsigned short sboxes[8][64]
`/* 0
`(s1) */
`
`= {
`
`{oxooo2, oxoooo, oxoooo, 0xoo03, 0xoo03, 0xooo1. 0xooo1, oxoooo.
`oxoooo, oxooo2, oxooo3, oxoooo, oxooo3, 0xoo03, oxooo2. 0xooo1.
`
`0x0OO1, 0xooo2. 0xooo2, oxoooo, oxoooo, oxooo2. 0xooo2, 0xoo03.
`
`oxooo1, oxoo03, oxoo03, oxooo1, oxoooo, 0xooo1. 0xooo1. 0xooo2.
`
`oxoooo, 0xoo03, oxooo1. 0xooo2. 0xooo2. 0xooo2. 0xooo2, oxoooo.
`
`oxoo03, oxoooo, oxoooo, 0xoo03, oxoooo, 0xooo1, 0xoo03, 0xooo1.
`
`oxooo3, 0xooo1. 0xooo2, oxooo3, oxoo03, oxooo1. 0xooo1. 0xooo2.
`
`oxooo1, 0xooo2. 0xooo2, oxoooo, oxooo1, oxoooo, oxoooo, 0xoo03}.
`(s2) */
`
`/* 1
`
`{oxoo0c, 0xooo4. 0xooo4, oxoooc, oxooos, oxoooo, oxooos, oxooo4.
`oxoooo, oxoooc, oxoooc, oxoooo, oxooo4, oxooos, oxoooo, oxooos.
`
`oxoooc, oxooos, oxooo4, oxoooo, oxoooo, oxooo4, oxoooc, oxooos.
`
`oxooos, oxoooo, oxoooo, oxoooc, oxooo4, oxoooc, oxooos, oxooo4.
`
`oxoooo, oxoooc, oxooos, oxooos, oxooo4, oxooos, oxoooc, oxooo4.
`
`Ox0OO8, 0xooo4, oxoooo, oxoooc, oxoooc, oxoooo, oxooo4, oxoooo.
`
`oxooo4, oxoooc, oxooos, oxoooo, oxooos, oxooo4, oxoooo, oxooos.
`
`oxoooc, oxoooo, oxooo4. 0xooo4, oxoooo, oxooos, oxoooc, 0x000c}.
`(s3) */
`
`/* 2
`
`{oxoo2o, Ox0030. oxoooo. 0xoo1o. Ox0030. oxoooo, 0xoo2o. oxoo3o.
`oxoooo, Qxoo1o. §xoo1o. oxoooo, Ox0030. oxoooo. 0xoo1o. 0xoo2o.
`
`'1'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 210
`
`
`
`C:\cfs-1.3.3\mcgsbox.c
`
`55
`
`56
`
`57
`
`58
`
`59
`
`60
`61
`
`62
`63
`
`64
`
`65
`
`66
`
`67
`
`68
`
`69
`70
`
`71
`72
`
`73
`
`74
`
`75
`
`76
`
`77
`
`78
`79
`
`80
`81
`
`82
`
`83
`
`84
`
`85
`
`86
`
`87
`88
`
`89
`90
`
`91
`
`92
`
`93
`
`94
`
`95
`
`96
`97
`
`98
`99
`
`100
`
`101
`
`102
`
`103
`
`104
`
`105
`106
`
`107
`
`108
`
`0x0010. 0x0000. 0x0030. 0x0020. 0x0020: 9x0010: 9x0010. 0x0020.
`
`0x0030. 0x0020. 0x0000. 0x0030. 0x0000. 0x0030. 0x0020: 9x0010.
`
`0x0030. Qx0010. 0x0000. 0x0020. 0x0000. 0X0030. 0X0030. 0x000O.
`
`0x0020. 0x0000. 0X0030. 0XO030: Qx0010. 0x0020. 0x000O. Qx0010.
`
`0x0030. 0x000O. Qx0010. 0X0030. 0x0000. 0x0020. 0x0020: 9x0010.
`
`0x0010. 0X0030. 0x0020: 9x0010. 0x0020. 0x000O. Qx0010. 0x0020}.
`(S4) */
`
`/* 3
`
`{0x0040. 0x00C0. 0x00C0. 0x0080. 0x0080. 0x00C0. 0x0040. 0x0040.
`0x0000. 0x0000. 0x0000. 0x00C0. 0x00C0. 0x0000. 0x0080. 0x0040.
`
`0x0040. 0x0000. 0x0000. 0x0040. 0x0080. 0x0000. 0x0040. 0x0080.
`
`OXOOCO. Ox0040. Ox0080. Ox0080. OXOOOO. 0X0O80. 0XOOC0. OXOOCO:
`
`0x0080. 0x0040. 0x0000. 0x00C0. 0x00C0. 0x0000. 0x0000. 0x000O.
`
`0x0080. 0x0080. 0x00C0. 0x0040. 0x0040. 0x00C0. 0x00C0. 0x0080.
`
`0x00C0. 0x00C0. 0x0040. 0x0000. 0x0040. 0x0040. 0x0080. 0x00CO.
`
`0x0040. 0x0080. 0x0000. 0x0040. 0x0080. 0x0000. 0x0000. 0x0080}.
`(S5) */
`
`/* 4
`
`{0x0000, 0x0200. 0x0200. 0x0300. 0x0000. 0x0000. 0XOl00: 0x0200.
`0x0100, 0x0000. 0x0200. 0XOl00: 0x0300. 0x0300. 0x0000. 0XOl00:
`
`0x0200, 0XOl00: 0XOl00: 0x0000. 0XOl00: 0x0300. 0x0300. 0x0200.
`
`0x0300, 0XOl00: 0x0000. 0x0300. 0x0200. 0x0200. 0x0300. 0x000O.
`
`0x0000. 0x0300. 0x0000. 0x0200. 0XOl00: 0x0200. 0x0300. 0XOl00:
`
`0x0200, 0XOl00: 0x0300. 0x0200. 0XOl00: 0x0000. 0x0200. 0x0300.
`
`0x0300. 0x0000. 0x0300. 0x0300. 0x0200. 0x0000. 0XOl00: 0x0300.
`
`0x0000, 0x0200. 0XOl00: 0x0000. 0x0000. 0XOl00: 0x0200. 0X0l00}:
`(S6) */
`
`/* 5
`
`{0x0800. 0x0800. 0x0400. 0x0C00. 0x0800. 0x0000. 0x0C00. 0x000O.
`0x0C00, 0x0400. 0x0000. 0x0800. 0x0000. OXOCOO. 0x0800. 0x0400.
`
`0x0000. 0x0000. 0x0C00. 0x0400. 0x0400. 0x0C0O. 0x000O. 0x0800.
`
`0x0800. 0x0000. 0x0400. 0x0C00. 0x0400. 0x0400. 0x0C00. 0x0800.
`
`0x0C00. 0x0000. 0x0800. 0x0400. 0x0C00. 0x0000. 0x0400. 0x0800.
`
`0x0000. 0x0C00. 0x0800. 0x0400. 0x0800. 0x0C00. 0x0400. 0x0800.
`
`0x0400. 0x0C00. 0x0000. 0x0800. 0x0000. 0x0400. 0x0800. 0x0400.
`
`0x0400. 0x0000. 0x0C00. 0x0000. 0x0C00. 0x0800. 0x0000. 0XOC00}.
`(S7) */
`
`/* 6
`
`{0x0000. 0x3000. 0x3000. 0x0000. 0x000O. 0x3000. 0x2000. 0x1000.
`0x3000. 0x000O. 0x000O. 0x3000. 0x2000. 0x1000. 0x3000. 0x2000.
`
`0x1000. 0x2000. 0x2000. 0x1000. 0x3000. 0x1000. 0x1000. 0x2000.
`
`0x1000. OXOOOO. Ox2000. Ox3000. OXOOOO. 0x2000. 0x1000. OXOOOO:
`
`0x1000. 0x0000. 0x0000. 0x3000. 0x3000. 0x3000. 0x3000. 0x2000.
`
`0x2000. 0x1000. 0x1000. 0x0000. 0x1000. 0x2000. 0x2000. 0x1000.
`
`0x2000. 0x3000. 0x3000. 0x1000. 0x0000. 0x0000. 0x2000. 0x3000.
`
`0x0000. 0x2000. 0x1000. 0x0000. 0x3000. 0x1000. 0x0000. 0x2000}.
`(S8) */
`
`/* 7
`
`{0xC000. 0x4000. 0x0000. 0xC000. 0x8000. 0xC000. 0x0000. 0x8000.
`0x0000. 0x8000. 0xC000. 0x4000. 0xC000. 0x4000. 0x4000. 0x000O.
`
`0x8000, 0x8000, 0xC000, 0x4000. 0x4000. 0x0000. 0x8000. OXCOOO:
`
`0X4000. 0x0000. 0x0000. 0x8000. 0x8000. 0xC000. 0x4000. 0x000O.
`
`0X4000. 0x0000. 0xC000. 0x4000. 0x0000. 0x8000. 0x4000. 0x4000.
`
`0XC000. 0x0000. 0x8000. 0x8000. 0x8000. 0x8000. 0x0000. OXCOOO:
`
`0X0000. 0xC000. 0x0000. 0x8000. 0x8000. 0xC000. 0xC000. 0x000O.
`
`0XC000, 0x4000, 0x4000. 0x4000. 0x4000. 0x0000. 0x8000. 0XC000}};
`
`/*
`
`* table s—box outputs, expanded for 16 bit input
`
`'2'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 211
`
`
`
`C:\cfs-1.3.3\mcgsbox.c
`
`109
`
`110
`111
`
`112
`
`113
`114
`
`115
`
`116
`117
`
`118
`
`119
`
`120
`121
`
`122
`
`123
`124
`
`125
`
`126
`127
`
`128
`
`129
`
`130
`
`131
`
`132
`
`133
`
`134
`
`135
`
`136
`
`* this one table includes all 8 sboxes — just mask off
`
`* the output bits not in use
`*/
`
`unsigned short stable[SIZE];
`
`* we can exploit two features of the s—box input and output
`
`* permutations — first, each s—box uses as input two different bits
`
`*
`
`from each of the three registers in the right side, and, second,
`
`* for each s—box there is another—sbox with no common input bits
`
`* between them.
`
`therefore we can lookup two s—box outputs in one
`
`* probe of the table.
`
`just mask off the approprate input bits
`
`*
`
`in the table below for each of the three registers and or
`
`* together for the table lookup index.
`
`* These are also available in #defines, for better lookup
`
`* speed in unrolled loops.
`*/
`
`unsigned short lookupmasks[4][3]
`/* a
`.
`b
`.
`c
`*/
`
`= {
`
`{OxOO36, OxO6cO, Ox6900},
`
`/* sl+s2 */
`
`{Ox5048, Ox2lO6, Ox84ll},
`
`/* s3+s4 */
`
`{Ox860l, Ox4828, OxlOc4},
`
`/* s5+s7 */
`
`{Ox2980, Ox90ll, OxO22a}};
`
`/* s6+s8 */
`
`* this table contains the corresponding output masks for the table
`
`*
`
`lookup procedure mentioned above.
`
`137
`
`138
`
`139
`
`140
`141
`
`142
`
`143
`144
`
`145
`
`146
`147
`
`148
`
`149
`
`150
`
`151
`
`152
`
`153
`
`154
`
`155
`
`156
`
`157
`
`158
`
`159
`
`160
`
`161
`
`162
`
`* similarly available in #defines.
`*/
`
`unsigned short outputmasks[4]
`OxOOOf,
`/*
`S1+S2 */
`
`= {
`
`OxOOfO,
`
`Ox3300,
`
`oxccoo};
`
`/*
`
`/*
`
`/*
`
`s3+s4 */
`
`s5+s7 */
`
`s6+s8 */
`
`Vk
`
`/
`
`* initialize the macguffin s—box tables.
`* this takes a while,
`
`but is only done once.
`
`*/
`
`mcg_init()
`
`{
`
`unsigned int i,j,k;
`int b;
`
`/*
`
`*
`
`input permutation for the 8 s—boxes.
`
`* each row entry is a bit position from
`
`* one of the three right hand registers,
`* as follows:
`
`*
`
`a,a,b,b,c,c
`
`'3'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 212
`
`
`
`C:\cfs-1.3.3\mcgsbox.c
`
`static int sbits[8][6] = {
`
`{2,5,6,9,11.13}.
`
`{1,4,7,1o.8,14},
`
`{3,6,8,13.o,15}.
`
`{12,14,1,2,4,10},
`
`{o,1o.3,14,6,12},
`
`{7,8,12.15.1,5},
`
`{9,15,5,11,2,7},
`
`{11,13,o,4,3,9}};
`
`/* fill the table */
`if ((stab1e[O]==Oxc86e) && (stab1e[Oxffff]==Oxedaf))
`return 0;
`
`i<SIZE;
`for (i=0;
`stab1e[i]=O;
`
`i++)
`
`{
`
`for (j=0;
`
`j<8;
`
`j++)
`
`|=
`stab1e[i]
`sboxes[j][((i>>sbits[j][O])&1)
`
`|(((i>>sbits[j][1])&1)<<1)
`
`|(((i>>sbits[j][2])&1)<<2)
`
`|(((i>>sbits[j][3])&1)<<3)
`
`|(((i>>sbits[j][4])&1)<<4)
`
`|(((i>>sbits[j][5])&1)<<5)];
`
`}
`return 1;
`
`}
`
`#ifdef SOLARISZX
`
`#define bcopy(s,d,1) memcpy(d,s,1)
`#endif
`
`163
`
`164
`
`165
`
`166
`
`167
`
`168
`
`169
`
`170
`
`171
`172
`
`173
`174
`175
`
`176
`177
`
`178
`
`179
`180
`
`181
`
`182
`
`183
`
`184
`
`185
`186
`
`187
`188
`
`189
`190
`
`191
`
`192
`193
`194
`
`195 mcg_keyset(key,ek)
`196
`unsigned char *key;
`
`mcg_key *ek;
`
`int i,j;
`
`unsigned char k[2][8];
`
`mcg_init();
`bcopy(&key[O].k[O].8);
`
`bcopy(&key[8].k[1].8);
`for (i=0;
`i<KSIZE;
`i++)
`
`ek—>Va1[i]=0;
`
`for (i=0;
`
`i<2;
`
`i++)
`
`{
`j++)
`j<32;
`for (j=0;
`mcg_b1ock_encrypt(k[i],ek);
`
`ek->va1[j*3]
`
`= k[i][0]
`
`|
`
`(k[i][1]<<8);
`
`ek—>Va1[j*3+1]
`
`*= k[i][2]
`
`ek—>Va1[j*3+2]
`
`*= k[i][4]
`
`|
`
`|
`
`(k[i][3]<<8);
`
`(k[i][5]<<8);
`
`}
`
`197
`
`198
`199
`
`200
`201
`
`202
`203
`
`204
`205
`
`206
`
`207
`
`208
`209
`
`210
`
`211
`
`212
`
`213
`
`214
`215
`
`{
`
`}
`
`'4'
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 213
`
`
`
`m0unt.x
`
`Petitioner Oracle-Apple - Exhibit 1009 - Page 214
`
`
`
`C:\cfs-1.3.3\mount.x
`
`/* @(#)mount.x
`
`1.2 87/11/12 3.9 RPCSRC */
`
`/* @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro */
`
`/*
`
`* Sun RPC is a product of Sun Microsystems,
`
`Inc. and is provided for
`
`* unrestricted use provided that this legend is included on all tape
`
`* media and as a part of the software program in whole or part. Users
`
`* may copy or modify Sun RPC without charge, but are not authorized
`
`to license or distribute it to anyone else except as part of a product or
`*
`* program developed by the user.
`*
`
`* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
`>(-
`
`WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
`
`>(-
`
`>(-
`
`>(-
`
`PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
`
`Sun RPC is provided with no support and without any obliga