blob: 13b330504bcde6ed337feca94314cfd6e568c698 [file] [log] [blame]
/* 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_init
jal x1, p256_sign
ecall
.globl p256_ecdsa_verify
p256_ecdsa_verify:
jal x1, p256_init
jal x1, p256_verify
ecall
.data
/*
The structure of the 256b below are mandated by the calling convention of the
P-256 ECDSA library.
*/
/* pointer to k */
.globl dptr_k
dptr_k:
.word k
/* pointer to rnd */
.globl dptr_rnd
dptr_rnd:
.word rnd
/* pointer to msg */
.globl dptr_msg
dptr_msg:
.word msg
/* pointer to R */
.globl dptr_r
dptr_r:
.word r
/* pointer to S */
.globl dptr_s
dptr_s:
.word s
/* pointer to X */
.globl dptr_x
dptr_x:
.word x
/* pointer to Y */
.globl dptr_y
dptr_y:
.word y
/* pointer to D */
.globl dptr_d
dptr_d:
.word d
/* 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