Skip to content

Commit

Permalink
Merge pull request #428 from LedgerHQ/abo_format_API_LEVEL_5
Browse files Browse the repository at this point in the history
Format API_LEVEL_5
  • Loading branch information
abonnaudet-ledger authored Sep 18, 2023
2 parents 7b829b7 + 53a4cf6 commit 9a8df05
Show file tree
Hide file tree
Showing 278 changed files with 39,203 additions and 35,408 deletions.
37 changes: 37 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
Language: Cpp
BasedOnStyle: Chromium
IndentWidth: 4
ColumnLimit: 100
UseTab: Never
IndentCaseLabels: true
# do not allow ifs or loops without braces
InsertBraces: true
PointerAlignment: Right

BreakBeforeBraces: Stroustrup
BreakBeforeBinaryOperators: true

BinPackArguments: false
BinPackParameters: false

AlignConsecutiveMacros:
Enabled: true
AcrossComments: true
AcrossEmptyLines: false

AlignConsecutiveDeclarations:
Enabled: true
AcrossComments: false
AcrossEmptyLines: false

AlignConsecutiveAssignments:
Enabled: true
AcrossComments: false
AcrossEmptyLines: false

AlignArrayOfStructures: Left
SortIncludes: Never
SpaceAfterCStyleCast: True
AllowShortEnumsOnASingleLine: false
...
5 changes: 5 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Run this command to always ignore formatting commits in `git blame`
# git config blame.ignoreRevsFile .git-blame-ignore-revs

# Formatting commit
59a948f2838ec0ced714c81c8e268d6016b84057
6 changes: 6 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,9 @@ repos:
rev: v2.2.5
hooks:
- id: codespell

- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v16.0.6
hooks:
- id: clang-format
types_or: [c]
76 changes: 40 additions & 36 deletions include/appflags.h
Original file line number Diff line number Diff line change
@@ -1,75 +1,79 @@
#pragma once

/**
* Base flag added to loaded application, to allow them to call all syscalls by default (the one requiring no extra permission)
* Base flag added to loaded application, to allow them to call all syscalls by default (the one
* requiring no extra permission)
*/
#define APPLICATION_FLAG_MAIN 0x1
#define APPLICATION_FLAG_MAIN 0x1

/**
* Flag which combined with ::APPLICATION_FLAG_ISSUER.
* The application is given full nvram access after the global seed has been destroyed.
*/
#define APPLICATION_FLAG_BOLOS_UPGRADE 0x2
#define APPLICATION_FLAG_BOLOS_UPGRADE 0x2

// this flag is set when a valid signature of the loaded application is presented at the end of the bolos application load.
#define APPLICATION_FLAG_SIGNED 0x4
// this flag is set when a valid signature of the loaded application is presented at the end of the
// bolos application load.
#define APPLICATION_FLAG_SIGNED 0x4

// must be set on one application in the registry which is used
#define APPLICATION_FLAG_BOLOS_UX 0x8
#define APPLICATION_FLAG_BOLOS_UX 0x8

// application is allowed to use the raw master seed, if not set, at least a level of derivation is
// required.
#define APPLICATION_FLAG_DERIVE_MASTER 0x10

// application is allowed to use the raw master seed, if not set, at least a level of derivation is required.
#define APPLICATION_FLAG_DERIVE_MASTER 0x10
#define APPLICATION_FLAG_SHARED_NVRAM 0x20
#define APPLICATION_FLAG_GLOBAL_PIN 0x40

#define APPLICATION_FLAG_SHARED_NVRAM 0x20
#define APPLICATION_FLAG_GLOBAL_PIN 0x40

// This flag means the application is meant to be debugged and allows for dump or core ARM register in
// case of a fault detection
#define APPLICATION_FLAG_DEBUG 0x80
// This flag means the application is meant to be debugged and allows for dump or core ARM register
// in case of a fault detection
#define APPLICATION_FLAG_DEBUG 0x80

/**
* Mark this application as defaultly booting along with the bootloader (no application menu displayed)
* Only one application can have this at a time. It is managed by the bootloader interface.
* Mark this application as defaultly booting along with the bootloader (no application menu
* displayed) Only one application can have this at a time. It is managed by the bootloader
* interface.
*/
#define APPLICATION_FLAG_AUTOBOOT 0x100
#define APPLICATION_FLAG_AUTOBOOT 0x100

/**
* Application is allowed to change the settings
*/
#define APPLICATION_FLAG_BOLOS_SETTINGS 0x200
#define APPLICATION_FLAG_BOLOS_SETTINGS 0x200

#define APPLICATION_FLAG_CUSTOM_CA 0x400
#define APPLICATION_FLAG_CUSTOM_CA 0x400

/**
* The application main can be called in two ways:
* - with first arg (stored in r0) set to 0: The application is called from the dashboard
* - with first arg (stored in r0) set to != 0 (ram address likely): The application is used as a library from another app.
* - with first arg (stored in r0) set to != 0 (ram address likely): The application is used as a
* library from another app.
*/
#define APPLICATION_FLAG_LIBRARY 0x800
#define APPLICATION_FLAG_LIBRARY 0x800

/**
* The application won't be shown on the dashboard (somewhat reasonable for pure library)
*/
#define APPLICATION_FLAG_NO_RUN 0x1000
#define APPLICATION_FLAG_NO_RUN 0x1000

#if defined(HAVE_LANGUAGE_PACK)
/**
* This application is in fact a Language pack!
*/
#define APPLICATION_FLAG_LANGUAGE_PACK 0x2000
#endif //defined(HAVE_LANGUAGE_PACK)
#define APPLICATION_FLAG_LANGUAGE_PACK 0x2000
#endif // defined(HAVE_LANGUAGE_PACK)

/**
* Application has been loaded using a secure channel opened using the bootloader's issuer
* public key. This application is ledger legit.
*/
#define APPLICATION_FLAG_ISSUER 0x4000
#define APPLICATION_FLAG_ISSUER 0x4000

/**
* Application is enabled (when not being updated or removed)
*/
#define APPLICATION_FLAG_ENABLED 0x8000
#define APPLICATION_FLAG_ENABLED 0x8000

/**
* Application is actually a Stax background image
Expand All @@ -80,10 +84,10 @@
* Custom AEM flag to test AEM capabilities without standard UX permissions
*/
#if defined(BOLOS_DEBUG_UX_PERMISSION_FLAG)
#define APPLICATION_FLAG_AEM_PIN APPLICATION_FLAG_GLOBAL_PIN
#define APPLICATION_FLAG_AEM_PIN APPLICATION_FLAG_GLOBAL_PIN
#else
#define APPLICATION_FLAG_AEM_PIN APPLICATION_FLAG_BOLOS_UX
#endif // BOLOS_DEBUG_UX_PERMISSION_FLAG
#define APPLICATION_FLAG_AEM_PIN APPLICATION_FLAG_BOLOS_UX
#endif // BOLOS_DEBUG_UX_PERMISSION_FLAG

#ifdef HAVE_BACKGROUND_IMG
#define APPLICATION_FLAGS_MASK (0x00000000FFFFFFFFULL)
Expand All @@ -93,12 +97,12 @@
#define APPLICATION_FLAGS_MASK (0x0000FFFF)
#define APPLICATION_FLAG_NEG_MASK (0xFFFF0000)
#define APPLICATION_FLAGS_SHIFT (16)
#endif //HAVE_BACKGROUND_IMG
#endif // HAVE_BACKGROUND_IMG

#define GET_COMPLEMENTED_APPLICATION_FLAGS(flags) \
(((~((flags)&APPLICATION_FLAGS_MASK) << APPLICATION_FLAGS_SHIFT)) | \
((flags)&APPLICATION_FLAGS_MASK))
#define GET_COMPLEMENTED_APPLICATION_FLAGS(flags) \
(((~((flags) &APPLICATION_FLAGS_MASK) << APPLICATION_FLAGS_SHIFT)) \
| ((flags) &APPLICATION_FLAGS_MASK))

#define IS_APPLICATION_FLAGS_SECURE(complemented_flags) \
(((~(complemented_flags) << APPLICATION_FLAGS_SHIFT) & APPLICATION_FLAG_NEG_MASK) == \
((complemented_flags) & APPLICATION_FLAG_NEG_MASK))
#define IS_APPLICATION_FLAGS_SECURE(complemented_flags) \
(((~(complemented_flags) << APPLICATION_FLAGS_SHIFT) & APPLICATION_FLAG_NEG_MASK) \
== ((complemented_flags) &APPLICATION_FLAG_NEG_MASK))
14 changes: 7 additions & 7 deletions include/arch.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@
#include "os_hal.h"

#if defined(ST31)
#include <core_sc000.h>
#include <core_sc000.h>
#endif

#if defined(ST33J2M0)
#include <core_sc300.h>
#include <core_sc300.h>
#endif

#if defined(ST33K1M5)
#include <core_cm35p.h>
#include <core_cm35p.h>
#endif

#if defined(X86)
#define NATIVE_PRINT
#include <setjmp.h>
#include <stdio.h>
#define NATIVE_PRINT
#include <setjmp.h>
#include <stdio.h>
#endif

#endif // HAVE_BOLOS
#endif // HAVE_BOLOS

#define WIDE
38 changes: 19 additions & 19 deletions include/checks.h
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@

/*******************************************************************************
* Ledger Nano S - Secure firmware
* (c) 2022 Ledger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/
* Ledger Nano S - Secure firmware
* (c) 2022 Ledger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/

#if !defined(CHECKS_H)
#define CHECKS_H

#if !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN)

#define CHECK_NOT_AUDITED_TLV_TAG 0x9F
#define CHECK_NOT_AUDITED_TLV_VAL 0x01
#define CHECK_NOT_AUDITED_MAX_LEN 0x40
#define CHECK_NOT_AUDITED_TLV_TAG 0x9F
#define CHECK_NOT_AUDITED_TLV_VAL 0x01
#define CHECK_NOT_AUDITED_MAX_LEN 0x40

void check_audited_app(void);
#endif // !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN)
#endif // !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN)

#endif
30 changes: 15 additions & 15 deletions include/cx.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@

/*******************************************************************************
* Ledger Nano S - Secure firmware
* (c) 2022 Ledger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/
* Ledger Nano S - Secure firmware
* (c) 2022 Ledger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/

#pragma once

Expand Down
Loading

0 comments on commit 9a8df05

Please sign in to comment.