Nexo 4 Executable Diagrams
hurufu / nexoid-ed Goto Github PK
View Code? Open in Web Editor NEWNexo 4 Executable Diagrams
License: GNU Affero General Public License v3.0
Nexo 4 Executable Diagrams
License: GNU Affero General Public License v3.0
As described in nexo-FAST v.3.2 section 7.4.2.1
Right now stubs.c
is hand-coded, but this approach is suboptimal, because this file has to be modified each time new procedure is added or removed from the lib. Consider generating this file from nm -u
output. Custom script may be required.
Low priority
Section 7.4.2.4 procedure Match_Prefix_Range
.
Low priority, but specification is maddening.
Add tests and implement Match_Aid
in section 7.4.2.5.
Ada is a strongly typed language that is well suited for describing Nexo specification.
Pros:
goto
which is needed for blazing fast implementationCons:
References:
As described in nexo-FAST v.3.2 section 7.4.2.5
As time goes I begin to see issues that aren't easily solvable in C. They can be roughly divided into 2 categories:
libctl
failed (#2).ttd.transactionAmount > 1
is way more readable for non-programmer than amount_compare(ttd.transactionAmount, create_bcd(1)) > 1
or something similar.ptmalloc3
and memory pools, but still one have to use special macros acpval
and acpptr
to allocate a copy of a variable. This can be simplified with custom allocators in C++It's described in nexo-FAST v.3.2 section 7.3.2.1.3.
In EMV Book 3, section 7.5 it is specified that terminal may ignore formatting errors for some tags like Cardholder Name (5F20). TODO: Check if nexo also supports this.
Section 6.6 procedure Transaction_Dcc_Eligibility
As described in nexo-FAST v.3.2 section 7.4.2.2.6
This is a major refactoring, but may be done quite mechanically. It's not needed now, but it may be useful to have if I'll want to scale-up.
I'm still unsure if I should do it. Here I will gather all pros and cons of such change.
Pros:
.bss
)ttd = NULL
is good enough.Cons:
Also, the general idea is that nexoid-ed
project should be as small as possible. It should be able to run on most restricted embedded systems. Maybe, it would be nice to be able to run using deterministic amount of memory.
Write tests and implement BCD arithmetic. It's needed eg. in procedure Check_Payment_Amounts
or Match_Prefix
Test fails
./ut/nexoid
Running suite(s): tag_retrival
utils
95%: Checks: 23, Failures: 1, Errors: 0
ut/nexoid-ut-x86_64.t:118:F:utils:yymmdd_years_differ:0: Assertion 'yymmdd_cmp(b, a) == -1' failed: yymmdd_cmp(b, a) == 0, -1 == -1
make: *** [Makefile:168: test] Error 1
Function yymmdd_cmp
isn't implemented correctly
As defined int nexo-FAST v.3.2 note 68-20
Refactoring is needed
Service authorisation is out of scope of nexo-FAST, but I think it's a sensible idea to move it to "Data Entry Interaction" and it should set bool securityPermission
variable.
Moreover function scap_Authorise_Service
is deprecated for very long time.
Section 7.4.2.4 procedure Match_Application_Profile_Entry
Also, figure out how to support both versions at the same time. I think I will have to have two branches FASTv3.2 and FASTv3.3.
Starting point should be the output of grep 'NEXO:' NexoFast.sql
. The problem is that they have already release next version of the specification.
Described in nexo-FAST v.3.2 note 58-30
As defined by nexo-FAST v.3.2 note 76-10
As defined in nexo-FAST v.3.2 section 6.4.2.2. This may require removal of additional *_SSN_*
messages that were added in different places.
Nexo-FAST v.3.2 section 6.4.2, non nexo procedure Tc_Remove_Card
Section 7.3 procedure Technology_Selection_Initial_Processing
As described in multiple sections, one of them is nexo-FAST v.3.2 section 6.6.7.2
It's described in nexo-FAST v.3.2 section 6.7 in particular note 99-10.
As defined in nexo-FAST v.3.2 section 7.4.2.6.
Consider redesign of cardholder messages format, so it can be possible to signal that some data should be displayed on one line, like:
PAYMENT: Transaction_Amount Currency
It's not yet decided if this feature is useful.
Right now, analyze applicability of libctl as a proper solution for testing, eg. by writing 1 or 2 tests.
It's described in nexo-FAST v.3.2 section 7.3.2.1.2.
Move some dangling global variables (like g_callTms
) and data that isn't strictly speaking related to the current transaction (ttd
) to a separate structure called tld
(Terminal Lifecycle Data).
This task may involve implementing some changes that are against specification. All such inconsistencies should be documented and reported.
Defined in nexo-FAST v.3.2 section 6.4.2.5
Consider the ability to compile project using strict CompCert compiler from https://compcert.org/
How the project can benefit from it?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.