Author: admin

Uncategorized

git screwing with my CR LF

Your tools aren’t “screwing” with your file on a whim—they’re all following their configured rules for handling line endings. The core issue is that your Git settings and your editors’ settings are misaligned. Here’s the blunt truth:

  1. Git’s Role (core.autocrlf & .gitattributes):
    • Git stores files in the repo with LF by default. On Windows, if you’ve set core.autocrlf to true, Git should convert LF to CRLF on checkout and the reverse on commit.
    • If your core.autocrlf is set to false or input, Git won’t do any conversion on checkout, so you might end up with LF files on disk even on Windows.
    • A missing or misconfigured .gitattributes file can also lead to inconsistent behavior across different systems. Without it, Git might not enforce a consistent line ending policy.
  2. Editor Behavior:
    • VS Code: It can automatically set the end-of-line sequence based on its files.eol setting. If that’s set to \n (LF), then when you save the file, VS Code will force LF—even if the file originally came in as CRLF.
    • Notepad++: It shows what’s on disk. If it’s reading CRLF, that suggests one tool somewhere is converting your LF to CRLF on disk (or vice versa). Sometimes Notepad++ might be reporting what it “expects” based on its default Windows behavior.
    • GitKraken & Visual Studio: They generally rely on Git’s configuration. So if Git is normalizing to LF internally, these tools might show LF even though the file on disk might be CRLF when inspected in another editor.
  3. What’s Happening in Your Case:
    • You see the file as CRLF in Notepad++ but as LF in your local Git checkout (and when viewed in VS Code). That’s because somewhere in your workflow Git is normalizing the file to LF (likely because the repo has LF and your Git config isn’t set to convert back to CRLF on checkout).
    • When you save the file in VS Code, it’s saved with LF (because of its settings), so Git sees a complete line-ending change compared to the version stored with CRLF on origin or on other computers. This discrepancy makes Git mark the entire file as changed.
  4. How to Fix It:
    • Align Git Settings: Check your Git config with git config --get core.autocrlf. On Windows, if you want CRLF in your working directory, set it to true. If you prefer LF everywhere, set it to input (but then you might see these differences on other Windows machines expecting CRLF).
    • Use a .gitattributes File: Create a .gitattributes file in your repo root and add rules like:pgsqlCopy*.json text eol=crlf orarduinoCopy* text=auto This forces Git to treat files the same way on all systems.
    • Synchronize Editor Settings: Ensure VS Code’s files.eol (and similar settings in other editors) matches what you want. For CRLF on Windows, set it to \r\n.

Bottom Line:
It’s not GitKraken acting on its own; it’s your configuration mismatches. Git is doing exactly what it’s been told—storing files with LF in the repo and converting on checkout based on your settings. Your editors then might override or display differently based on their own configurations. Get your Git settings and your editors in sync (using a proper .gitattributes file is often the best solution), and the headache will be over.

Fuck line endings—sort out your configs, and you’ll be golden.

thx

phase2:

Alright, listen up. If you want every damn file—every single text file—in your working copy to be CRLF, you need to force Git to treat all files as text and then tell it to check them out with CRLF line endings. But let me be clear: Git is designed to store text files normalized (LF) in the repo and only convert on checkout. There's no magic switch to store them as CRLF inside the Git objects, but your working directory can have CRLF everywhere.

Here's how to force it:

  1. Create or Edit Your .gitattributes File:
    In the root of your repo, create (or modify) a file called .gitattributes with this single line:arduinoCopy* text=auto eol=crlf This line tells Git to treat every file it can as text and, on checkout, convert line endings to CRLF.Warning: This only applies to files Git considers text. For files that Git heuristically thinks are binary, conversion won’t happen. Forcing binary files to convert is a disaster waiting to happen.
  2. Force Git to Reapply Conversion:
    If your files were already checked out before setting up your .gitattributes, Git isn’t going to magically convert them on its own. You need to force a re-checkout:bashCopygit rm --cached -r . git reset --hard This removes everything from the index and then checks them out again—now obeying your .gitattributes rules (and your core.autocrlf=true setting).
  3. Double-Check Your Editor Settings:
    • VS Code: Ensure your settings are not undoing your hard work. In your settings.json, set:jsonCopy"files.eol": "\r\n"
    • Notepad++/VS: Verify they’re not overriding the file’s CRLF status on save.
  4. Understand the Limitations:
    • Internal Repo Storage: Git will always store text files in normalized LF in its internal storage. You’ll see CRLF only in your working directory.
    • Binary Files: If there are files that are not meant to be text (like images or compiled binaries), leave them alone. Forcing a conversion on them could corrupt them.

Bottom line:
Create a .gitattributes file with * text=auto eol=crlf, force a full re-checkout, and make sure your editors are set to use CRLF. That’s the blunt truth—get your configs in sync and you’ll see CRLF everywhere you want.

smartcard world

What we know about ISD AID

In the context of JavaCard technology, ISD AID refers to the Issuer Security Domain Application Identifier.

Key Concepts:

  1. JavaCard:
    • JavaCard is a technology that allows Java-based applications (applets) to run on smart cards and similar secure devices. It provides a secure environment where applets can be executed securely, and it typically includes functionalities like cryptographic operations, secure storage, and communication protocols.
  2. AID (Application Identifier):
    • An AID is a unique identifier used to distinguish different applications (or applets) on a smart card. It's a sequence of bytes that uniquely identifies an applet on the JavaCard platform.
  3. ISD (Issuer Security Domain):
    • The Issuer Security Domain is a special applet on a JavaCard that acts as the security anchor for the card issuer. It is responsible for managing keys, loading and managing applets, and securing communications. The ISD essentially represents the card issuer's control over the card.
  4. ISD AID:
    • The ISD AID is the Application Identifier specifically assigned to the Issuer Security Domain. This AID uniquely identifies the ISD on the card and is used to route commands and manage applets securely within the JavaCard environment.

Functions of the ISD:

  • App Management: The ISD manages the lifecycle of applets on the JavaCard, including their installation, deletion, and personalization.
  • Security Management: The ISD handles the security operations of the card, such as cryptographic key management, secure messaging, and access control.
  • Communication Gateway: The ISD facilitates secure communication between the card issuer and the JavaCard, ensuring that commands are authenticated and authorized.

Importance of ISD AID:

The ISD AID is crucial because it's how the card issuer and external systems can interact with and manage the JavaCard's security domain. When deploying or managing applets, the ISD AID is used to target the ISD for specific commands, ensuring that only authorized operations are performed.

In summary, the ISD AID in JavaCard technology is the unique identifier of the Issuer Security Domain, which is central to managing the security and application lifecycle on the card.

smartcard worldUncategorized

difference between Infineon SLE 36 and SLE 78

The Infineon SLE 36 and SLE 78 series are both families of security microcontrollers designed for secure applications such as smart cards, secure identification, and access control systems. However, they differ in several key aspects:

Security Features

  • SLE 78: This series is known for its advanced security features like Integrity Guard, which provides full encryption of data paths and offers various countermeasures against physical and logical attacks.
  • SLE 36: Generally has basic security features and may not offer the advanced countermeasures against attacks that the SLE 78 series provides.

Cryptographic Support

  • SLE 78: Supports a wide range of cryptographic algorithms including RSA, ECC, DES, and AES.
  • SLE 36: Typically supports basic cryptographic algorithms like DES and 3DES but lacks the extensive cryptographic capabilities of the SLE 78 series.

Security Certification

  • SLE 78: Often certified to higher Common Criteria levels, such as CC EAL 6+, making it suitable for high-security applications.
  • SLE 36: May have some level of security certification but usually not as high as the SLE 78 series.

Processing Speed and Memory

  • SLE 78: Generally offers higher processing speeds and more memory, suitable for applications that require fast data processing and more storage.
  • SLE 36: Typically has less memory and may operate at lower speeds.

Use Cases

  • SLE 78: Because of its advanced features, it's used in high-security applications like electronic passports, secure elements in mobile devices, and secure identification cards.
  • SLE 36: More suited for lower-security applications where cost-effectiveness is a priority but some level of security is still required.

Given your background in security research, understanding these differences could be vital, especially if you're evaluating the security of systems that utilize these microcontrollers. You may find it interesting to examine the trade-offs between security features and performance or cost in these two series.

codedev pot

hot operators

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/

its the power of operators, so always learn try and play

OperatorsCategory or name
x.yf(x)a[i]x?.yx?[y]x++x--x!newtypeofcheckeduncheckeddefaultnameofdelegatesizeofstackallocx->yPrimary
+x-x!x~x++x--x^x(T)xawait&x*xtrue and falseUnary
x..yRange
switchwithswitch and with expressions
x * yx / yx % yMultiplicative
x + yx – yAdditive
x << yx >> yx >>> yShift
x < yx > yx <= yx >= yisasRelational and type-testing
x == yx != yEquality
x & yBoolean logical AND or bitwise logical AND
x ^ yBoolean logical XOR or bitwise logical XOR
x | yBoolean logical OR or bitwise logical OR
x && yConditional AND
x || yConditional OR
x ?? yNull-coalescing operator
c ? t : fConditional operator
x = yx += yx -= yx *= yx /= yx %= yx &= yx |= yx ^= yx <<= yx >>= yx >>>= yx ??= y=>Assignment and lambda declaration
operators
smartcard world

APDU Lc and Le encoding

Standard ISO_IEC_7816-4-2020

https://www.iso.org/obp/ui/#iso:std:iso-iec:7816:-4:ed-4:v1:en

What we want:

  • we want to test 2 byte Le fields, that means the Lc field should give us already the info that the c r apdu pair is extended. means Lc = 00 and 2 bytes of lenght info.
  • then data, means command data,
  • then 2 bytes of Le encoded

eg. extended length apdu

00CB3FFF
04
5C02DF40
09

eg. normal length apdu

00CB3FFF
000004
5C02DF40
0009

https://stackoverflow.com/questions/40663460/use-apdu-commands-to-get-some-information-for-a-card

smartcard world

smartcard steps

creating objects AMR cmd

  • DataAccessRightTemplate
  • creating All enum values for reducing lines of code
  • object with several keys
  • diff data
  • selection of different levels gd and ad
  • exception catcher for not implemented parts
  • authentication squence more or less unclear
  • changing access rights for according hex tag hex hex

steps contd

  • remove try catch blocks
  • remove pragma directives
smartcard world

smart card encryption FAQs

see a task, pick it, and start by step 0:

IFD

ICC Reader Device (IFD)

http://pcscworkgroup.com/Download/Specifications/pcsc4_v2.01.01.pdf

general authenticate

The GENERAL AUTHENTICATE command is used to establish a Secure Channel session, according to Secure Channel Protocol '03' described in GPCS Amendment D [Amd D].

symmetric key

ISO/IEC 11770-2:2018
https://www.iso.org/standard/73207.html

apdu

https://en.wikipedia.org/wiki/Smart_card_application_protocol_data_unit

RND

RND.IFD and RND.ICC are each 16 Bytes

A.IFD

A.IFD = RND.IFD || RND.ICC etc

Uncategorized

NUnit from scratch

https://github.com/nunit/nunit-vs-templates

same here as below, dont want to install all sorts of things extensions etc to scour through exs

https://github.com/nunit/dotnet-new-nunit
skip this, trust me, it is trash ;) and not compatible to open.

https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit

folllow up and self contained repo

https://github.com/flowxcode/nunit-template

according MS docs to test test the tests

https://nunit.org/nunitv2/docs/2.6.4/quickStart.html

started to debug, decided to analyse templates and MS description. building scratch project to debug and build up proper architecture

/unit-testing-using-nunit
    unit-testing-using-nunit.sln
    /PrimeService
        Source Files
        PrimeService.csproj
    /PrimeService.Tests
        Test Source Files
        PrimeService.Tests.csproj

https://docs.educationsmediagroup.com/unit-testing-csharp/nunit/lifecycle-of-a-test-fixture

Lifecycle of a test fixture

As mentioned before, NUnit gives the developer the possibility to extract all initialization and tear-down code that multiple tests might be sharing into ad-hoc methods.

Developers can take advantage of the following facilities to streamline their fixtures

  • A method decorated with a SetUp attribute will be executed before each test
  • A method decorated with a TearDown attribute will be executed after each test
  • A method decorated with a OneTimeSetUp attribute will be executed before any test is executed
  • A method decorated with a OneTimeTearDown attribute will be executed after all tests have been executed
  • The class constructor will be executed before any method and can be used to prepare fields that shouldn't be modified while executing the tests.

Additionally, developers can set up fixtures contained in a namespace and all its children by creating a class decorated with the attribute SetUpFixture. This class will be able to contain methods decorated with OneTimeSetUp and OneTimeTearDown attributes.

NUnit supports multiple SetUpFixture classes: in this case, setup methods will be executed starting from the most external namespace in and the teardown from the most internal namespace out.

nunit

References:

https://automationintesting.com/csharp/nunit/lessons/whataretestfixtures.html

Uncategorized

secure authentication

read the counter of auth attempts:

https://globalplatform.org/specs-library/card-specification-v2-3-1/

The INITIALIZE UPDATE command is used, during explicit initiation of a Secure Channel, to transmit card and session data between the card and the host. This command initiates the initiation of a Secure Channel Session.

read the counter of apdu.

findings: counter ist increasing in 2 apdu responses

https://www.rapidtables.com/convert/number/hex-to-decimal.html

https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

Uncategorized

NUnit setup tmr for test setup

things tbd tmr , details tobe provided and worked out

  • SetUpAttribute is now used exclusively for per-test setup.
  • TearDownAttribute is now used exclusively for per-test teardown.
  • OneTimeSetUpAttribute is used for one-time setup per test-run. If you run n tests, this event will only occur once.
  • OneTimeTearDownAttribute is used for one-time teardown per test-run. If you run n tests, this event will only occur once
  • SetUpFixtureAttribute continues to be used as at before, but with changed method attributes.
Uncategorized

FactoryPattern adaptions real world

adapt a pattern and build a reald world ex into it

https://github.com/flowxcode/dotnet-design-patterns-samples#factory-method

https://github.com/flowxcode/dotnet-design-patterns-samples/tree/master/Generating/FactoryMethod

  1. build pattern
  2. introduce config
  3. locate point from where to read config in current project
  4. read config early and compare in diagrams

the factory pattern:

https://dotnetcoretutorials.com/2019/10/15/the-factory-pattern-in-net-core/

TestFixtureContextBase.cs
DeviceMapper -> gets a new DeviceFactory creates Devices , Devices inherit from Device class.

Uncategorized

.dll Type Library Importer Tlbimp.exe and Tlbexp.exe

wanted to add AwUsbApi.dll lib but got

trying to validate dlls

https://stackoverflow.com/questions/3456758/a-reference-to-the-dll-could-not-be-added

using VS Developer Command Prompt

https://docs.microsoft.com/en-us/visualstudio/ide/reference/command-prompt-powershell?view=vs-2022

C:\Program Files\Digi\AnywhereUSB\Advanced>tlbimp AwUsbApi.dll
Microsoft (R) .NET Framework Type Library to Assembly Converter 4.8.3928.0
Copyright (C) Microsoft Corporation.  All rights reserved.

TlbImp : error TI1002 : The input file 'C:\Program Files\Digi\AnywhereUSB\Advanced\AwUsbApi.dll' is not a valid type library.

C:\Program Files\Digi\AnywhereUSB\Advanced>Tlbexp AwUsbApi.dll
Microsoft (R) .NET Framework Assembly to Type Library Converter 4.8.3928.0
Copyright (C) Microsoft Corporation.  All rights reserved.

TlbExp : error TX0000 : Could not load file or assembly 'file:///C:\Program Files\Digi\AnywhereUSB\Advanced\AwUsbApi.dll' or one of its dependencies. The module was expected to contain an assembly manifest.

ist not the first problem. already encountered on digi forum

https://www.digi.com/support/forum/27954/problems-with-awusbapi-dll

Uncategorized

string empty or “”

one pretty fundamental answer:

c stackoverflow:

There really is no difference from a performance and code generated standpoint. In performance testing, they went back and forth between which one was faster vs the other, and only by milliseconds.

In looking at the behind the scenes code, you really don't see any difference either. The only difference is in the IL, which string.Empty use the opcode ldsfld and "" uses the opcode ldstr, but that is only because string.Empty is static, and both instructions do the same thing. If you look at the assembly that is produced, it is exactly the same.

C# Code

private void Test1()
{
    string test1 = string.Empty;    
    string test11 = test1;
}

private void Test2()
{
    string test2 = "";    
    string test22 = test2;
}

IL Code

.method private hidebysig instance void 
          Test1() cil managed
{
  // Code size       10 (0xa)
  .maxstack  1
  .locals init ([0] string test1,
                [1] string test11)
  IL_0000:  nop
  IL_0001:  ldsfld     string [mscorlib]System.String::Empty
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  stloc.1
  IL_0009:  ret
} // end of method Form1::Test1
.method private hidebysig instance void 
        Test2() cil managed
{
  // Code size       10 (0xa)
  .maxstack  1
  .locals init ([0] string test2,
                [1] string test22)
  IL_0000:  nop
  IL_0001:  ldstr      ""
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  stloc.1
  IL_0009:  ret
} // end of method Form1::Test2

Assembly code

        string test1 = string.Empty;
0000003a  mov         eax,dword ptr ds:[022A102Ch] 
0000003f  mov         dword ptr [ebp-40h],eax 

        string test11 = test1;
00000042  mov         eax,dword ptr [ebp-40h] 
00000045  mov         dword ptr [ebp-44h],eax 
        string test2 = "";
0000003a  mov         eax,dword ptr ds:[022A202Ch] 
00000040  mov         dword ptr [ebp-40h],eax 

        string test22 = test2;
00000043  mov         eax,dword ptr [ebp-40h] 
00000046  mov         dword ptr [ebp-44h],eax 

https://stackoverflow.com/a/1588678/1650038

Uncategorized

COMException

System.Runtime.InteropServices.COMException (0x800703FA): Retrieving the COM class factory for component with CLSID {82EAAE85-00A5-4FE1-8BA7-8DBBACCC6BEA} failed due to the following error: 800703fa Illegal operation attempted on a registry key that has been marked for deletion. (0x800703FA).
at System.RuntimeTypeHandle.AllocateComObject(Void* pClassFactory)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
at System.Activator.CreateInstance(Type type)
at ...

Solution

moved instance into ctor

public KeoObj()
{
  _proxiLab = (IProxiLAB)Activator.CreateInstance(Type.GetTypeFromProgID("KEOLABS.ProxiLAB"));
}

always a charm, clean code:

https://methodpoet.com/clean-code/

possible relevance:

https://stackoverflow.com/questions/21941216/using-application-pool-identity-results-in-exceptions-and-event-logs

link base:

http://adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx

Uncategorized

the AMR command

section 4.5.1, APPLICATION MANAGEMENT REQUEST (AMR) Command

https://globalplatform.org/wp-content/uploads/2014/03/GPC_ISO_Framework_v1.0.pdf

ideas tear and check and repeat.

run multiple parameterized tests with NUnit as in:

https://www.lambdatest.com/blog/nunit-parameterized-test-examples/

        [Test]
        [TestCase("chrome", "72.0", "Windows 10")]
        [TestCase("internet explorer", "11.0", "Windows 10")]
        [TestCase("Safari", "11.0", "macOS High Sierra")]
        [TestCase("MicrosoftEdge", "18.0", "Windows 10")]
        [Parallelizable(ParallelScope.All)]
        public void DuckDuckGo_TestCase_Demo(String browser, String version, String os)
        {
            String username = "user-name";
            String accesskey = "access-key";
            String gridURL = "@hub.lambdatest.com/wd/hub";

interfaces

set up ASP.NET API IIS path.

  • Add Website and created folder eg . c:\iis\myapi
  • Change Application Pool to No Managed Code
  • Check Security of Folder, add
    • IIS_IUSRS
    • IIS AppPool\myapi
  • Browse Created Website (should result in HTTP Error 403.14 - Forbidden to list contents cause nothing is in)
  • Create new repo eg github
  • Create new VisualStudio ASP.NET Core API
  • Run and Debug
  • try api endpoints
  • publish to target Folder (best case: separate folder to copy after publish)
  • Copy contents (using TeraCopy eg , resp. diff sync tool)
  • try sampleendpoint
    • take care that Swagger is not configured to show in default so dont despair
  • commit your state if working
  • checking git status is everything is correctly tracked.
  • rename WeatherForecast to dream name best with eg. Notepad++ replace all and change files names in VS later on.
  • test run and debug
  • publish again
  • test it on local IIS.

works till here. so integrate biz logic and repeat small steps cycle step by step.

sources of error investigation:

https://stackify.com/beyond-iis-logs-find-failed-iis-asp-net-requests/

custom err exc handling

API functional, but problems showing swagger site. steps:

  • had to check security of the COM object:

https://stackoverflow.com/questions/27937375/retrieving-the-com-class-factory-for-component-with-clsid-failed-due-to-the-foll

due to Event Viewer error desc

Category: Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer
EventId: 2
SpanId: cb7174b3e1054a29
TraceId: 789b2e9b100bdb4d3fe6ed8e154135f1
ParentId: 0000000000000000
RequestId: 80000006-0007-ff00-b63f-84710c7967bb
RequestPath: /Keo/CreateKeoObj

Connection ID "18374686511347007489", Request ID "80000006-0007-ff00-b63f-84710c7967bb": An unhandled exception was thrown by the application.

Exception: 
System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {82EAAE85-00A5-4FE1-8BA7-8DBBACCC6BEA} failed due to the following error: 80070005 Access is denied. (0x80070005 (E_ACCESSDENIED)).
   at System.RuntimeTypeHandle.AllocateComObject(Void* pClassFactory)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type)
   at KeoCoreApi.KeoObj.CreateKeoInstance() in C:\git\keolabs\KeoCoreApi\KeoObj.cs:line 18
   at lambda_method4(Closure , Object , Object[] )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()

Next steps if resolved: test from different computer, intranet:

  • connect to ip host and port
  • if connection is not working through, check firewall rules.
  • go to advanced settings
  • open up required port by adding Inbout Rule Port
  • test api from network computer
  • add /swagger , respectively the desired endpoint to url

.

Uncategorized

share IIS site o API on local intranet win10 11

https://docs.microsoft.com/en-us/iis/get-started/getting-started-with-iis/create-a-web-site

https://superuser.com/a/263893/237029

open firewall ports for spec site cause only port 80 default website is open std.

https://manage.accuwebhosting.com/knowledgebase/2886/How-to-Configure-IIS-to-Access-Your-Website-using-an-IP-Address.html

always start first with an easy landing page and add api or biz domain functions later on. step by step, eliminate possible error sources..

Uncategorized

semi dependant API calls sequence in REST realm

https://www.quora.com/What-does-state-mean-in-Representational-State-Transfer-REST

The fundamental explanation is:

No client session state on the server.

but this time we introduce builder.Services.AddSingleton<XObj>();

from my observation, I put activated the Init function after tearing cause the PICC time out occured afterwards. Tcl: //ERROR (code 5): PICC response timed out.

Tcl transmissions worked again after init protocols

err = TransmitTearing(txBuffer, out rxBuffer);
initResult = SendActivationHttpRequest().GetAwaiter().GetResult();
Uncategorized

tearing smartcard RF power

tearing power from cards during command execution. Keolabs SPulse option triggered by Command PCD_EOF triggers RF_POWER output, cycles parameter to align tearing moment.

keo.Spulse.LoadSpulseCsvFile(filepath, fdt, (uint)eFrameTypeFormat.FRAME_TYPE_SPULSE, (uint)eEmulatorLoadSpulseMode.STAND_ALONE);
keo.Spulse.EnableSpulse((uint)eEmulatorSpulseEvent.SP_PCD_EOF, (uint)eEmulatorSpulseOutput.SP_RF_POWER);
keo.Reader.ISO14443.SendTclCommand(0x00, 0x00, ref txBuffer[0], (uint)txBuffer.Length, out rxBuffer[0], (uint)rxBuffer.Length, out rxBufferLength);