throbber
make_with_bad_1pcgen
`
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket