private def bytesFromBase64()

in pan-domain-auth-verification/src/main/scala/com/gu/pandomainauth/service/CryptoConf.scala [77:89]


    private def bytesFromBase64(base64Encoded: String): SettingsResult[Array[Byte]] =
      Either.cond(isBase64(base64Encoded), decodeBase64(base64Encoded), InvalidBase64)

    private def keyFor[A](
      base64EncodedKey: String,
      keySpecFor: Array[Byte] => KeySpec,
      keyForSpec: KeyFactory => KeySpec => A
    ): SettingsResult[A] = for {
      bytes <- bytesFromBase64(base64EncodedKey)
      key <- Try(keyForSpec(keyFactory)(keySpecFor(bytes))).map(Right(_)).recover {
        case _: InvalidKeySpecException => Left(PublicKeyFormatFailure)
      }.get
    } yield key