summaryrefslogtreecommitdiff
path: root/Keys/FW/FWkey.mak
blob: 12d85e6c47c1c560952bae253259262f727617bb (plain)
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
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
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
#*************************************************************************
#*************************************************************************
#**                                                                     **
#**        (C)Copyright 1985-2014, American Megatrends, Inc.            **
#**                                                                     **
#**                       All Rights Reserved.                          **
#**                                                                     **
#**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
#**                                                                     **
#**                       Phone: (770)-246-8600                         **
#**                                                                     **
#*************************************************************************
#*************************************************************************

#*************************************************************************
# $Header: /Alaska/SOURCE/Modules/SecureFlashPkg/PlatformKey/FWkey.mak 5     3/18/14 3:09p Alexp $
#
# $Revision: 5 $
#
# $Date: 3/18/14 3:09p $
#*************************************************************************
# Revision History
# ----------------
# $Log: /Alaska/SOURCE/Modules/SecureFlashPkg/PlatformKey/FWkey.mak $
# 
# 5     3/18/14 3:09p Alexp
# year 2014 in hdr & ftr
# 
# 4     1/07/14 6:28p Alexp
# use silent macro in front of "copy"
# 
# 3     11/11/13 9:33a Alexp
# 
# 2     10/17/13 4:47p Alexp
# New file with rules to generate FwKey ffs. 
# Relevant Make scripts moved form SecureMod.nmak
# 
#*************************************************************************
#<AMI_FHDR_START>
#
# Name: Fwkey.mak
#
# Description: Includes build rules for Platform Root Key(PR) ffs file(s)
# 
#<AMI_FHDR_END>
#*************************************************************************

SecureModule : $(BUILD_DIR)\FWKey.mak $(BUILD_DIR)\FWkey.ffs

#---------------------------------------------------------------------------
#            Generic MAK dependencies
#---------------------------------------------------------------------------
$(BUILD_DIR)\FWKey.mak : $(FWKey_DIR)\FWKey.mak $(FWKey_DIR)\FWKey.cif $(FWKey_DIR)\FWKey.sdl $(BUILD_RULES)
    $(CIF2MAK) $(FWKey_DIR)\FWKey.cif $(CIF2MAK_DEFAULTS)

#---------------------------------------------------------------------------
#GUID used to identify FW Key FFS file within the Firmware Volume
#---------------------------------------------------------------------------
#RSA n-modulus (e-exponent is hardwired to 0x10001)
!IF "$(FWKEY_FILE_FORMAT)"=="0"
PR_KEY_PUB_FFS_FILE_GUID = 3FEEC852-F14C-4E7F-97FD-4C3A8C5BBECC
!ENDIF

#SHA256 Hash of an n-modulus of RSA Key
!IF "$(FWKEY_FILE_FORMAT)"=="1"
PR_KEY_PUB_FFS_FILE_GUID = 5B85965C-455D-4CC6-9C4C-7F086967D2B0
!ENDIF

#x509 Key Cerificate
!IF "$(FWCAPSULE_CERT_FORMAT)"=="1" || "$(FWKEY_FILE_FORMAT)" == "2"
PR_KEY_PUB_FFS_FILE_GUID = 3A666558-43E3-4D25-9169-DB81F5DB42E1
!ENDIF

!IF !EXIST($(FWpub))
#---------------------------------------------------------------------------
#   Create a scratchpad Key buf if no Key file is provided
#---------------------------------------------------------------------------
#Merge64 FwKey pad.
$(BUILD_DIR)\FWKEY.BIN: $(FWKey_DIR)\FWKey.mak
	$(SILENT)copy << $(BUILD_DIR)\FWkey.ini > NUL 
output
    FWKEY_FILE($@)
end
group FWKEY_FILE
    upper=0xffffffff
components
blank MICROCODE_PAD
    size=$(FWKEY_FILE_SIZE)
    pattern=(0xff)
end
end end
<<
	$(MERGE) /s $(BUILD_DIR)\Fwkey.ini
#
#$(BUILD_DIR)\FWkey.obj: $(BUILD_DIR)\FWkey.mak
#	$(SILENT)copy << $(BUILD_DIR)\FWkey.c > NUL
##include <Token.h>
##pragma pack(1)
#char pad[$(FWKEY_FILE_SIZE)] = {0xFF,0xFF,0xFF,0xFF};
#<<KEEP
#    $(CC) /Fo$@ $(CFLAGS) $(BUILD_DIR)\FWkey.c

#$(BUILD_DIR)\FWkey.bin : $(BUILD_DIR)\FWkey.obj $(BUILD_DIR)\FWkey.mak
#    $(MAKE) /$(MAKEFLAGS) EXT_OBJS= $(BUILD_DEFAULTS)\
#        /f $(BUILD_DIR)\FWkey.mak bin\
#        NAME=FWkey OBJECTS=$(BUILD_DIR)\FWkey.obj\
#        MAKEFILE=$(BUILD_DIR)\FWkey.mak \
#        TYPE=BINARY

!ELSE
#---------------------------------------------------------------------------
#   Prepare Platform Firmware Root Key (FWKey) bin file
#---------------------------------------------------------------------------
$(BUILD_DIR)\FWkey.bin: $(FWpub)
!IF "$(FWCAPSULE_CERT_FORMAT)"=="1" || "$(FWKEY_FILE_FORMAT)" == "2"
#x509 Cert Key
    $(SILENT)copy $** $@
!ELSE
#Extract 256byte n-modulus from x509 DER or PKCS#1v2 ASN.1 encoded RSA Key
# n-modulus can be extracted either from Public Key FWpub or full RSA Key FWpriv files
    $(CRYPTCON) -w -k $** -o $@
!IF "$(FWKEY_FILE_FORMAT)"=="1"
#get SHA256 Hash of n-modulus of RSA Key
    $(CRYPTCON) -h2 -f $@ -o $@
!ENDIF
!ENDIF
 
!ENDIF #!IF !EXIST($(FWpub))

#---------------------------------------------------------------------------
#   Include public portion of Platform Firmware Root Key (FWKey) as .FFS
#---------------------------------------------------------------------------
#Warning: don't compress the data. Raw key buffer is expected by Recovery module.
#Key data won't be compressed much anyway.
#Ignore FFS checksum as the file data may be updated by cryptocon utility
$(BUILD_DIR)\FWkey.ffs: $(BUILD_DIR)\FWkey.bin
    $(MAKE) /f Core\FFS.mak \
        BUILD_DIR=$(BUILD_DIR) \
        GUID=$(PR_KEY_PUB_FFS_FILE_GUID) \
        TYPE=EFI_FV_FILETYPE_FREEFORM FFS_CHECKSUM=0 \
        BINFILE=$(BUILD_DIR)\FWkey.bin FFSFILE=$@ COMPRESS=0 NAME=FWkey

#*************************************************************************
#*************************************************************************
#**                                                                     **
#**        (C)Copyright 1985-2014, American Megatrends, Inc.            **
#**                                                                     **
#**                       All Rights Reserved.                          **
#**                                                                     **
#**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
#**                                                                     **
#**                       Phone: (770)-246-8600                         **
#**                                                                     **
#*************************************************************************
#*************************************************************************