# Generate a private key in c:\vault\priv.pem
nrfutil keys generate c:\vault\priv.pem
# Display the generated private key (in little-endian format)
nrfutil keys display --key sk --format hex c:\vault\priv.pem
# Display the public key that corresponds to the generated private key
# (in little-endian format)
nrfutil keys display --key pk --format hex c:\vault\priv.pem
# Display the public key that corresponds to the generated private key
# (in code format to be used with DFU)
nrfutil keys display --key pk --format code c:\vault\priv.pem
# Write the public key that corresponds to the generated private key
# to the file public_key.c (in code format)
nrfutil keys display --key pk --format code c:\vault\priv.pem --out_file public_key.c
Hardware version : 하드웨어 버전은 장치에 의해 결정된다. 예제 구현에서 장치의 하드웨어는 sdk_config 파일의 NRF_DFU_HW_VERSION매크로에 의해 지정된다. nRF52시리즈의 경우 기본 버전 번호는 52로 정의되어 있다. 그러나 이 기본 버전 번호를 제품에 사용해서는 안되며 고유한 버전 번호 지정 체계를 사용해야 한다.
SoftDevice firmware ID : SoftDevice 펌웨어 ID는 SoftDevice HEX 파일 내부에 저장되며 SD_FWID_GET매크로를 통해 검색된다.
버전 유효성 검사를 건너뛰지 않는 한 dfu_handle_prevalidate()함수는 다음 허용 규칙을 적용하여 이미지가 허용되는지 여부를 결정한다.
Hardware version : 초기화 패킷에 지정된 하드웨어 버전이 장치의 하드웨어와 일치하면 이미지가 승인된다.
SoftDevice Firmware ID : 지정된 Firmware ID 중 하나가 현재의 SoftDevice의 ID와 일치하면 이미지가 승인된다. sd_req목록의 Firmware ID 0x00은 "업데이트가 SoftDevice에 의존하지 않음"을 의미한다. 이것의 의미는 Updates without a SoftDevice를 참조한다.
Firmware version : 이미지에 부트로더가 포함된 경우 새 펌웨어 버전이 부트로더의 기존 버전보다 크면 이미지가 허용된다. 이미지에 어플리케이션이 포함된 경우 새 펌웨어 버전이 기존 펌웨어 버전보다 크거나 같으면 이미지가 허용된다. 이미지에 SoftDevice가 포함되어 있고 SoftDevice가 이미 있는 경우에는 fw_version을 기존 어플리케이션 버전과 비교하여 업데이트가 덮어쓸 수 있는지 여부를 확인한다.
3.2.1 Updates without a SoftDevice
부트로더 자체에 SoftDevice가 필요하지 않은 경우 SoftDevice 없이 업데이트를 처리할 수도 있다. 이러한 업데이트는 아래 설명된대로 sd_req값이 0x00으로 인식된다.
업데이트에 어플리케이션이 포함된 경우 : 해당 어플리케이션은 일반적으로 SoftDevice가 배치되는 MBR 뒤에 배치된다. SoftDevice가 있는 경우 sd_req목록에는 덮어 쓸 수 있도록 Firmware ID도 포함되어야 한다.
업데이트에 SoftDevice만 포함된 경우 : SoftDevice가 이미 없는 경우에만 적용될 수 있다. 업데이트에는 덮어쓸 수 있도록 현재 어플리케이션 버전에 대해 확인해야 하는 fw_version도 포함되어야 한다.
업데이트에 부트로더가 포함된 경우 : 현재 SoftDevice가 무시된다. SoftDevice는 현재 부트로더에 필요하지 않고 업데이트 뱅킹을 위한 공간이 필요한 경우에만 삭제된다.
빈 sd_req목록은 0x00을 포함하는 sd_req목록과 같다.
3.3 Signature Verification
업데이트가 서명되고 서명 확인이 검증되면 부트로더는 업데이트가 비트 단위로 올바른지 개인키 소유자가
내용을 승인했는지 확인할 수 있다. 즉, 개인키가 비밀로 유지되는 한 장치에 적용되는 업데이트를 완전히
제어할 수 있다. 부트로더에는 공개키 사본만 포함되어 있다. 이 키는 서명을 확인하는데 사용할 수 있지만
새 서명을 만드려면 개인키가 필요하다. 기본적으로 Secure Bootloader는 모든 업데이트에 유효한 서명을