Ejemplo n.º 1
0
    void IInvoice.AddSignature(KeyType type, ReadOnlyMemory <byte> publicPrefix, ReadOnlyMemory <byte> signature)
    {
        var key   = ByteString.CopyFrom(publicPrefix.Span);
        var value = ByteString.CopyFrom(signature.Span);
        var pair  = new SignaturePair();

        switch (type)
        {
        case KeyType.Ed25519:
            pair.Ed25519 = value;
            break;

        case KeyType.ECDSASecp256K1:
            pair.ECDSASecp256K1 = value;
            break;

        case KeyType.Contract:
            pair.Contract = value;
            break;
        }
        if (_signatures.TryGetValue(key, out SignaturePair? existing))
        {
            if (!pair.Equals(existing))
            {
                throw new ArgumentException("Signature with Duplicate Prefix Identifier was provided, but did not have an Identical Signature.");
            }
        }
        else
        {
            _signatures.Add(key, pair);
        }
    }
Ejemplo n.º 2
0
        private static string GetSignatureHex(SignaturePair signaturePair)
        {
            switch (signaturePair.SignatureCase)
            {
            case SignaturePair.SignatureOneofCase.Ed25519: return(Hex.FromBytes(signaturePair.Ed25519.ToByteArray()));

            case SignaturePair.SignatureOneofCase.ECDSASecp256K1: return(Hex.FromBytes(signaturePair.ECDSASecp256K1.ToByteArray()));

            case SignaturePair.SignatureOneofCase.Contract: return(Hex.FromBytes(signaturePair.Contract.ToByteArray()));
            }
            return(string.Empty);
        }
Ejemplo n.º 3
0
 private void BuildSignatureMapRow(RenderTreeBuilder builder, SignaturePair signaturePair)
 {
     builder.OpenElement("span");
     builder.AddAttribute("hg-sig-type");
     builder.AddContent(signaturePair.SignatureCase);
     builder.CloseElement();
     builder.OpenElement("span");
     builder.AddAttribute("hg-sig-pub");
     builder.AddContent(GetThumbprintHex(signaturePair));
     builder.CloseElement();
     builder.OpenElement("span");
     builder.AddAttribute("hg-sig-hex");
     builder.AddContent(GetSignatureHex(signaturePair));
     builder.CloseElement();
 }
Ejemplo n.º 4
0
 private int BuildSignatureMapRow(RenderTreeBuilder builder, int count, SignaturePair signaturePair)
 {
     builder.OpenElement(count++, "span");
     builder.AddAttribute(count++, "class", "sig-type");
     builder.AddContent(count++, signaturePair.SignatureCase);
     builder.CloseElement();
     builder.OpenElement(count++, "span");
     builder.AddAttribute(count++, "class", "sig-pub");
     builder.AddContent(count++, GetThumbprintHex(signaturePair));
     builder.CloseElement();
     builder.OpenElement(count++, "span");
     builder.AddAttribute(count++, "class", "sig-hex");
     builder.AddContent(count++, GetSignatureHex(signaturePair));
     builder.CloseElement();
     return(count);
 }
        private void AddSignatureToInvoice(SignaturePair signature)
        {
            switch (signature.SignatureCase)
            {
            case Proto.SignaturePair.SignatureOneofCase.Ed25519:
                _input.Invoice.AddSignature(KeyType.Ed25519, signature.PubKeyPrefix.ToByteArray(), signature.Ed25519.ToByteArray());
                break;

            case Proto.SignaturePair.SignatureOneofCase.RSA3072:
                _input.Invoice.AddSignature(KeyType.RSA3072, signature.PubKeyPrefix.ToByteArray(), signature.RSA3072.ToByteArray());
                break;

            case Proto.SignaturePair.SignatureOneofCase.ECDSA384:
                _input.Invoice.AddSignature(KeyType.ECDSA384, signature.PubKeyPrefix.ToByteArray(), signature.ECDSA384.ToByteArray());
                break;

            case Proto.SignaturePair.SignatureOneofCase.Contract:
                _input.Invoice.AddSignature(KeyType.Contract, signature.PubKeyPrefix.ToByteArray(), signature.Contract.ToByteArray());
                break;
            }
        }
Ejemplo n.º 6
0
 private static string GetThumbprintHex(SignaturePair signaturePair)
 {
     return(Hex.FromBytes(signaturePair.PubKeyPrefix.ToByteArray()));
 }