• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hyperledger / identus-cloud-agent / 10793991050

10 Sep 2024 01:56PM UTC coverage: 48.504% (-4.5%) from 52.962%
10793991050

push

web-flow
build: sbt and plugins dependency update (#1337)

Signed-off-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>
Co-authored-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Co-authored-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>

7406 of 15269 relevant lines covered (48.5%)

0.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.0
/shared/crypto/src/main/scala/org/hyperledger/identus/shared/crypto/jwk/JWK.scala
1
package org.hyperledger.identus.shared.crypto.jwk
2

3
import com.nimbusds.jose.jwk.{Curve, OctetKeyPair}
4
import com.nimbusds.jose.util.Base64URL
5
import org.hyperledger.identus.shared.crypto.*
6
import zio.json.*
7
import zio.json.ast.Json
8

9
import scala.language.implicitConversions
10
import scala.util.Try
11

12
opaque type JWK = Json
13

14
object JWK {
15
  def fromString(json: String): Either[String, JWK] = json.fromJson[Json]
1✔
16
  extension (jwk: JWK) {
17
    def toJsonString: String = jwk.toJson
1✔
18
    def toJsonAst: Json = jwk
×
19
  }
20

21
  given Conversion[Ed25519KeyPair, JWK] = keyPair => {
22
    val x = Base64URL.encode(keyPair.publicKey.getEncoded)
1✔
23
    val d = Base64URL.encode(keyPair.privateKey.getEncoded)
1✔
24
    val octetKey = OctetKeyPair.Builder(Curve.Ed25519, x).d(d).build()
1✔
25
    octetKey.toJSONString().fromJson[Json].toOption.get // .get cannot fail
1✔
26
  }
27

28
  given Conversion[X25519KeyPair, JWK] = keyPair => {
29
    val x = Base64URL.encode(keyPair.publicKey.getEncoded)
1✔
30
    val d = Base64URL.encode(keyPair.privateKey.getEncoded)
1✔
31
    val octetKey = OctetKeyPair.Builder(Curve.X25519, x).d(d).build()
1✔
32
    octetKey.toJSONString().fromJson[Json].toOption.get // .get cannot fail
1✔
33
  }
34
}
35

36
trait FromJWK[K] {
37
  def from(jwk: JWK): Either[String, K]
38
}
39

40
object FromJWK {
41
  given FromJWK[Ed25519KeyPair] = jwk => {
42
    val keyPair = for {
1✔
43
      okp <- Try(OctetKeyPair.parse(jwk.toJsonString))
1✔
44
      d <- Try(okp.getD().decode())
1✔
45
      privateKey <- Apollo.default.ed25519.privateKeyFromEncoded(d)
1✔
46
      publicKey = privateKey.toPublicKey
1✔
47
    } yield Ed25519KeyPair(publicKey, privateKey)
1✔
48
    keyPair.toEither.left.map(_.getMessage())
1✔
49
  }
50

51
  given FromJWK[X25519KeyPair] = jwk => {
52
    val keyPair = for {
1✔
53
      okp <- Try(OctetKeyPair.parse(jwk.toJsonString))
1✔
54
      d <- Try(okp.getD().decode())
1✔
55
      privateKey <- Apollo.default.x25519.privateKeyFromEncoded(d)
1✔
56
      publicKey = privateKey.toPublicKey
1✔
57
    } yield X25519KeyPair(publicKey, privateKey)
1✔
58
    keyPair.toEither.left.map(_.getMessage())
1✔
59
  }
60
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc