(key crypto.PublicKey)
| 458 | } |
| 459 | |
| 460 | func computeSKI(key crypto.PublicKey) ([]byte, error) { |
| 461 | var raw []byte |
| 462 | switch key := key.(type) { |
| 463 | case *rsa.PublicKey: |
| 464 | raw = x509.MarshalPKCS1PublicKey(key) |
| 465 | case *ecdsa.PublicKey: |
| 466 | ecdhKey, err := key.ECDH() |
| 467 | if err != nil { |
| 468 | return nil, fmt.Errorf("public key transition failed: %w", err) |
| 469 | } |
| 470 | raw = ecdhKey.Bytes() |
| 471 | default: |
| 472 | |
| 473 | return nil, fmt.Errorf("unexpected type: %T", key) |
| 474 | } |
| 475 | hash := sha256.Sum256(raw) |
| 476 | return hash[:], nil |
| 477 | } |
no test coverage detected