Coder Social home page Coder Social logo

peculiarventures / fortify-tools Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 7.0 12.89 MB

Fortify enables web applications to use smart cards, local certificate stores and do certificate enrollment. This is the "Tool" application used in the Fortify desktop application.

Home Page: https://tools.fortifyapp.com

License: MIT License

JavaScript 98.36% HTML 1.64%

fortify-tools's People

Contributors

dependabot[bot] avatar donskov avatar gatzec avatar microshine avatar pkix avatar rmhrisk avatar severo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fortify-tools's Issues

Add `extractable` checkbox

WebCrypto API allows to generate keys with extractable parameter. We need UI checkbox for this parameter

image

Add a new FAQs to Fortify web page

What are the privacy implications of using Fortify?
Websites that you visit will be able to discover that you are running Fortify and this might be useful when combined with other information your browser leaks to track you on the web. These websites will not be able to tell what certificates, or smart cards you have unless you authorize them.

Once you authorize a website it will be able to see what certificates you have, with that information they may be able to infer other information about you. For example, if your certificates contain your legal name, they will have access to that information or if you have a national id card with a certificate it may be able to infer your citizenship.

What are the security implications of using Fortify?
We have gone out of our way to try to make Fortify a secure solution. We do believe the solution is well designed and resilient but to err is human so we expect to have security issues to resolve in the future.

With that said, the nature of the feature goals of Fortify requires it to enable websites to interact with the X.509 certificates and their associated cryptographic keys. This means when you grant these websites access to use Fortify they will have an opportunity to use those certificates and keys.

For smart cards Fortify will only let you use certificates that require a pin on use, it also has a unique session to the smart card per website so you will be prompted for use.

For software protected keys however if the software implementation does not require a prompt or pin on use the website will be able to use the associated key without explicit consent.

You should also be mindful if a website uses Fortify, any third-party origins the website incorporates will also be able to use Fortify.

How do I decide what websites I should let use Fortify
You should only let websites use Fortify that you trust, this is because they may be able to track you (like a cookie) and potentially trick you into signing something with a cryptographic key you control.

Add tests

  • Sidebar component
  • Add Table component
  • CertificateName component
  • CertificateSerialNumber component
  • CertificateTypeLabel component
  • CertificateViewerDialog component
  • CertificatesList component
  • CertificatesProvidersList component
  • Date component

Yubikey provider not being recognized?

I'm new to fortify & yubikey tooling; and exploring the capabilities of this application. Here's what I've done so far.

I have tested the yubikey and it appears to work correctly. I have also ran yubikey-piv-tool and able to read certificates; ie yubico-piv-tool -s 9(a|c|d) --action read-certificate and it comes back with the certificates. Yubikey manager appears to functioning correctly.

When I launch the Fortify Tools the only providers that show up are Mac Crypto & NSS Certificate DB. The Yubikey provider does not show up. I have tested this with firefox & chrome and the same results.

image

I looked into the ~/.fortify/config.json. Everything looks vanilla.
In ~/.fortify/card.json; I see

{
"id": "993988460d8f49a2ac519a2935f00533",
"name": "YubiKey",
"file": {
"osx": "/usr/local/lib/libykcs11.dylib",
"linux": "/usr/local/lib/libykcs11.so",
"windows": "%WINDIR/System32/libykcs11-1.dll"
}
},

I've confirmed that the dylib is in the matching location:

$ ls -talr /usr/local/lib/libykcs11.dylib
lrwxr-xr-x 1 root wheel 17 Jul 3 17:15 /usr/local/lib/libykcs11.dylib -> libykcs11.2.dylib

Any idea on next steps to look at to try to figure out why the Yubikey provider is not showing up? I've tried to follow all the documentation/postings I could find to debug; what am I doing wrong?

Add support for Spanish National Identification Card (DNIe)

Reader name: C3PO USB SMART CARD READER 0
ATR: 3B7F960000006A444E4965200101550410039000

{
   "cards": [{
   	"atr": "3B7F960000006A444E4965200101550410039000",
   	"name": "Token name",
   	"driver": "F87A559DAFC9D182D9114BFDF7158E986F34B8C8"
   }],
   "drivers": [{
   	"id": "F87A559DAFC9D182D9114BFDF7158E986F34B8C8",
   	"name": "Driver name",
   	"file": {
   		"windows": "path/to/pkcs11.dll",
   		"osx": "path/to/pkcs11.dylib"
   	}
   }]
}

Smart card ATR parsing 3B7F960000006A444E4965200101550410039000

Impossible to skip PIN entering

The application shows a PIN dialog if the token requires login. On Cancel button click it prompts PIN entering again and again
image
image
image

Add support for '3bdf18008131fe580031b964050e010073b401d300000022' token

Reader name: Gemalto USB Smart Card Reader 0
ATR: 3BDF18008131FE580031B964050E010073B401D300000022

{
   "cards": [{
   	"atr": "3BDF18008131FE580031B964050E010073B401D300000022",
   	"name": "Slovak eID",
        "readOnly": true,
   	"driver": "39798896FC5DD6E2A96989718F694334275E0EAC"
   }],
   "drivers": [{
   	"id": "39798896FC5DD6E2A96989718F694334275E0EAC",
   	"name": "Slovak eID",
   	"file": {
   		"windows": {
                      "x86": "%PROGRAMFILES(X86)/eID klient/pkcs11_x64.dll",
                      "x64": "%PROGRAMFILES(X86)/eID klient/pkcs11_x86.dll"
                },
                "linux": {
                      "x86": "/usr/lib/eidklient/libpkcs11_sig_x64.so",
                      "x64": "/usr/lib/eidklient/libpkcs11_sig_x86.so"
                },
   		"osx": "/Applications/eIDklient.app/Contents/Pkcs11/libPkcs11.dylib"
   	}
   }]
}

Smart card ATR parsing 3BDF18008131FE580031B964050E010073B401D300000022

Update certificate creation logic

PVPKCS11 which uses minidrivers for SmartCards cannot import certificate to token without private key. We need to add cert to token in the next order

  • set private key
  • set public key (optional)
  • set certificate

ERROR: providers.where(...).get is not a function

image

config.json

Without $HOME/.pki/nssdb it works without error

{
  "locale": "en",
  "providers": [
    {
      "lib": "/usr/local/lib/softhsm/libsofthsm2.so",
      "slots": [
        0
      ]
    },
    {
      "lib": "/usr/local/opt/nss/lib/libsoftokn3.dylib",
      "slots": [
        1
      ],
      "libraryParameters": "configdir='/Users/microshine/tmp/nss' certPrefix='' keyPrefix='' secmod='' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription='NSS#0' dbTokenDescription='NSS#1' cryptoTokenDescription='NSS#2' tokenDescription='NSS#3' "
    },
    {
      "lib": "/usr/local/opt/nss/lib/libsoftokn3.dylib",
      "slots": [
        1
      ],
      "libraryParameters": "configdir='$HOME/.pki/nssdb' certPrefix='' keyPrefix='' secmod='' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription='NSS#0' dbTokenDescription='NSS default'"
    }
  ],
  "logging": true
}

Error

error.js:78 ERROR MESSAGE: TypeError: providers.where(...).get is not a function
    at providerSelect$ (index.js:406)
    at tryCatch (runtime.js:65)
    at Generator.invoke [as _invoke] (runtime.js:303)
    at Generator.prototype.(:3000/certificate/anonymous function) [as next] (webpack:///./~/babel-polyfill/~/regenerator-runtime/runtime.js?:117:21)
    at next (proc.js:313)
    at currCb (proc.js:389)
    at runSelectEffect (proc.js:699)
    at runEffect (proc.js:436)
    at next (proc.js:317)
    at proc (proc.js:272)

Yubikey provider listed twice

Sometimes after fortify has been running for some time, it will list two providers in the fortify tools provider drop-down as though there are two Yubikeys plugged in when there is definitely only one.

This will then lead to errors in trying to perform operations with the certificates on the card.

Usually have to restart Fortify to resolve this.

Fortify version 1.3.4 running on macOs Catalina 10.15.4

Screen Shot 2020-08-26 at 3 30 37 pm

Screen Shot 2020-08-26 at 3 34 32 pm

Screen Shot 2020-08-26 at 3 40 21 pm

Create CertificatesList component

  • Add list & list item component
  • Add empty state
  • Add sorting
  • Add search filter
  • Add cells formatting (date, icons, truncate serial number)
  • Add skeleton loader

Update behavior on token events

I'm updating Fortify. New version can return more than 1 info about added or removed tokens. Current version of UI shows only 1 item from the list

After 2 tokens insertion

image

Provider:Token Amount of tokens was changed (+2/-0)

After window refreshing

image

@donskov if you need updated Fortify version let me know about it

Create FetchingStatusOwerlay component

Component added but dialogs still need texts & styling

Styling:

  • connection client update rejected
  • connection support rejected
  • connection detect rejected
  • connection approve rejected
  • connection approve pending
  • unresolved status

Stories:

  • connection client update rejected
  • connection support rejected
  • connection detect rejected
  • connection approve rejected
  • connection approve pending
  • unresolved status

Not clear why buttons are disabled

image

Suggestions:

  • Add tooltip This is a read-only token so this operation is disabled.
  • Show information about the token which says that it's in read-only mode and hide edit buttons

@alexgbv Could you suggest a UI solution?

Cannot read property 'generateKey' of undefined

Hiya Guys,

When I try to initialize fortify web everything works fine on a 127.0.0.1 connection as soon as I deploy it to our internal website i get the error message "Cannot read property 'generateKey' of undefined".

Could it be that this error comes because there is no SSL certificate on it and just uses plain old http?

Add stories to storybook

  • Sidebar component
  • Table component
  • CertificateName component
  • CertificateSerialNumber component
  • CertificateTypeLabel component
  • CertificateViewerDialog component
  • CertificatesList component
  • CertificatesProvidersList component
  • Date component

Add support for Portuguese National Identification Card

Name: Portuguese National Identification Card
ATR(1): 3B 95 95 40 FF D0 00 54 01 32 (more here)
PKCS#11: OpenSC or /usr/lib/libpteidpkcs11.so

More information:

We will need to find someone with one of these cards to test with it before publishing

Create table components

  • Add Table component
  • Add TableBody component
  • Add TableCell component
  • Add TableHead component
  • Add TableHead component
  • Add TableRow component

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.