/* Copyright lowRISC contributors. */
/* Licensed under the Apache License, Version 2.0, see LICENSE for details. */
/* SPDX-License-Identifier: Apache-2.0 */

/**
 * Elliptic curve P-256 ECDSA
 *
 * Uses OTBN ECC P-256 lib to perform an ECDSA operations.
 */

.text

.globl p256_ecdsa_sign
p256_ecdsa_sign:
  jal      x1, p256_sign
  ecall

.globl p256_ecdsa_verify
p256_ecdsa_verify:
  jal      x1, p256_verify
  ecall


.data

/* Freely available DMEM space. */
/* All constants below must be 256b-aligned. */

/* random scalar k */
.globl k
.balign 32
k:
  .zero 32

.globl rnd
.balign 32
rnd:
  .zero 32

/* message digest */
.globl msg
.balign 32
msg:
  .zero 32

/* signature R */
.globl r
.balign 32
r:
  .zero 32

/* signature S */
.globl s
.balign 32
s:
  .zero 32

/* public key x-coordinate */
.globl x
.balign 32
x:
  .zero 32

/* public key y-coordinate */
.globl y
.balign 32
y:
  .zero 32

/* private key d */
.globl d
.balign 32
d:
  .zero 32
