github.com/hyperledger/aries-framework-go@v0.3.2/pkg/doc/util/vmparse/vmparse.go (about) 1 /* 2 Copyright Avast Software. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package vmparse 8 9 import ( 10 "fmt" 11 12 "github.com/hyperledger/aries-framework-go/pkg/doc/did" 13 "github.com/hyperledger/aries-framework-go/pkg/kms" 14 ) 15 16 const ( 17 jsonWebKey2020 = "JsonWebKey2020" 18 jwsVerificationKey2020 = "JwsVerificationKey2020" 19 ed25519VerificationKey2018 = "Ed25519VerificationKey2018" 20 ) 21 22 // VMToBytesTypeCrv parses a DID doc Verification Method and returns the public key bytes, KMS KeyType, and key Curve. 23 func VMToBytesTypeCrv(vm *did.VerificationMethod) ([]byte, kms.KeyType, string, error) { 24 switch vm.Type { 25 case ed25519VerificationKey2018: 26 return vm.Value, kms.ED25519Type, "Ed25519", nil 27 case jsonWebKey2020, jwsVerificationKey2020: 28 k := vm.JSONWebKey() 29 30 kb, err := k.PublicKeyBytes() 31 if err != nil { 32 return nil, "", "", fmt.Errorf("getting []byte key for verification key: %w", err) 33 } 34 35 kt, err := k.KeyType() 36 if err != nil { 37 return nil, "", "", fmt.Errorf("getting kms.KeyType of verification key: %w", err) 38 } 39 40 return kb, kt, k.Crv, nil 41 default: 42 return nil, "", "", fmt.Errorf("vm.Type '%s' not supported", vm.Type) 43 } 44 } 45 46 // VMToTypeCrv parses a DID doc Verification Method and returns the KMS KeyType, and key Curve. 47 func VMToTypeCrv(vm *did.VerificationMethod) (kms.KeyType, string, error) { 48 switch vm.Type { 49 case ed25519VerificationKey2018: 50 return kms.ED25519Type, "Ed25519", nil 51 case jsonWebKey2020, jwsVerificationKey2020: 52 k := vm.JSONWebKey() 53 54 kt, err := k.KeyType() 55 if err != nil { 56 return "", "", fmt.Errorf("getting kms.KeyType of verification key: %w", err) 57 } 58 59 return kt, k.Crv, nil 60 default: 61 return "", "", fmt.Errorf("vm.Type '%s' not supported", vm.Type) 62 } 63 }