Java: FIPS mit Bouncy Castle

Disclaimer: Der Post ist 100 Jahre alt, aber wo ich ihn nun gerade in den Entwürfen finde…:

The Legion of the Bouncy Castle bietet mit bc-fips FIPS 140-2-zertifizierte Security Provider an, und zu der umfangreichen Dokumentation gibt es ein paar Good-to-knows:

  • der Provider muss per Security.addProvider(new BouncyCastleFipsProvider()); hinzugefügt werden; per Security.insertProviderAt(new BouncyCastleFipsProvider(), 1) (die Position ist 1-based) gibt es eine RuntimeException: “Could not merge Java truststore with system truststore”
  • im o.g. PDF liest man häufig EC.generateKeyPair(), die Methode gibt es so nicht. Stattdessen gibt es eine generateKeyPair() unter Beispiel 31 im selben PDF:

  • Speziell unter Linux kann das Hochfahren der App sehr lange dauern, der Grund scheint /dev/random zu sein; ein apt install haveged hilft
  • Die Beispiele basieren auf EC(DSA), es geht aber auch RSA. Dazu nehme man (ansonsten analog):

  • PS: Bei einem uninitialized KeyStore hilft vermutlich ein keyStore.load(null, null); (Danke, Nils!)

HTH

iOS: “Failed to load resource: cannot parse response”

Die Meldung

Failed to load resource: cannot parse response

bzw.

Parsen der Antwort nicht möglich

beim Aufruf von Webseiten kann darauf zurückzuführen sein, dass die verwendete iOS Version gzip nicht unterstützt. So gesehen in iOS 11, 12, 14 (ja: in 13 war es schon mal behoben).

Abhilfe für Spring:

Danke, Nils!

IntelliJ: Gradle task mit jedem Reimport ausführen

IntelliJ bietet per Rechtsklick die Möglichkeit, Trigger für Tasks anzuhaken (Screenshot aus der Doku geklaut):

Via build.gradle kann man das über das Plugin “gradle-idea-ext-plugin” automatisieren – im Rootprojekt:

Und im Unterprojekt dann:

Achtung, in DSL spec v. 0.2 heißt es

  • beforeSync – before each Gradle project sync. Will NOT be executed on initial import

ka, aber spätestens danach funktioniert es.

WiX: Escape echo

CustomAction führt ein Kommando aus, und das ist bspw. ein Shell-Befehl. In diesem Fall ein echo in eine Datei:

Will man als Teil von “foobar” jetzt Sonderzeichen mit ausgeben, muss man XML-, WiX-/MSI-, und CMD-Escaping kombinieren – oder man hält sich einfach eine Waffe an den Kopf, das geht schneller:

  • " gibt " aus, & ein & – so weit, so klar. Wenn man davon absieht, dass & eigentlich auch ein CMD-Steuerzeichen ist 🤷🏼‍♂️
  • ^&lt; gibt ein < aus, ^&gt; ein > (man beachte die ^, via)
  • [\[] gibt [ aus, [\]] ein ] (via)

WiX: Install features options

Das Feature-Element hat einige UI-relevante Attribute, die nicht selbsterklärend sind:

  • Absent='disallow' schaltet “The feature will not be installed” aus – wie man für mandatorische Features das Dropdown insgesamt deaktiviert, weiß ich nicht. Ja, man kann das ganze Feature verstecken (Display='hidden'), aber nicht nur das Dropdown 🤷🏻‍♂️
  • AllowAdvertise='no' schaltet “The feature will be installed when needed” aus
  • “The feature and all of its subfeatures will be installed locally” (in früheren Versionen auch “Entire feature will be installed on local hard drive”) kann laut Internet nicht entfernt werden… andere Quellen legen nahe, dass man das über die Subfeatures und Komponenten steuert, aber ich hatte damit keinen Erfolg.

Gradle: Replace in Copy task

Eine Ersetzung:

Mehrere Ersetzungen:

via

Vagrant Invalid value VBOXSVGA

VBoxManage.exe: error: Error in (line 120) — Invalid value ‘VBOXSVGA’ in Display/@controller attribute.

Kann offenbar passieren, wenn eine VM unter Linux erstellt und dann unter Windows gestartet wird. Lösung: Die .ovf-Datei der VM öffnen, und

in

ändern. Beides von hier.