Skip to content

refactor: Enabled ODCA verification for rpc-go#1329

Draft
ShradhaGupta31 wants to merge 3 commits into
mainfrom
odca-verification
Draft

refactor: Enabled ODCA verification for rpc-go#1329
ShradhaGupta31 wants to merge 3 commits into
mainfrom
odca-verification

Conversation

@ShradhaGupta31
Copy link
Copy Markdown
Contributor

@ShradhaGupta31 ShradhaGupta31 commented May 20, 2026

Addresses - #1083

Currently the check fails as the issue name is not as expected.
error msg - "ROM ODCA Certificate OU does not have a valid prefix"

Detailed logs -

$ sudo ./rpc-odca-v6 activate --local --profile ccm.yaml --key "+G4Ue6wPLuJTwhZyBHNLaEQwu8j8XGba" -v
time="2026-05-26T10:43:20+05:30" level=trace msg="Running AfterApply for AMTBaseCmd"
time="2026-05-26T10:43:20+05:30" level=trace msg="AMTBaseCmd detected control mode: 0"
time="2026-05-26T10:43:20+05:30" level=info msg="TLS is enforced on local ports"
time="2026-05-26T10:43:20+05:30" level=trace msg="AMTBaseCmd setup complete: controlMode=0 localTLSEnforced=true"
time="2026-05-26T10:43:20+05:30" level=trace msg="Entering Run method of ActivateCmd. Context: "
time="2026-05-26T10:43:20+05:30" level=debug msg="WSMAN client not created: AMT password not yet available"
time="2026-05-26T10:43:20+05:30" level=debug msg="Running local profile fullflow from file: ccm.yaml"
time="2026-05-26T10:43:20+05:30" level=info msg="Starting profile orchestration..."
time="2026-05-26T10:43:20+05:30" level=info msg="Executing activation with control mode: ccmactivate"
time="2026-05-26T10:43:20+05:30" level=trace msg="Running AfterApply for AMTBaseCmd"
time="2026-05-26T10:43:20+05:30" level=trace msg="AMTBaseCmd detected control mode: 0"
time="2026-05-26T10:43:20+05:30" level=info msg="TLS is enforced on local ports"
time="2026-05-26T10:43:20+05:30" level=trace msg="AMTBaseCmd setup complete: controlMode=0 localTLSEnforced=true"
time="2026-05-26T10:43:20+05:30" level=trace msg="Entering Run method of ActivateCmd. Context: "
time="2026-05-26T10:43:20+05:30" level=trace msg="GetTLSConfig: controlMode=0 skipAMTCertCheck=false amtCertInfo=false upidInfo=false"
time="2026-05-26T10:43:20+05:30" level=trace msg="ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false"
time="2026-05-26T10:43:20+05:30" level=trace msg="Running ODCA certificate verification for pre-provisioning TLS"
time="2026-05-26T10:43:20+05:30" level=trace msg="VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=error msg="ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]"
time="2026-05-26T10:43:20+05:30" level=info msg="Failed to connect to LMS.  We're probably going to fail now. Sorry!"
time="2026-05-26T10:43:20+05:30" level=error msg="ROM ODCA Certificate OU does not have a valid prefix"
time="2026-05-26T10:43:20+05:30" level=debug msg="Running local activation"
time="2026-05-26T10:43:20+05:30" level=info msg="Starting local AMT activation in CCM mode"
time="2026-05-26T10:43:20+05:30" level=debug msg="AMT is in pre-provisioning state, ready for activation"
time="2026-05-26T10:43:20+05:30" level=debug msg="Configuration validation passed"
time="2026-05-26T10:43:20+05:30" level=debug msg="AMT is enabled and ready"
time="2026-05-26T10:43:20+05:30" level=info msg="Performing CCM activation..."
time="2026-05-26T10:43:20+05:30" level=trace msg="CCM activation starting: controlMode=0 localTLSEnforced=true skipAMTCertCheck=false"
time="2026-05-26T10:43:20+05:30" level=trace msg="CCM activation using local TLS with controlMode=0"
time="2026-05-26T10:43:20+05:30" level=trace msg="GetTLSConfig: controlMode=0 skipAMTCertCheck=false amtCertInfo=false upidInfo=false"
time="2026-05-26T10:43:20+05:30" level=trace msg="ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false"
time="2026-05-26T10:43:20+05:30" level=trace msg="Running ODCA certificate verification for pre-provisioning TLS"
time="2026-05-26T10:43:20+05:30" level=trace msg="VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=info msg="Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]"
time="2026-05-26T10:43:20+05:30" level=error msg="ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]"
time="2026-05-26T10:43:20+05:30" level=info msg="Failed to connect to LMS.  We're probably going to fail now. Sorry!"
time="2026-05-26T10:43:20+05:30" level=error msg="ROM ODCA Certificate OU does not have a valid prefix"
time="2026-05-26T10:43:20+05:30" level=trace msg="<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:a=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" xmlns:w=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\" xmlns=\"http://www.w3.org/2003/05/soap-envelope\"><Header><a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>/wsman</a:To><w:ResourceURI>http://intel.com/wbem/wscim/1/amt-schema/1/AMT_GeneralSettings</w:ResourceURI><a:MessageID>0</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body></Body></Envelope>"
time="2026-05-26T10:43:21+05:30" level=trace msg="ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false"
time="2026-05-26T10:43:21+05:30" level=trace msg="Running ODCA certificate verification for pre-provisioning TLS"
time="2026-05-26T10:43:21+05:30" level=trace msg="VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false"
time="2026-05-26T10:43:21+05:30" level=info msg="Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]"
time="2026-05-26T10:43:21+05:30" level=info msg="Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]"
time="2026-05-26T10:43:21+05:30" level=info msg="Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]"
time="2026-05-26T10:43:21+05:30" level=info msg="Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]"
time="2026-05-26T10:43:21+05:30" level=error msg="ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]"
time="2026-05-26T10:43:21+05:30" level=error msg="Error 129: ActivationFailed - Details: wsman message error, failed to get general settings"
time="2026-05-26T10:43:21+05:30" level=error msg="activation failed: exit status 10: time=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"Running AfterApply for AMTBaseCmd\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"AMTBaseCmd detected control mode: 0\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"TLS is enforced on local ports\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"AMTBaseCmd setup complete: controlMode=0 localTLSEnforced=true\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"Entering Run method of ActivateCmd. Context: \"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"GetTLSConfig: controlMode=0 skipAMTCertCheck=false amtCertInfo=false upidInfo=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"Running ODCA certificate verification for pre-provisioning TLS\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=error msg=\"ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Failed to connect to LMS.  We're probably going to fail now. Sorry!\"\ntime=\"2026-05-26T10:43:20+05:30\" level=error msg=\"ROM ODCA Certificate OU does not have a valid prefix\"\ntime=\"2026-05-26T10:43:20+05:30\" level=debug msg=\"Running local activation\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Starting local AMT activation in CCM mode\"\ntime=\"2026-05-26T10:43:20+05:30\" level=debug msg=\"AMT is in pre-provisioning state, ready for activation\"\ntime=\"2026-05-26T10:43:20+05:30\" level=debug msg=\"Configuration validation passed\"\ntime=\"2026-05-26T10:43:20+05:30\" level=debug msg=\"AMT is enabled and ready\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Performing CCM activation...\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"CCM activation starting: controlMode=0 localTLSEnforced=true skipAMTCertCheck=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"CCM activation using local TLS with controlMode=0\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"GetTLSConfig: controlMode=0 skipAMTCertCheck=false amtCertInfo=false upidInfo=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"Running ODCA certificate verification for pre-provisioning TLS\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=error msg=\"ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]\"\ntime=\"2026-05-26T10:43:20+05:30\" level=info msg=\"Failed to connect to LMS.  We're probably going to fail now. Sorry!\"\ntime=\"2026-05-26T10:43:20+05:30\" level=error msg=\"ROM ODCA Certificate OU does not have a valid prefix\"\ntime=\"2026-05-26T10:43:20+05:30\" level=trace msg=\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:a=\\\"http://schemas.xmlsoap.org/ws/2004/08/addressing\\\" xmlns:w=\\\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\\\" xmlns=\\\"http://www.w3.org/2003/05/soap-envelope\\\"><Header><a:Action>http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>/wsman</a:To><w:ResourceURI>http://intel.com/wbem/wscim/1/amt-schema/1/AMT_GeneralSettings</w:ResourceURI><a:MessageID>0</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body></Body></Envelope>\"\ntime=\"2026-05-26T10:43:21+05:30\" level=trace msg=\"ODCA VerifyPeerCertificate invoked: rawCerts=6 verifiedChains=0 skipAMTCertCheck=false\"\ntime=\"2026-05-26T10:43:21+05:30\" level=trace msg=\"Running ODCA certificate verification for pre-provisioning TLS\"\ntime=\"2026-05-26T10:43:21+05:30\" level=trace msg=\"VerifyCertificates: rawCerts=6 controlMode=0 amtCertInfo=false upidInfo=false\"\ntime=\"2026-05-26T10:43:21+05:30\" level=info msg=\"Cert[0]: Subject=CN=AMT RCFG, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, EKU=[1]\"\ntime=\"2026-05-26T10:43:21+05:30\" level=info msg=\"Cert[1]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 AMT   CA, Issuer=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, EKU=[]\"\ntime=\"2026-05-26T10:43:21+05:30\" level=info msg=\"Cert[2]: Subject=CN=ODCA 2 CSME LNL SOC SVN 01 Kernel CA, Issuer=CN=ODCA 2 CSME LNL SOC ROM CA, EKU=[]\"\ntime=\"2026-05-26T10:43:21+05:30\" level=info msg=\"Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]\"\ntime=\"2026-05-26T10:43:21+05:30\" level=error msg=\"ROM ODCA Certificate OU does not have a valid prefix: [ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA]\"\ntime=\"2026-05-26T10:43:21+05:30\" level=error msg=\"Error 129: ActivationFailed - Details: wsman message error, failed to get general settings\"\n"

ShradhaGupta31 and others added 2 commits May 26, 2026 10:51
- Added all the ODCA check as per Intel ODCA standard documents
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates rpc-go’s local AMT TLS handling to perform stricter ODCA-related certificate verification during activation (especially in pre-provisioning mode), and threads additional context (UPID) into the TLS verifier.

Changes:

  • Extends certs.GetTLSConfig / VerifyCertificates to support ODCA verification with optional UPID binding and CRL checks.
  • Updates activation/deactivation/diagnostics call sites for the new TLS config signature and adds more trace logging for control mode/TLS decisions.
  • Adds persistence of AMT Digest Realm to a per-user JSON store and expands unit tests around TLS config and leaf hash validation.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
internal/commands/diagnostics/wsman.go Updates GetTLSConfig call to new signature.
internal/commands/deactivate.go Updates GetTLSConfig call to new signature for local TLS enforced path.
internal/commands/deactivate_test.go Adjusts test expectations around TLS config behavior (pre-provisioning custom verifier vs ACM default).
internal/commands/base.go Updates GetTLSConfig call to new signature; adds trace logging in AfterApply.
internal/commands/amtinfo.go Updates GetTLSConfig call to new signature for local WSMAN client setup.
internal/commands/activate/local.go Adds UPID retrieval for ACM TLS verification; persists digest realm after reading general settings; adds trace logging.
internal/certs/lmsTls.go Adds UPID-aware verification, CRL fetching/validation, improved leaf hash handling, and adjusts ROM ODCA issuer OU prefix logic.
internal/certs/lmsTls_test.go Adds tests for TLS config behavior, UPID binding, and AMT leaf hash algorithm/format handling.
internal/certs/digestrealm_store.go New per-user JSON store for persisting digest realm keyed by AMT UUID.
Comments suppressed due to low confidence (1)

internal/certs/lmsTls.go:126

  • VerifyCertificates fetches CRLs (HTTP requests) from CRLDistributionPoints before the certificate chain is verified. Because pre-provisioning TLS sets InsecureSkipVerify=true, rawCerts are untrusted at this point; a MITM could supply certificates with attacker-controlled CRL URLs and trigger SSRF during the handshake. Verify the chain first (against the embedded ODCA trust store) before performing any network I/O based on certificate fields (CRL/UPID binding).
		if err := VerifyCRLStatus(parsedCerts); err != nil {
			return err
		}

		if upidInfo != nil {
			if romODCACert == nil {
				return errors.New("failed to identify ROM ODCA certificate for UPID binding verification")
			}

			if err := VerifyUPIDBinding(romODCACert, upidInfo); err != nil {
				return err
			}
		}

		// verify the full chain
		if err := VerifyFullChain(parsedCerts); err != nil {
			return err
		}

Comment thread internal/certs/lmsTls.go
Comment thread internal/certs/lmsTls.go
Comment on lines +168 to +173
if err = crl.CheckSignatureFrom(issuer); err != nil {
lastErr = fmt.Errorf("CRL signature validation failed for %s: %w", cert.Subject.CommonName, err)

continue
}

Comment on lines +754 to +765
func (service *LocalActivationService) persistDigestRealm(digestRealm string) {
uuid, err := service.amtCommand.GetUUID()
if err != nil {
log.WithError(err).Debug("Unable to retrieve AMT UUID for digest realm persistence")

return
}

if err = certs.SaveDigestRealm(uuid, digestRealm); err != nil {
log.WithError(err).Debug("Failed to persist AMT digest realm")
}
}
Comment thread internal/certs/lmsTls.go
Comment on lines +136 to +155
var crlHTTPClient = &http.Client{Timeout: 5 * time.Second}

func VerifyCRLStatus(certificates []*x509.Certificate) error {
for i, cert := range certificates {
if len(cert.CRLDistributionPoints) == 0 {
continue
}

if i+1 >= len(certificates) {
continue
}

issuer := certificates[i+1]
if err := verifyCertAgainstCRL(cert, issuer); err != nil {
return err
}
}

return nil
}
@sudhir-intc
Copy link
Copy Markdown
Contributor

sudhir-intc commented Jun 5, 2026

time="2026-05-26T10:43:21+05:30" level=info msg="Cert[3]: Subject=CN=ODCA 2 CSME LNL SOC ROM CA, Issuer=CN=www.intel.com,OU=ODCA 2 CSME E_LNL SOC 00003649 ZE Issuing CA, EKU=[]"

Reason for failure being the system you tried is an engineering sample ODCA 2 CSME E_LNL

Please try this on a production system or a ignore this check on a engineering sample for testing purpsoe and see how far your progress.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants