Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bls #58

Merged
merged 5 commits into from
Apr 7, 2023
Merged

Bls #58

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Agent/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,7 @@ True if the certificate is valid, otherwise false

| Name | Type | Description |
| ---- | ---- | ----------- |
| rootPublicKey | [System.Byte[]](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Byte[] 'System.Byte[]') | The root public key of the internet computer network |
| rootPublicKey | [System.Byte[]](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Byte[] 'System.Byte[]') | The root public key (DER encoded) of the internet computer network |

<a name='T-EdjCase-ICP-Agent-Models-CertificateDelegation'></a>
## CertificateDelegation `type`
Expand Down
2 changes: 1 addition & 1 deletion src/Agent/API.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Agent/EdjCase.ICP.Agent.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</PropertyGroup>

<ItemGroup>
<None Include="..\..\README.md">
<None Include="README.md">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
Expand Down
11 changes: 9 additions & 2 deletions src/Agent/Models/Certificate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,17 @@ public Certificate(HashTree tree, byte[] signature, CertificateDelegation? deleg
/// Checks the validity of the certificate based off the
/// specified root public key
/// </summary>
/// <param name="rootPublicKey">The root public key of the internet computer network</param>
/// <param name="rootPublicKey">The root public key (DER encoded) of the internet computer network</param>
/// <returns>True if the certificate is valid, otherwise false</returns>
public bool IsValid(byte[] rootPublicKey)
{
/*
verify_cert(cert) =
let root_hash = reconstruct(cert.tree)
let der_key = check_delegation(cert.delegation) // see section Delegations below
bls_key = extract_der(der_key)
verify_bls_signature(bls_key, cert.signature, domain_sep("ic-state-root") � root_hash)
*/
byte[] rootHash = this.Tree.BuildRootHash();
rootHash = HashTree.EncodedValue.WithDomainSeperator("ic-state-root", rootHash);
if (this.Delegation != null)
Expand All @@ -59,7 +66,7 @@ public bool IsValid(byte[] rootPublicKey)
}
}
var blsKey = new DerEncodedPublicKey(rootPublicKey).AsBls();
return BlsUtil.VerifySignature(blsKey, rootHash, this.Signature);
return IcpBlsUtil.VerifySignature(blsKey, rootHash, this.Signature);
}

internal static Certificate ReadCbor(CborReader reader)
Expand Down
85 changes: 85 additions & 0 deletions src/Candid/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -441,9 +441,12 @@
- [Equals()](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-Equals-System-Byte[]- 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.Equals(System.Byte[])')
- [GetHashCode()](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-GetHashCode 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.GetHashCode')
- [ToString()](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-ToString 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.ToString')
- [Utf8Value(value)](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-Utf8Value-System-String- 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.Utf8Value(System.String)')
- [op_Equality()](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Equality-EdjCase-ICP-Candid-Models-HashTree-EncodedValue,EdjCase-ICP-Candid-Models-HashTree-EncodedValue- 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Equality(EdjCase.ICP.Candid.Models.HashTree.EncodedValue,EdjCase.ICP.Candid.Models.HashTree.EncodedValue)')
- [op_Implicit(value)](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-~System-Byte[] 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Implicit(EdjCase.ICP.Candid.Models.HashTree.EncodedValue)~System.Byte[]')
- [op_Implicit(bytes)](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-System-Byte[]-~EdjCase-ICP-Candid-Models-HashTree-EncodedValue 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Implicit(System.Byte[])~EdjCase.ICP.Candid.Models.HashTree.EncodedValue')
- [op_Implicit(value)](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-~System-String 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Implicit(EdjCase.ICP.Candid.Models.HashTree.EncodedValue)~System.String')
- [op_Implicit(utf8Value)](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-System-String-~EdjCase-ICP-Candid-Models-HashTree-EncodedValue 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Implicit(System.String)~EdjCase.ICP.Candid.Models.HashTree.EncodedValue')
- [op_Inequality()](#M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Inequality-EdjCase-ICP-Candid-Models-HashTree-EncodedValue,EdjCase-ICP-Candid-Models-HashTree-EncodedValue- 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue.op_Inequality(EdjCase.ICP.Candid.Models.HashTree.EncodedValue,EdjCase.ICP.Candid.Models.HashTree.EncodedValue)')
- [FuncMode](#T-EdjCase-ICP-Candid-Models-Types-FuncMode 'EdjCase.ICP.Candid.Models.Types.FuncMode')
- [Oneway](#F-EdjCase-ICP-Candid-Models-Types-FuncMode-Oneway 'EdjCase.ICP.Candid.Models.Types.FuncMode.Oneway')
Expand All @@ -456,12 +459,18 @@
- [AsPruned()](#M-EdjCase-ICP-Candid-Models-HashTree-AsPruned 'EdjCase.ICP.Candid.Models.HashTree.AsPruned')
- [BuildRootHash()](#M-EdjCase-ICP-Candid-Models-HashTree-BuildRootHash 'EdjCase.ICP.Candid.Models.HashTree.BuildRootHash')
- [Empty()](#M-EdjCase-ICP-Candid-Models-HashTree-Empty 'EdjCase.ICP.Candid.Models.HashTree.Empty')
- [Equals()](#M-EdjCase-ICP-Candid-Models-HashTree-Equals-EdjCase-ICP-Candid-Models-HashTree- 'EdjCase.ICP.Candid.Models.HashTree.Equals(EdjCase.ICP.Candid.Models.HashTree)')
- [Equals()](#M-EdjCase-ICP-Candid-Models-HashTree-Equals-System-Object- 'EdjCase.ICP.Candid.Models.HashTree.Equals(System.Object)')
- [Fork(left,right)](#M-EdjCase-ICP-Candid-Models-HashTree-Fork-EdjCase-ICP-Candid-Models-HashTree,EdjCase-ICP-Candid-Models-HashTree- 'EdjCase.ICP.Candid.Models.HashTree.Fork(EdjCase.ICP.Candid.Models.HashTree,EdjCase.ICP.Candid.Models.HashTree)')
- [GetHashCode()](#M-EdjCase-ICP-Candid-Models-HashTree-GetHashCode 'EdjCase.ICP.Candid.Models.HashTree.GetHashCode')
- [GetValueOrDefault(path)](#M-EdjCase-ICP-Candid-Models-HashTree-GetValueOrDefault-EdjCase-ICP-Candid-Models-StatePathSegment- 'EdjCase.ICP.Candid.Models.HashTree.GetValueOrDefault(EdjCase.ICP.Candid.Models.StatePathSegment)')
- [GetValueOrDefault(path)](#M-EdjCase-ICP-Candid-Models-HashTree-GetValueOrDefault-EdjCase-ICP-Candid-Models-StatePath- 'EdjCase.ICP.Candid.Models.HashTree.GetValueOrDefault(EdjCase.ICP.Candid.Models.StatePath)')
- [Labeled(label,tree)](#M-EdjCase-ICP-Candid-Models-HashTree-Labeled-EdjCase-ICP-Candid-Models-HashTree-EncodedValue,EdjCase-ICP-Candid-Models-HashTree- 'EdjCase.ICP.Candid.Models.HashTree.Labeled(EdjCase.ICP.Candid.Models.HashTree.EncodedValue,EdjCase.ICP.Candid.Models.HashTree)')
- [Leaf(value)](#M-EdjCase-ICP-Candid-Models-HashTree-Leaf-EdjCase-ICP-Candid-Models-HashTree-EncodedValue- 'EdjCase.ICP.Candid.Models.HashTree.Leaf(EdjCase.ICP.Candid.Models.HashTree.EncodedValue)')
- [Pruned(treeHash)](#M-EdjCase-ICP-Candid-Models-HashTree-Pruned-System-Byte[]- 'EdjCase.ICP.Candid.Models.HashTree.Pruned(System.Byte[])')
- [ToString()](#M-EdjCase-ICP-Candid-Models-HashTree-ToString 'EdjCase.ICP.Candid.Models.HashTree.ToString')
- [op_Equality()](#M-EdjCase-ICP-Candid-Models-HashTree-op_Equality-EdjCase-ICP-Candid-Models-HashTree,EdjCase-ICP-Candid-Models-HashTree- 'EdjCase.ICP.Candid.Models.HashTree.op_Equality(EdjCase.ICP.Candid.Models.HashTree,EdjCase.ICP.Candid.Models.HashTree)')
- [op_Inequality()](#M-EdjCase-ICP-Candid-Models-HashTree-op_Inequality-EdjCase-ICP-Candid-Models-HashTree,EdjCase-ICP-Candid-Models-HashTree- 'EdjCase.ICP.Candid.Models.HashTree.op_Inequality(EdjCase.ICP.Candid.Models.HashTree,EdjCase.ICP.Candid.Models.HashTree)')
- [HashTreeType](#T-EdjCase-ICP-Candid-Models-HashTreeType 'EdjCase.ICP.Candid.Models.HashTreeType')
- [Empty](#F-EdjCase-ICP-Candid-Models-HashTreeType-Empty 'EdjCase.ICP.Candid.Models.HashTreeType.Empty')
- [Fork](#F-EdjCase-ICP-Candid-Models-HashTreeType-Fork 'EdjCase.ICP.Candid.Models.HashTreeType.Fork')
Expand Down Expand Up @@ -6203,6 +6212,23 @@ This method has no parameters.

This method has no parameters.

<a name='M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-Utf8Value-System-String-'></a>
### Utf8Value(value) `method`

##### Summary

Creates an encoded value from a utf8 string value

##### Returns

UTF8 encoded value

##### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| value | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | UTF8 encoded string |

<a name='M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Equality-EdjCase-ICP-Candid-Models-HashTree-EncodedValue,EdjCase-ICP-Candid-Models-HashTree-EncodedValue-'></a>
### op_Equality() `method`

Expand Down Expand Up @@ -6240,6 +6266,32 @@ A helper method to implicitly convert an byte array to an encoded value
| ---- | ---- | ----------- |
| bytes | [System.Byte[])~EdjCase.ICP.Candid.Models.HashTree.EncodedValue](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.Byte[])~EdjCase.ICP.Candid.Models.HashTree.EncodedValue 'System.Byte[])~EdjCase.ICP.Candid.Models.HashTree.EncodedValue') | The raw value to use with the encoded value |

<a name='M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-~System-String'></a>
### op_Implicit(value) `method`

##### Summary

A helper method to implicitly convert an encoded value to a UTF8 string

##### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| value | [EdjCase.ICP.Candid.Models.HashTree.EncodedValue)~System.String](#T-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-~System-String 'EdjCase.ICP.Candid.Models.HashTree.EncodedValue)~System.String') | The encoded value to get the raw value from |

<a name='M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Implicit-System-String-~EdjCase-ICP-Candid-Models-HashTree-EncodedValue'></a>
### op_Implicit(utf8Value) `method`

##### Summary

A helper method to implicitly convert a UTF8 string to an encoded value

##### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| utf8Value | [System.String)~EdjCase.ICP.Candid.Models.HashTree.EncodedValue](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String)~EdjCase.ICP.Candid.Models.HashTree.EncodedValue 'System.String)~EdjCase.ICP.Candid.Models.HashTree.EncodedValue') | The UTF8 string value to use with the encoded value |

<a name='M-EdjCase-ICP-Candid-Models-HashTree-EncodedValue-op_Inequality-EdjCase-ICP-Candid-Models-HashTree-EncodedValue,EdjCase-ICP-Candid-Models-HashTree-EncodedValue-'></a>
### op_Inequality() `method`

Expand Down Expand Up @@ -6410,6 +6462,28 @@ An empty hash tree

This method has no parameters.

<a name='M-EdjCase-ICP-Candid-Models-HashTree-Equals-EdjCase-ICP-Candid-Models-HashTree-'></a>
### Equals() `method`

##### Summary

*Inherit from parent.*

##### Parameters

This method has no parameters.

<a name='M-EdjCase-ICP-Candid-Models-HashTree-Equals-System-Object-'></a>
### Equals() `method`

##### Summary

*Inherit from parent.*

##### Parameters

This method has no parameters.

<a name='M-EdjCase-ICP-Candid-Models-HashTree-Fork-EdjCase-ICP-Candid-Models-HashTree,EdjCase-ICP-Candid-Models-HashTree-'></a>
### Fork(left,right) `method`

Expand All @@ -6428,6 +6502,17 @@ An forked hash tree
| left | [EdjCase.ICP.Candid.Models.HashTree](#T-EdjCase-ICP-Candid-Models-HashTree 'EdjCase.ICP.Candid.Models.HashTree') | The branch to the left |
| right | [EdjCase.ICP.Candid.Models.HashTree](#T-EdjCase-ICP-Candid-Models-HashTree 'EdjCase.ICP.Candid.Models.HashTree') | The branch to the right |

<a name='M-EdjCase-ICP-Candid-Models-HashTree-GetHashCode'></a>
### GetHashCode() `method`

##### Summary

*Inherit from parent.*

##### Parameters

This method has no parameters.

<a name='M-EdjCase-ICP-Candid-Models-HashTree-GetValueOrDefault-EdjCase-ICP-Candid-Models-StatePathSegment-'></a>
### GetValueOrDefault(path) `method`

Expand Down
34 changes: 34 additions & 0 deletions src/Candid/API.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Candid/EdjCase.ICP.Candid.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</PropertyGroup>

<ItemGroup>
<None Include="..\..\README.md">
<None Include="README.md">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
Expand Down
Loading