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  }