C++程序  |  35行  |  882 B

// Copyright 2008 Google Inc. All Rights Reserved.
// Author: mschilder@google.com (Marius Schilder)

#ifndef _EMBEDDED_RSA_H_
#define _EMBEDDED_RSA_H_

#include <inttypes.h>

#ifdef __cplusplus
extern "C" {
#endif  // __cplusplus

#define RSANUMBYTES 256  // 2048 bit key length
#define RSANUMWORDS (RSANUMBYTES / sizeof(uint32_t))

typedef struct RSAPublicKeyInstance {
  int len;  // Length of n[] in number of uint32_t
  uint32_t n0inv;  // -1 / n[0] mod 2^32
  uint32_t n[RSANUMWORDS];  // modulus as little endian array
  uint32_t rr[RSANUMWORDS];  // R^2 as little endian array
} RSAPublicKeyInstance;

typedef const RSAPublicKeyInstance * const RSAPublicKey;

int RSA_verify(RSAPublicKey mod,
               const uint8_t* signature,
               const int len,
               const uint8_t* sha);

#ifdef __cplusplus
}
#endif  // __cplusplus

#endif  // _EMBEDDED_RSA_H_